aboutsummaryrefslogtreecommitdiffstats
path: root/apps/weather_status
diff options
context:
space:
mode:
Diffstat (limited to 'apps/weather_status')
-rw-r--r--apps/weather_status/.l10nignore4
-rw-r--r--apps/weather_status/appinfo/info.xml24
-rw-r--r--apps/weather_status/appinfo/routes.php19
-rw-r--r--apps/weather_status/composer/autoload.php25
-rw-r--r--apps/weather_status/composer/composer.json13
-rw-r--r--apps/weather_status/composer/composer.lock18
-rw-r--r--apps/weather_status/composer/composer/ClassLoader.php579
-rw-r--r--apps/weather_status/composer/composer/InstalledVersions.php359
-rw-r--r--apps/weather_status/composer/composer/LICENSE21
-rw-r--r--apps/weather_status/composer/composer/autoload_classmap.php16
-rw-r--r--apps/weather_status/composer/composer/autoload_namespaces.php9
-rw-r--r--apps/weather_status/composer/composer/autoload_psr4.php10
-rw-r--r--apps/weather_status/composer/composer/autoload_real.php37
-rw-r--r--apps/weather_status/composer/composer/autoload_static.php42
-rw-r--r--apps/weather_status/composer/composer/installed.json5
-rw-r--r--apps/weather_status/composer/composer/installed.php23
-rw-r--r--apps/weather_status/img/app-dark.svg1
-rw-r--r--apps/weather_status/img/app.svg1
-rw-r--r--apps/weather_status/img/met.no.icons/clearsky_day.svg23
-rw-r--r--apps/weather_status/img/met.no.icons/clearsky_night.svg16
-rw-r--r--apps/weather_status/img/met.no.icons/clearsky_polartwilight.svg32
-rw-r--r--apps/weather_status/img/met.no.icons/cloudy.svg12
-rw-r--r--apps/weather_status/img/met.no.icons/fair_day.svg34
-rw-r--r--apps/weather_status/img/met.no.icons/fair_night.svg27
-rw-r--r--apps/weather_status/img/met.no.icons/fair_polartwilight.svg43
-rw-r--r--apps/weather_status/img/met.no.icons/fog.svg20
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrain.svg20
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainandthunder.svg31
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowers_day.svg45
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowers_night.svg38
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowers_polartwilight.svg54
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_day.svg55
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_night.svg48
-rw-r--r--apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_polartwilight.svg64
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleet.svg23
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetandthunder.svg34
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowers_day.svg48
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowers_night.svg41
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowers_polartwilight.svg57
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_day.svg58
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_night.svg51
-rw-r--r--apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_polartwilight.svg67
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnow.svg20
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowandthunder.svg31
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowers_day.svg45
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowers_night.svg38
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowers_polartwilight.svg54
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_day.svg55
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_night.svg48
-rw-r--r--apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_polartwilight.svg64
-rw-r--r--apps/weather_status/img/met.no.icons/lightrain.svg17
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainandthunder.svg28
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowers_day.svg42
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowers_night.svg35
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowers_polartwilight.svg51
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowersandthunder_day.svg52
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowersandthunder_night.svg45
-rw-r--r--apps/weather_status/img/met.no.icons/lightrainshowersandthunder_polartwilight.svg61
-rw-r--r--apps/weather_status/img/met.no.icons/lightsleet.svg20
-rw-r--r--apps/weather_status/img/met.no.icons/lightsleetandthunder.svg31
-rw-r--r--apps/weather_status/img/met.no.icons/lightsleetshowers_day.svg45
-rw-r--r--apps/weather_status/img/met.no.icons/lightsleetshowers_night.svg38
-rw-r--r--apps/weather_status/img/met.no.icons/lightsleetshowers_polartwilight.svg54
-rw-r--r--apps/weather_status/img/met.no.icons/lightsnow.svg17
-rw-r--r--apps/weather_status/img/met.no.icons/lightsnowandthunder.svg28
-rw-r--r--apps/weather_status/img/met.no.icons/lightsnowshowers_day.svg42
-rw-r--r--apps/weather_status/img/met.no.icons/lightsnowshowers_night.svg35
-rw-r--r--apps/weather_status/img/met.no.icons/lightsnowshowers_polartwilight.svg51
-rw-r--r--apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_day.svg55
-rw-r--r--apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_night.svg48
-rw-r--r--apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_polartwilight.svg64
-rw-r--r--apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_day.svg52
-rw-r--r--apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_night.svg45
-rw-r--r--apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_polartwilight.svg61
-rw-r--r--apps/weather_status/img/met.no.icons/partlycloudy_day.svg37
-rw-r--r--apps/weather_status/img/met.no.icons/partlycloudy_night.svg30
-rw-r--r--apps/weather_status/img/met.no.icons/partlycloudy_polartwilight.svg46
-rw-r--r--apps/weather_status/img/met.no.icons/rain.svg18
-rw-r--r--apps/weather_status/img/met.no.icons/rainandthunder.svg29
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowers_day.svg43
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowers_night.svg36
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowers_polartwilight.svg52
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowersandthunder_day.svg53
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowersandthunder_night.svg46
-rw-r--r--apps/weather_status/img/met.no.icons/rainshowersandthunder_polartwilight.svg62
-rw-r--r--apps/weather_status/img/met.no.icons/sleet.svg21
-rw-r--r--apps/weather_status/img/met.no.icons/sleetandthunder.svg32
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowers_day.svg46
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowers_night.svg39
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowers_polartwilight.svg55
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowersandthunder_day.svg56
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowersandthunder_night.svg49
-rw-r--r--apps/weather_status/img/met.no.icons/sleetshowersandthunder_polartwilight.svg65
-rw-r--r--apps/weather_status/img/met.no.icons/snow.svg18
-rw-r--r--apps/weather_status/img/met.no.icons/snowandthunder.svg29
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowers_day.svg43
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowers_night.svg36
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowers_polartwilight.svg52
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowersandthunder_day.svg53
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowersandthunder_night.svg46
-rw-r--r--apps/weather_status/img/met.no.icons/snowshowersandthunder_polartwilight.svg62
-rw-r--r--apps/weather_status/l10n/.gitkeep0
-rw-r--r--apps/weather_status/l10n/ar.js63
-rw-r--r--apps/weather_status/l10n/ar.json61
-rw-r--r--apps/weather_status/l10n/bg.js63
-rw-r--r--apps/weather_status/l10n/bg.json61
-rw-r--r--apps/weather_status/l10n/ca.js63
-rw-r--r--apps/weather_status/l10n/ca.json61
-rw-r--r--apps/weather_status/l10n/cs.js63
-rw-r--r--apps/weather_status/l10n/cs.json61
-rw-r--r--apps/weather_status/l10n/da.js63
-rw-r--r--apps/weather_status/l10n/da.json61
-rw-r--r--apps/weather_status/l10n/de.js63
-rw-r--r--apps/weather_status/l10n/de.json61
-rw-r--r--apps/weather_status/l10n/de_DE.js63
-rw-r--r--apps/weather_status/l10n/de_DE.json61
-rw-r--r--apps/weather_status/l10n/el.js38
-rw-r--r--apps/weather_status/l10n/el.json36
-rw-r--r--apps/weather_status/l10n/en_GB.js63
-rw-r--r--apps/weather_status/l10n/en_GB.json61
-rw-r--r--apps/weather_status/l10n/eo.js41
-rw-r--r--apps/weather_status/l10n/eo.json39
-rw-r--r--apps/weather_status/l10n/es.js63
-rw-r--r--apps/weather_status/l10n/es.json61
-rw-r--r--apps/weather_status/l10n/es_EC.js49
-rw-r--r--apps/weather_status/l10n/es_EC.json47
-rw-r--r--apps/weather_status/l10n/es_MX.js50
-rw-r--r--apps/weather_status/l10n/es_MX.json48
-rw-r--r--apps/weather_status/l10n/et_EE.js63
-rw-r--r--apps/weather_status/l10n/et_EE.json61
-rw-r--r--apps/weather_status/l10n/eu.js63
-rw-r--r--apps/weather_status/l10n/eu.json61
-rw-r--r--apps/weather_status/l10n/fa.js49
-rw-r--r--apps/weather_status/l10n/fa.json47
-rw-r--r--apps/weather_status/l10n/fi.js49
-rw-r--r--apps/weather_status/l10n/fi.json47
-rw-r--r--apps/weather_status/l10n/fr.js63
-rw-r--r--apps/weather_status/l10n/fr.json61
-rw-r--r--apps/weather_status/l10n/ga.js63
-rw-r--r--apps/weather_status/l10n/ga.json61
-rw-r--r--apps/weather_status/l10n/gl.js63
-rw-r--r--apps/weather_status/l10n/gl.json61
-rw-r--r--apps/weather_status/l10n/hu.js50
-rw-r--r--apps/weather_status/l10n/hu.json48
-rw-r--r--apps/weather_status/l10n/id.js49
-rw-r--r--apps/weather_status/l10n/id.json47
-rw-r--r--apps/weather_status/l10n/is.js63
-rw-r--r--apps/weather_status/l10n/is.json61
-rw-r--r--apps/weather_status/l10n/it.js53
-rw-r--r--apps/weather_status/l10n/it.json51
-rw-r--r--apps/weather_status/l10n/ja.js63
-rw-r--r--apps/weather_status/l10n/ja.json61
-rw-r--r--apps/weather_status/l10n/ko.js63
-rw-r--r--apps/weather_status/l10n/ko.json61
-rw-r--r--apps/weather_status/l10n/lt_LT.js51
-rw-r--r--apps/weather_status/l10n/lt_LT.json49
-rw-r--r--apps/weather_status/l10n/lv.js63
-rw-r--r--apps/weather_status/l10n/lv.json61
-rw-r--r--apps/weather_status/l10n/mk.js49
-rw-r--r--apps/weather_status/l10n/mk.json47
-rw-r--r--apps/weather_status/l10n/nb.js50
-rw-r--r--apps/weather_status/l10n/nb.json48
-rw-r--r--apps/weather_status/l10n/nl.js63
-rw-r--r--apps/weather_status/l10n/nl.json61
-rw-r--r--apps/weather_status/l10n/pl.js63
-rw-r--r--apps/weather_status/l10n/pl.json61
-rw-r--r--apps/weather_status/l10n/pt_BR.js63
-rw-r--r--apps/weather_status/l10n/pt_BR.json61
-rw-r--r--apps/weather_status/l10n/pt_PT.js63
-rw-r--r--apps/weather_status/l10n/pt_PT.json61
-rw-r--r--apps/weather_status/l10n/ro.js37
-rw-r--r--apps/weather_status/l10n/ro.json35
-rw-r--r--apps/weather_status/l10n/ru.js63
-rw-r--r--apps/weather_status/l10n/ru.json61
-rw-r--r--apps/weather_status/l10n/sk.js63
-rw-r--r--apps/weather_status/l10n/sk.json61
-rw-r--r--apps/weather_status/l10n/sl.js49
-rw-r--r--apps/weather_status/l10n/sl.json47
-rw-r--r--apps/weather_status/l10n/sr.js63
-rw-r--r--apps/weather_status/l10n/sr.json61
-rw-r--r--apps/weather_status/l10n/sv.js63
-rw-r--r--apps/weather_status/l10n/sv.json61
-rw-r--r--apps/weather_status/l10n/sw.js63
-rw-r--r--apps/weather_status/l10n/sw.json61
-rw-r--r--apps/weather_status/l10n/tr.js63
-rw-r--r--apps/weather_status/l10n/tr.json61
-rw-r--r--apps/weather_status/l10n/ug.js63
-rw-r--r--apps/weather_status/l10n/ug.json61
-rw-r--r--apps/weather_status/l10n/uk.js63
-rw-r--r--apps/weather_status/l10n/uk.json61
-rw-r--r--apps/weather_status/l10n/vi.js49
-rw-r--r--apps/weather_status/l10n/vi.json47
-rw-r--r--apps/weather_status/l10n/zh_CN.js63
-rw-r--r--apps/weather_status/l10n/zh_CN.json61
-rw-r--r--apps/weather_status/l10n/zh_HK.js63
-rw-r--r--apps/weather_status/l10n/zh_HK.json61
-rw-r--r--apps/weather_status/l10n/zh_TW.js63
-rw-r--r--apps/weather_status/l10n/zh_TW.json61
-rw-r--r--apps/weather_status/lib/AppInfo/Application.php49
-rw-r--r--apps/weather_status/lib/Capabilities.php39
-rw-r--r--apps/weather_status/lib/Controller/WeatherStatusController.php135
-rw-r--r--apps/weather_status/lib/Listeners/BeforeTemplateRenderedListener.php38
-rw-r--r--apps/weather_status/lib/ResponseDefinitions.php72
-rw-r--r--apps/weather_status/lib/Service/WeatherStatusService.php394
-rw-r--r--apps/weather_status/openapi.json820
-rw-r--r--apps/weather_status/openapi.json.license2
-rw-r--r--apps/weather_status/src/App.vue582
-rw-r--r--apps/weather_status/src/services/weatherStatusService.js127
-rw-r--r--apps/weather_status/src/weather-status.js24
209 files changed, 12443 insertions, 0 deletions
diff --git a/apps/weather_status/.l10nignore b/apps/weather_status/.l10nignore
new file mode 100644
index 00000000000..5c6564b9273
--- /dev/null
+++ b/apps/weather_status/.l10nignore
@@ -0,0 +1,4 @@
+# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# webpack bundled files
+js/
diff --git a/apps/weather_status/appinfo/info.xml b/apps/weather_status/appinfo/info.xml
new file mode 100644
index 00000000000..c4e18f55448
--- /dev/null
+++ b/apps/weather_status/appinfo/info.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+ - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+ -->
+<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
+ <id>weather_status</id>
+ <name>Weather status</name>
+ <summary>Weather status in your dashboard</summary>
+ <description><![CDATA[Weather status integrated in the Dashboard app.
+ The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.
+ This status can also be integrated in other places like the Calendar app.]]></description>
+ <version>1.12.0</version>
+ <licence>agpl</licence>
+ <author mail="eneiluj@posteo.net">Julien Veyssier</author>
+ <namespace>WeatherStatus</namespace>
+ <category>integration</category>
+ <category>dashboard</category>
+ <bugs>https://github.com/nextcloud/server</bugs>
+ <dependencies>
+ <nextcloud min-version="32" max-version="32"/>
+ </dependencies>
+</info>
diff --git a/apps/weather_status/appinfo/routes.php b/apps/weather_status/appinfo/routes.php
new file mode 100644
index 00000000000..e9c81c98743
--- /dev/null
+++ b/apps/weather_status/appinfo/routes.php
@@ -0,0 +1,19 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+return [
+ 'ocs' => [
+ ['name' => 'WeatherStatus#setMode', 'url' => '/api/v1/mode', 'verb' => 'PUT'],
+ ['name' => 'WeatherStatus#usePersonalAddress', 'url' => '/api/v1/use-personal', 'verb' => 'PUT'],
+ ['name' => 'WeatherStatus#getLocation', 'url' => '/api/v1/location', 'verb' => 'GET'],
+ ['name' => 'WeatherStatus#setLocation', 'url' => '/api/v1/location', 'verb' => 'PUT'],
+ ['name' => 'WeatherStatus#getForecast', 'url' => '/api/v1/forecast', 'verb' => 'GET'],
+ ['name' => 'WeatherStatus#getFavorites', 'url' => '/api/v1/favorites', 'verb' => 'GET'],
+ ['name' => 'WeatherStatus#setFavorites', 'url' => '/api/v1/favorites', 'verb' => 'PUT'],
+ ],
+];
diff --git a/apps/weather_status/composer/autoload.php b/apps/weather_status/composer/autoload.php
new file mode 100644
index 00000000000..3dd9ff208d7
--- /dev/null
+++ b/apps/weather_status/composer/autoload.php
@@ -0,0 +1,25 @@
+<?php
+
+// autoload.php @generated by Composer
+
+if (PHP_VERSION_ID < 50600) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, $err);
+ } elseif (!headers_sent()) {
+ echo $err;
+ }
+ }
+ trigger_error(
+ $err,
+ E_USER_ERROR
+ );
+}
+
+require_once __DIR__ . '/composer/autoload_real.php';
+
+return ComposerAutoloaderInitWeatherStatus::getLoader();
diff --git a/apps/weather_status/composer/composer.json b/apps/weather_status/composer/composer.json
new file mode 100644
index 00000000000..773ba2ad56b
--- /dev/null
+++ b/apps/weather_status/composer/composer.json
@@ -0,0 +1,13 @@
+{
+ "config" : {
+ "vendor-dir": ".",
+ "optimize-autoloader": true,
+ "classmap-authoritative": true,
+ "autoloader-suffix": "WeatherStatus"
+ },
+ "autoload" : {
+ "psr-4": {
+ "OCA\\WeatherStatus\\": "../lib/"
+ }
+ }
+}
diff --git a/apps/weather_status/composer/composer.lock b/apps/weather_status/composer/composer.lock
new file mode 100644
index 00000000000..62a29d36726
--- /dev/null
+++ b/apps/weather_status/composer/composer.lock
@@ -0,0 +1,18 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "d751713988987e9331980363e24189ce",
+ "packages": [],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
+}
diff --git a/apps/weather_status/composer/composer/ClassLoader.php b/apps/weather_status/composer/composer/ClassLoader.php
new file mode 100644
index 00000000000..7824d8f7eaf
--- /dev/null
+++ b/apps/weather_status/composer/composer/ClassLoader.php
@@ -0,0 +1,579 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ * Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
+ // PSR-4
+ /**
+ * @var array<string, array<string, int>>
+ */
+ private $prefixLengthsPsr4 = array();
+ /**
+ * @var array<string, list<string>>
+ */
+ private $prefixDirsPsr4 = array();
+ /**
+ * @var list<string>
+ */
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array<string, array<string, list<string>>>
+ */
+ private $prefixesPsr0 = array();
+ /**
+ * @var list<string>
+ */
+ private $fallbackDirsPsr0 = array();
+
+ /** @var bool */
+ private $useIncludePath = false;
+
+ /**
+ * @var array<string, string>
+ */
+ private $classMap = array();
+
+ /** @var bool */
+ private $classMapAuthoritative = false;
+
+ /**
+ * @var array<string, bool>
+ */
+ private $missingClasses = array();
+
+ /** @var string|null */
+ private $apcuPrefix;
+
+ /**
+ * @var array<string, self>
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array<string, list<string>>
+ */
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ /**
+ * @return array<string, list<string>>
+ */
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ /**
+ * @return list<string>
+ */
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ /**
+ * @return list<string>
+ */
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ /**
+ * @return array<string, string> Array of classname => path
+ */
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array<string, string> $classMap Class to filename map
+ *
+ * @return void
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list<string>|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list<string>|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list<string>|string $paths The PSR-0 base directories
+ *
+ * @return void
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list<string>|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ *
+ * @return void
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ *
+ * @return void
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ *
+ * @return void
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ $includeFile = self::$includeFile;
+ $includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array<string, self>
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
+}
diff --git a/apps/weather_status/composer/composer/InstalledVersions.php b/apps/weather_status/composer/composer/InstalledVersions.php
new file mode 100644
index 00000000000..51e734a774b
--- /dev/null
+++ b/apps/weather_status/composer/composer/InstalledVersions.php
@@ -0,0 +1,359 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ * Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/apps/weather_status/composer/composer/LICENSE b/apps/weather_status/composer/composer/LICENSE
new file mode 100644
index 00000000000..f27399a042d
--- /dev/null
+++ b/apps/weather_status/composer/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/apps/weather_status/composer/composer/autoload_classmap.php b/apps/weather_status/composer/composer/autoload_classmap.php
new file mode 100644
index 00000000000..0a76e820a0a
--- /dev/null
+++ b/apps/weather_status/composer/composer/autoload_classmap.php
@@ -0,0 +1,16 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = $vendorDir;
+
+return array(
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
+ 'OCA\\WeatherStatus\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
+ 'OCA\\WeatherStatus\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
+ 'OCA\\WeatherStatus\\Controller\\WeatherStatusController' => $baseDir . '/../lib/Controller/WeatherStatusController.php',
+ 'OCA\\WeatherStatus\\Listeners\\BeforeTemplateRenderedListener' => $baseDir . '/../lib/Listeners/BeforeTemplateRenderedListener.php',
+ 'OCA\\WeatherStatus\\ResponseDefinitions' => $baseDir . '/../lib/ResponseDefinitions.php',
+ 'OCA\\WeatherStatus\\Service\\WeatherStatusService' => $baseDir . '/../lib/Service/WeatherStatusService.php',
+);
diff --git a/apps/weather_status/composer/composer/autoload_namespaces.php b/apps/weather_status/composer/composer/autoload_namespaces.php
new file mode 100644
index 00000000000..3f5c9296251
--- /dev/null
+++ b/apps/weather_status/composer/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = $vendorDir;
+
+return array(
+);
diff --git a/apps/weather_status/composer/composer/autoload_psr4.php b/apps/weather_status/composer/composer/autoload_psr4.php
new file mode 100644
index 00000000000..908c197c196
--- /dev/null
+++ b/apps/weather_status/composer/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = $vendorDir;
+
+return array(
+ 'OCA\\WeatherStatus\\' => array($baseDir . '/../lib'),
+);
diff --git a/apps/weather_status/composer/composer/autoload_real.php b/apps/weather_status/composer/composer/autoload_real.php
new file mode 100644
index 00000000000..87f5ae0f94d
--- /dev/null
+++ b/apps/weather_status/composer/composer/autoload_real.php
@@ -0,0 +1,37 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInitWeatherStatus
+{
+ private static $loader;
+
+ public static function loadClassLoader($class)
+ {
+ if ('Composer\Autoload\ClassLoader' === $class) {
+ require __DIR__ . '/ClassLoader.php';
+ }
+ }
+
+ /**
+ * @return \Composer\Autoload\ClassLoader
+ */
+ public static function getLoader()
+ {
+ if (null !== self::$loader) {
+ return self::$loader;
+ }
+
+ spl_autoload_register(array('ComposerAutoloaderInitWeatherStatus', 'loadClassLoader'), true, true);
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
+ spl_autoload_unregister(array('ComposerAutoloaderInitWeatherStatus', 'loadClassLoader'));
+
+ require __DIR__ . '/autoload_static.php';
+ call_user_func(\Composer\Autoload\ComposerStaticInitWeatherStatus::getInitializer($loader));
+
+ $loader->setClassMapAuthoritative(true);
+ $loader->register(true);
+
+ return $loader;
+ }
+}
diff --git a/apps/weather_status/composer/composer/autoload_static.php b/apps/weather_status/composer/composer/autoload_static.php
new file mode 100644
index 00000000000..c9c58f836a8
--- /dev/null
+++ b/apps/weather_status/composer/composer/autoload_static.php
@@ -0,0 +1,42 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticInitWeatherStatus
+{
+ public static $prefixLengthsPsr4 = array (
+ 'O' =>
+ array (
+ 'OCA\\WeatherStatus\\' => 18,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'OCA\\WeatherStatus\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/../lib',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'OCA\\WeatherStatus\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
+ 'OCA\\WeatherStatus\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
+ 'OCA\\WeatherStatus\\Controller\\WeatherStatusController' => __DIR__ . '/..' . '/../lib/Controller/WeatherStatusController.php',
+ 'OCA\\WeatherStatus\\Listeners\\BeforeTemplateRenderedListener' => __DIR__ . '/..' . '/../lib/Listeners/BeforeTemplateRenderedListener.php',
+ 'OCA\\WeatherStatus\\ResponseDefinitions' => __DIR__ . '/..' . '/../lib/ResponseDefinitions.php',
+ 'OCA\\WeatherStatus\\Service\\WeatherStatusService' => __DIR__ . '/..' . '/../lib/Service/WeatherStatusService.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInitWeatherStatus::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInitWeatherStatus::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInitWeatherStatus::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/apps/weather_status/composer/composer/installed.json b/apps/weather_status/composer/composer/installed.json
new file mode 100644
index 00000000000..f20a6c47c6d
--- /dev/null
+++ b/apps/weather_status/composer/composer/installed.json
@@ -0,0 +1,5 @@
+{
+ "packages": [],
+ "dev": false,
+ "dev-package-names": []
+}
diff --git a/apps/weather_status/composer/composer/installed.php b/apps/weather_status/composer/composer/installed.php
new file mode 100644
index 00000000000..1a66c7f2416
--- /dev/null
+++ b/apps/weather_status/composer/composer/installed.php
@@ -0,0 +1,23 @@
+<?php return array(
+ 'root' => array(
+ 'name' => '__root__',
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../',
+ 'aliases' => array(),
+ 'dev' => false,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/apps/weather_status/img/app-dark.svg b/apps/weather_status/img/app-dark.svg
new file mode 100644
index 00000000000..c9527e387f2
--- /dev/null
+++ b/apps/weather_status/img/app-dark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M444-768v-144h72v144h-72Zm265 112-54-52 104-102 52 50-102 104Zm59 212v-72h144v72H768ZM444-48v-144h72v144h-72ZM251-658 147-760l54-50 101 101-51 51Zm509 511L659-252l50-50 104 100-53 55ZM48-444v-72h144v72H48Zm152 297-51-53 102-100 25 24 24 25-100 104Zm280-93q-100 0-170-70t-70-170q0-100 70-170t170-70q100 0 170 70t70 170q0 100-70 170t-170 70Z"/></svg> \ No newline at end of file
diff --git a/apps/weather_status/img/app.svg b/apps/weather_status/img/app.svg
new file mode 100644
index 00000000000..41428da2cc8
--- /dev/null
+++ b/apps/weather_status/img/app.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#fff"><path d="M444-768v-144h72v144h-72Zm265 112-54-52 104-102 52 50-102 104Zm59 212v-72h144v72H768ZM444-48v-144h72v144h-72ZM251-658 147-760l54-50 101 101-51 51Zm509 511L659-252l50-50 104 100-53 55ZM48-444v-72h144v72H48Zm152 297-51-53 102-100 25 24 24 25-100 104Zm280-93q-100 0-170-70t-70-170q0-100 70-170t170-70q100 0 170 70t70 170q0 100-70 170t-170 70Z"/></svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/clearsky_day.svg b/apps/weather_status/img/met.no.icons/clearsky_day.svg
new file mode 100644
index 00000000000..e8f7541a576
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/clearsky_day.svg
@@ -0,0 +1,23 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s01d">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(9,9) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s01d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/clearsky_night.svg b/apps/weather_status/img/met.no.icons/clearsky_night.svg
new file mode 100644
index 00000000000..23f9b5ea050
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/clearsky_night.svg
@@ -0,0 +1,16 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s01n">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(20,20) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s01n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/clearsky_polartwilight.svg b/apps/weather_status/img/met.no.icons/clearsky_polartwilight.svg
new file mode 100644
index 00000000000..e6afadc8c2c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/clearsky_polartwilight.svg
@@ -0,0 +1,32 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s01m">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(5,37) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s01m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/cloudy.svg b/apps/weather_status/img/met.no.icons/cloudy.svg
new file mode 100644
index 00000000000..eb98fe83928
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/cloudy.svg
@@ -0,0 +1,12 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s04">
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s04" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/fair_day.svg b/apps/weather_status/img/met.no.icons/fair_day.svg
new file mode 100644
index 00000000000..2daaed32430
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/fair_day.svg
@@ -0,0 +1,34 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_43_37_063_063_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s02d">
+ <g mask="url(#cloud_43_37_063_063_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,9) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </symbol>
+ <use xlink:href="#s02d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/fair_night.svg b/apps/weather_status/img/met.no.icons/fair_night.svg
new file mode 100644
index 00000000000..1814563c374
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/fair_night.svg
@@ -0,0 +1,27 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_43_37_063_063_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s02n">
+ <g mask="url(#cloud_43_37_063_063_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(15,20) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </symbol>
+ <use xlink:href="#s02n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/fair_polartwilight.svg b/apps/weather_status/img/met.no.icons/fair_polartwilight.svg
new file mode 100644
index 00000000000..1d557ca3753
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/fair_polartwilight.svg
@@ -0,0 +1,43 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_43_37_063_063_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s02m">
+ <g mask="url(#cloud_43_37_063_063_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,37) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(43,37) scale(0.63,0.63)"></use>
+ </symbol>
+ <use xlink:href="#s02m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/fog.svg b/apps/weather_status/img/met.no.icons/fog.svg
new file mode 100644
index 00000000000..3cb13b4138e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/fog.svg
@@ -0,0 +1,20 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="fog">
+ <g fill="#999999">
+ <path d="M88.7,3H14.3C13.6,3,13,2.3,13,1.5S13.6,0,14.3,0h74.4C89.4,0,90,0.7,90,1.5S89.4,3,88.7,3z"></path>
+ <path d="M75.7,11H1.3C0.6,11,0,10.3,0,9.5S0.6,8,1.3,8h74.4C76.4,8,77,8.7,77,9.5S76.4,11,75.7,11z"></path>
+ <path d="M86.7,19H12.3c-0.7,0-1.3-0.7-1.3-1.5s0.6-1.5,1.3-1.5h74.4c0.7,0,1.3,0.7,1.3,1.5S87.4,19,86.7,19z"></path>
+ </g>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s15">
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#fog" x="0" y="0" width="100" height="100" transform="translate(0,76) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s15" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrain.svg b/apps/weather_status/img/met.no.icons/heavyrain.svg
new file mode 100644
index 00000000000..9a85ccd6e8c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrain.svg
@@ -0,0 +1,20 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s10">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,87) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s10" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainandthunder.svg b/apps/weather_status/img/met.no.icons/heavyrainandthunder.svg
new file mode 100644
index 00000000000..0e73a8ccd65
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainandthunder.svg
@@ -0,0 +1,31 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s11">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(68,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,87) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s11" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowers_day.svg b/apps/weather_status/img/met.no.icons/heavyrainshowers_day.svg
new file mode 100644
index 00000000000..89f60eba575
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowers_day.svg
@@ -0,0 +1,45 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s10">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s41d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s10" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s41d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowers_night.svg b/apps/weather_status/img/met.no.icons/heavyrainshowers_night.svg
new file mode 100644
index 00000000000..adb85eff758
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowers_night.svg
@@ -0,0 +1,38 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s10">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s41n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s10" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s41n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavyrainshowers_polartwilight.svg
new file mode 100644
index 00000000000..b97fbe2d572
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowers_polartwilight.svg
@@ -0,0 +1,54 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s10">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s41m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s10" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s41m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_day.svg
new file mode 100644
index 00000000000..e2922a2d082
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_day.svg
@@ -0,0 +1,55 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s11">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(68,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s25d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s11" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s25d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_night.svg
new file mode 100644
index 00000000000..4389a492904
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_night.svg
@@ -0,0 +1,48 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s11">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(68,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s25n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s11" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s25n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..e559dd6f55c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavyrainshowersandthunder_polartwilight.svg
@@ -0,0 +1,64 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s11">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(18,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(68,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,87) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s25m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s11" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s25m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleet.svg b/apps/weather_status/img/met.no.icons/heavysleet.svg
new file mode 100644
index 00000000000..e67ff4eb499
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleet.svg
@@ -0,0 +1,23 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s48">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,80) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s48" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetandthunder.svg b/apps/weather_status/img/met.no.icons/heavysleetandthunder.svg
new file mode 100644
index 00000000000..2729d5cf5de
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetandthunder.svg
@@ -0,0 +1,34 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s32">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(30,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,80) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s32" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowers_day.svg b/apps/weather_status/img/met.no.icons/heavysleetshowers_day.svg
new file mode 100644
index 00000000000..d9e146dc87d
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowers_day.svg
@@ -0,0 +1,48 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s48">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s43d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s48" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s43d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowers_night.svg b/apps/weather_status/img/met.no.icons/heavysleetshowers_night.svg
new file mode 100644
index 00000000000..aa71b146b95
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowers_night.svg
@@ -0,0 +1,41 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s48">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s43n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s48" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s43n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavysleetshowers_polartwilight.svg
new file mode 100644
index 00000000000..c275176f482
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowers_polartwilight.svg
@@ -0,0 +1,57 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s48">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(47,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(74,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s43m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s48" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s43m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_day.svg
new file mode 100644
index 00000000000..dbe271523a8
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_day.svg
@@ -0,0 +1,58 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s32">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(30,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s27d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s32" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s27d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_night.svg
new file mode 100644
index 00000000000..234bac9bb3f
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_night.svg
@@ -0,0 +1,51 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s32">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(30,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s27n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s32" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s27n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..18ed7fcd90c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysleetshowersandthunder_polartwilight.svg
@@ -0,0 +1,67 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s32">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(30,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(55,80) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(82,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s27m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s32" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s27m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnow.svg b/apps/weather_status/img/met.no.icons/heavysnow.svg
new file mode 100644
index 00000000000..6e6a05dfdcb
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnow.svg
@@ -0,0 +1,20 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s50">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(72,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s50" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowandthunder.svg b/apps/weather_status/img/met.no.icons/heavysnowandthunder.svg
new file mode 100644
index 00000000000..719ed5d21bd
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowandthunder.svg
@@ -0,0 +1,31 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s34">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(13,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(69,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(83,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s34" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowers_day.svg b/apps/weather_status/img/met.no.icons/heavysnowshowers_day.svg
new file mode 100644
index 00000000000..06ab06748c2
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowers_day.svg
@@ -0,0 +1,45 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s50">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(72,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s45d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s50" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s45d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowers_night.svg b/apps/weather_status/img/met.no.icons/heavysnowshowers_night.svg
new file mode 100644
index 00000000000..fadfc895c68
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowers_night.svg
@@ -0,0 +1,38 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s50">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(72,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s45n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s50" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s45n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavysnowshowers_polartwilight.svg
new file mode 100644
index 00000000000..a1321a8a8eb
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowers_polartwilight.svg
@@ -0,0 +1,54 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s50">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(15,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(72,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s45m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s50" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s45m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_day.svg
new file mode 100644
index 00000000000..2e296a31f2f
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_day.svg
@@ -0,0 +1,55 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s34">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(13,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(69,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(83,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s29d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s34" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s29d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_night.svg
new file mode 100644
index 00000000000..47c25ab29a7
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_night.svg
@@ -0,0 +1,48 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s34">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(13,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(69,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(83,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s29n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s34" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s29n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..9abac751e11
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/heavysnowshowersandthunder_polartwilight.svg
@@ -0,0 +1,64 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s34">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#999999" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(13,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(55,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(69,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(83,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s29m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s34" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s29m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrain.svg b/apps/weather_status/img/met.no.icons/lightrain.svg
new file mode 100644
index 00000000000..67a1c8e9312
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrain.svg
@@ -0,0 +1,17 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s46">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(56,78) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s46" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainandthunder.svg b/apps/weather_status/img/met.no.icons/lightrainandthunder.svg
new file mode 100644
index 00000000000..cdab6e26c55
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainandthunder.svg
@@ -0,0 +1,28 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s30">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(28,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,78) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s30" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowers_day.svg b/apps/weather_status/img/met.no.icons/lightrainshowers_day.svg
new file mode 100644
index 00000000000..f02e9406995
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowers_day.svg
@@ -0,0 +1,42 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s46">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(56,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s40d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s46" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s40d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowers_night.svg b/apps/weather_status/img/met.no.icons/lightrainshowers_night.svg
new file mode 100644
index 00000000000..5a483fc0544
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowers_night.svg
@@ -0,0 +1,35 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s46">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(56,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s40n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s46" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s40n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightrainshowers_polartwilight.svg
new file mode 100644
index 00000000000..2648cb4d78e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowers_polartwilight.svg
@@ -0,0 +1,51 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s46">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(56,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s40m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s46" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s40m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_day.svg
new file mode 100644
index 00000000000..016786ae1b0
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_day.svg
@@ -0,0 +1,52 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s30">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(28,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s24d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s30" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s24d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_night.svg
new file mode 100644
index 00000000000..38319199748
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_night.svg
@@ -0,0 +1,45 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s30">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(28,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s24n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s30" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s24n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..e7fff4f55eb
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightrainshowersandthunder_polartwilight.svg
@@ -0,0 +1,61 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s30">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(28,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s24m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s30" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s24m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsleet.svg b/apps/weather_status/img/met.no.icons/lightsleet.svg
new file mode 100644
index 00000000000..eaf49fe7990
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsleet.svg
@@ -0,0 +1,20 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s47">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s47" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsleetandthunder.svg b/apps/weather_status/img/met.no.icons/lightsleetandthunder.svg
new file mode 100644
index 00000000000..503811eac4c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsleetandthunder.svg
@@ -0,0 +1,31 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s31">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s31" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsleetshowers_day.svg b/apps/weather_status/img/met.no.icons/lightsleetshowers_day.svg
new file mode 100644
index 00000000000..7a162bde33f
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsleetshowers_day.svg
@@ -0,0 +1,45 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s47">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s42d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s47" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s42d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsleetshowers_night.svg b/apps/weather_status/img/met.no.icons/lightsleetshowers_night.svg
new file mode 100644
index 00000000000..cd283b554b2
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsleetshowers_night.svg
@@ -0,0 +1,38 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s47">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s42n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s47" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s42n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsleetshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightsleetshowers_polartwilight.svg
new file mode 100644
index 00000000000..d31bb3fa59b
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsleetshowers_polartwilight.svg
@@ -0,0 +1,54 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s47">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s42m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s47" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s42m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsnow.svg b/apps/weather_status/img/met.no.icons/lightsnow.svg
new file mode 100644
index 00000000000..4ece601803a
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsnow.svg
@@ -0,0 +1,17 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s49">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s49" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsnowandthunder.svg b/apps/weather_status/img/met.no.icons/lightsnowandthunder.svg
new file mode 100644
index 00000000000..d8b8d2545e2
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsnowandthunder.svg
@@ -0,0 +1,28 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s33">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s33" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsnowshowers_day.svg b/apps/weather_status/img/met.no.icons/lightsnowshowers_day.svg
new file mode 100644
index 00000000000..0b9f99e531e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsnowshowers_day.svg
@@ -0,0 +1,42 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s49">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s44d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s49" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s44d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsnowshowers_night.svg b/apps/weather_status/img/met.no.icons/lightsnowshowers_night.svg
new file mode 100644
index 00000000000..54b0cf2fa14
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsnowshowers_night.svg
@@ -0,0 +1,35 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s49">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s44n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s49" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s44n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightsnowshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightsnowshowers_polartwilight.svg
new file mode 100644
index 00000000000..e2d8eb8fadb
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightsnowshowers_polartwilight.svg
@@ -0,0 +1,51 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s49">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(29,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s44m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s49" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s44m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_day.svg
new file mode 100644
index 00000000000..bdca36d2cbe
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_day.svg
@@ -0,0 +1,55 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s31">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s26d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s31" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s26d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_night.svg
new file mode 100644
index 00000000000..4b8be4d275e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_night.svg
@@ -0,0 +1,48 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s31">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s26n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s31" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s26n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..42308f92415
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssleetshowersandthunder_polartwilight.svg
@@ -0,0 +1,64 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s31">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s26m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s31" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s26m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_day.svg
new file mode 100644
index 00000000000..62bf909e424
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_day.svg
@@ -0,0 +1,52 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s33">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s28d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s33" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s28d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_night.svg
new file mode 100644
index 00000000000..6b0b6d0321a
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_night.svg
@@ -0,0 +1,45 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s33">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s28n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s33" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s28n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..58d06499c6d
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/lightssnowshowersandthunder_polartwilight.svg
@@ -0,0 +1,61 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s33">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#cccccc" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s28m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s33" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s28m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/partlycloudy_day.svg b/apps/weather_status/img/met.no.icons/partlycloudy_day.svg
new file mode 100644
index 00000000000..827e688c34e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/partlycloudy_day.svg
@@ -0,0 +1,37 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s04">
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s03d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s04" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s03d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/partlycloudy_night.svg b/apps/weather_status/img/met.no.icons/partlycloudy_night.svg
new file mode 100644
index 00000000000..eeb643f1961
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/partlycloudy_night.svg
@@ -0,0 +1,30 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s04">
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s03n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s04" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s03n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/partlycloudy_polartwilight.svg b/apps/weather_status/img/met.no.icons/partlycloudy_polartwilight.svg
new file mode 100644
index 00000000000..cb3647bf3af
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/partlycloudy_polartwilight.svg
@@ -0,0 +1,46 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s04">
+ <use xlink:href="#cloud" fill="#dddddd" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s03m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s04" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s03m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rain.svg b/apps/weather_status/img/met.no.icons/rain.svg
new file mode 100644
index 00000000000..1da5ea7a8ad
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rain.svg
@@ -0,0 +1,18 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s09">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(45,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s09" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainandthunder.svg b/apps/weather_status/img/met.no.icons/rainandthunder.svg
new file mode 100644
index 00000000000..6a99951f982
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainandthunder.svg
@@ -0,0 +1,29 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s22">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(65,78) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s22" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowers_day.svg b/apps/weather_status/img/met.no.icons/rainshowers_day.svg
new file mode 100644
index 00000000000..0226b47482b
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowers_day.svg
@@ -0,0 +1,43 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s09">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(45,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s05d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s09" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s05d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowers_night.svg b/apps/weather_status/img/met.no.icons/rainshowers_night.svg
new file mode 100644
index 00000000000..58fe84790d2
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowers_night.svg
@@ -0,0 +1,36 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s09">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(45,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s05n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s09" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s05n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/rainshowers_polartwilight.svg
new file mode 100644
index 00000000000..80ede843bd0
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowers_polartwilight.svg
@@ -0,0 +1,52 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s09">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(32,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(45,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s05m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s09" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s05m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/rainshowersandthunder_day.svg
new file mode 100644
index 00000000000..e5da5a19b71
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowersandthunder_day.svg
@@ -0,0 +1,53 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s22">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(65,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s06d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s22" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s06d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/rainshowersandthunder_night.svg
new file mode 100644
index 00000000000..1eb876d51a8
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowersandthunder_night.svg
@@ -0,0 +1,46 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s22">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(65,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s06n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s22" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s06n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/rainshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/rainshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..4fca93360da
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/rainshowersandthunder_polartwilight.svg
@@ -0,0 +1,62 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s22">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(29,78) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,87) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(65,78) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s06m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s22" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s06m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleet.svg b/apps/weather_status/img/met.no.icons/sleet.svg
new file mode 100644
index 00000000000..28a297fd02e
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleet.svg
@@ -0,0 +1,21 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s12">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(46,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,80) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s12" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetandthunder.svg b/apps/weather_status/img/met.no.icons/sleetandthunder.svg
new file mode 100644
index 00000000000..907428f4bae
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetandthunder.svg
@@ -0,0 +1,32 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s23">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(64,80) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s23" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowers_day.svg b/apps/weather_status/img/met.no.icons/sleetshowers_day.svg
new file mode 100644
index 00000000000..97e5afa805c
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowers_day.svg
@@ -0,0 +1,46 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s12">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(46,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s07d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s12" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s07d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowers_night.svg b/apps/weather_status/img/met.no.icons/sleetshowers_night.svg
new file mode 100644
index 00000000000..c43a73bedbe
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowers_night.svg
@@ -0,0 +1,39 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s12">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(46,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s07n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s12" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s07n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/sleetshowers_polartwilight.svg
new file mode 100644
index 00000000000..e2331695562
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowers_polartwilight.svg
@@ -0,0 +1,55 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s12">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(46,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(60,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s07m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s12" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s07m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_day.svg
new file mode 100644
index 00000000000..01cb6e79f6a
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_day.svg
@@ -0,0 +1,56 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s23">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(64,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s20d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s23" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s20d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_night.svg
new file mode 100644
index 00000000000..904f987e9e1
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_night.svg
@@ -0,0 +1,49 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s23">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(64,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s20n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s23" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s20n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/sleetshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..1b53807e21b
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/sleetshowersandthunder_polartwilight.svg
@@ -0,0 +1,65 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="raindrop">
+ <path fill="#0062bf" d="M2.5,13A2.5,2.5,0,0,1,.21,9.51l3.55-8a2.5,2.5,0,0,1,4.57,2l-3.55,8A2.5,2.5,0,0,1,2.5,13Z"></path>
+ </symbol>
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s23">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(27,79) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(50,86) scale(1,1)"></use>
+ <use xlink:href="#raindrop" x="0" y="0" width="100" height="100" transform="translate(64,80) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s20m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s23" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s20m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snow.svg b/apps/weather_status/img/met.no.icons/snow.svg
new file mode 100644
index 00000000000..25fed858b0b
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snow.svg
@@ -0,0 +1,18 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+
+ <symbol id="s13">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s13" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowandthunder.svg b/apps/weather_status/img/met.no.icons/snowandthunder.svg
new file mode 100644
index 00000000000..c9551337332
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowandthunder.svg
@@ -0,0 +1,29 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+
+ <defs>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s14">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(52,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,79) scale(1,1)"></use>
+ </symbol>
+ <use xlink:href="#s14" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowers_day.svg b/apps/weather_status/img/met.no.icons/snowshowers_day.svg
new file mode 100644
index 00000000000..b80f82adfea
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowers_day.svg
@@ -0,0 +1,43 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s13">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s08d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s13" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s08d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowers_night.svg b/apps/weather_status/img/met.no.icons/snowshowers_night.svg
new file mode 100644
index 00000000000..b5020649743
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowers_night.svg
@@ -0,0 +1,36 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s13">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ </defs>
+ <symbol id="s08n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s13" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s08n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowers_polartwilight.svg b/apps/weather_status/img/met.no.icons/snowshowers_polartwilight.svg
new file mode 100644
index 00000000000..90e936a7a55
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowers_polartwilight.svg
@@ -0,0 +1,52 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s13">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(30,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(44,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(58,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ </defs>
+ <symbol id="s08m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s13" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s08m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowersandthunder_day.svg b/apps/weather_status/img/met.no.icons/snowshowersandthunder_day.svg
new file mode 100644
index 00000000000..08752db0a33
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowersandthunder_day.svg
@@ -0,0 +1,53 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s14">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(52,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s21d">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(0,2) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s14" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s21d" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowersandthunder_night.svg b/apps/weather_status/img/met.no.icons/snowshowersandthunder_night.svg
new file mode 100644
index 00000000000..37e7df2d28a
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowersandthunder_night.svg
@@ -0,0 +1,46 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="s14">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(52,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="moon">
+ <path d="M28.43,0A28.44,28.44,0,0,1,32.3,14.32,28.61,28.61,0,0,1,3.69,42.93,28.71,28.71,0,0,1,0,42.66,28.59,28.59,0,1,0,28.43,0Z" fill="url(#moon-grad)"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <linearGradient id="moon-grad" x1="0%" y1="50%" x2="100%" y2="0%">
+ <stop offset="0%" stop-color="#686e73" />
+ <stop offset="100%" stop-color="#6a7075" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s21n">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#moon" x="0" y="0" width="100" height="100" transform="translate(2,5) scale(0.714285714,0.714285714)"></use>
+ </g>
+ <use xlink:href="#s14" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s21n" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/img/met.no.icons/snowshowersandthunder_polartwilight.svg b/apps/weather_status/img/met.no.icons/snowshowersandthunder_polartwilight.svg
new file mode 100644
index 00000000000..7fc3610fd25
--- /dev/null
+++ b/apps/weather_status/img/met.no.icons/snowshowersandthunder_polartwilight.svg
@@ -0,0 +1,62 @@
+<svg x="0" y="0" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <symbol id="snowflake">
+ <path fill="#47c0e3" d="M11.68,4.47H8.85L10.27,2A1.35,1.35,0,1,0,7.93.67L6.51,3.12,5.1.67A1.35,1.35,0,0,0,3.26.18,1.35,1.35,0,0,0,2.76,2L4.18,4.47H1.35a1.35,1.35,0,1,0,0,2.7H4.18L2.76,9.62a1.35,1.35,0,0,0,.49,1.84A1.39,1.39,0,0,0,5.1,11L6.51,8.52,7.93,11a1.35,1.35,0,1,0,2.34-1.35L8.85,7.17h2.83a1.35,1.35,0,1,0,0-2.7Z"></path>
+ </symbol>
+ <symbol id="lightning">
+ <polygon fill="#ffdd15" points="19.6 23.42 12.74 20.39 15.55 5 5 24.49 12.08 27.51 7.49 45 19.6 23.42"></polygon>
+ </symbol>
+ <symbol id="cloud">
+ <path d="M55.7,5A23.94,23.94,0,0,0,34.37,18.05a9.9,9.9,0,0,0-12.78,5.56,15,15,0,0,0-1.71-.1A14.81,14.81,0,0,0,9.2,28,14.63,14.63,0,0,0,5,38.17v.21A14.83,14.83,0,0,0,19.88,53.06H75.59a14.3,14.3,0,0,0,3.67-28.14A23.93,23.93,0,0,0,55.7,5Z"></path>
+ <image x="5" y="14" width="85" height="43" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAkCAMAAAAkYj0PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAVUExURSgoKExpcaCgoFBQUG5ublBQUISEhI1fsT0AAAAHdFJOUxsACBsPFRpGXuFgAAABWElEQVRIx7XV25bDIAgF0BMu/v8nF/E+iWlqHNKVN3cpIMXxL4GFM3SQfTazkUyxk63oLYwlVSy2silXkS/wUrZS2a3ZCn1zsdSw7UUYijuHsTa1IvfwWrbSXLkc4N9r27JViwmM1UtWXA3hohQ41m6vl8FQZi7wu2z7KXPW4uRiZS+2AmdXN7DdQEQWQHYHlt6z0dXBBa2xeeVktiZc1jDoF5eGkI4d4MjKc7cNbZ3bqjocLLx5oPDYTaIftcfvAvcs2GFxVsJTOP1wO1jGdUSLaz/DWA1Tl45+Tkqul2ArcPzayGq8JafOUffP3TUp6JQs+Rptc6vtmtBkUw+dv0NzWG0PYf8O7Ym09+ITXyXOPZqEX95aFe3PKxRsL2XV3HR+ZALirPSF0ceHp6F51WBv1A22VaW2GHWzWvat8LOAPf4CrjrA+neNK7+PQBf/DmmLrId09/QDWyESBsibwBUAAAAASUVORK5CYII="></image>
+ </symbol>
+ <symbol id="sun">
+ <path class="sun-glow" fill="url(#sun-glow-grad)" d="M66.64,47.86,82,41,66.64,34.12l9.84-13.66L59.76,22.22,61.46,5.47l-13.6,9.89L41,0,34.12,15.36,20.46,5.52l1.76,16.72L5.47,20.54l9.89,13.6L0,41l15.36,6.83L5.52,61.54l16.72-1.76L20.54,76.53l13.6-9.89L41,82l6.83-15.36,13.66,9.84L59.78,59.76l16.75,1.69Z"></path>
+ <path class="sun-outer" fill="#ffd348" d="M19.28,53.5a25,25,0,1,0,9.15-34.16A25,25,0,0,0,19.28,53.5Z"></path>
+ <path class="sun-inner" fill="url(#sun-inner-grad)" d="M22.74,51.5a21,21,0,1,0,7.69-28.69A21,21,0,0,0,22.74,51.5Z"></path>
+ </symbol>
+ <symbol id="s14">
+ <g mask="url(#lightning_37_51_1_1_4)">
+ <use xlink:href="#cloud" fill="#b2b2b2" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </g>
+ <use xlink:href="#lightning" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(26,79) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(52,88) scale(1,1)"></use>
+ <use xlink:href="#snowflake" x="0" y="0" width="100" height="100" transform="translate(66,79) scale(1,1)"></use>
+ </symbol>
+ <symbol id="sunWinter">
+ <g mask="url(#sunWinterMask)">
+ <use class="sun-primitive" xlink:href="#sun" x="0" y="0" width="100" height="100" transform="translate(4,-40) scale(1,1)"></use>
+ </g>
+ <path fill="#333333" d="M88.29,2.7H1.71A1.56,1.56,0,0,1,0,1.35,1.56,1.56,0,0,1,1.71,0H88.29A1.56,1.56,0,0,1,90,1.35,1.56,1.56,0,0,1,88.29,2.7Z"></path>
+ </symbol>
+
+ <defs>
+ <mask id="cloud_3_18_1_1_5">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#cloud" fill="black" stroke="black" stroke-linejoin="round" stroke-width="10" x="0" y="0" width="100" height="100" transform="translate(3,18) scale(1,1)"></use>
+ </mask>
+ <mask id="sunWinterMask">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ </mask>
+ <radialGradient id="sun-glow-grad" cx="41" cy="41" r="41" gradientUnits="userSpaceOnUse">
+ <stop offset="54%" stop-color="#d6b849"/>
+ <stop offset="67%" stop-color="#ffce47"/>
+ <stop offset="100%" stop-color="#ffdb73"/>
+ </radialGradient>
+ <linearGradient id="sun-inner-grad" x1="0%" y1="0%" x2="100%" y2="100%">
+ <stop offset="0%" stop-color="#ffaf22" />
+ <stop offset="100%" stop-color="#f09900" />
+ </linearGradient>
+ <mask id="lightning_37_51_1_1_4">
+ <rect x="0" y="0" width="100" height="100" fill="white"></rect>
+ <use xlink:href="#lightning" fill="black" stroke="black" stroke-linejoin="round" stroke-width="8" x="0" y="0" width="100" height="100" transform="translate(37,51) scale(1,1)"></use>
+ </mask>
+ </defs>
+ <symbol id="s21m">
+ <g mask="url(#cloud_3_18_1_1_5)">
+ <use xlink:href="#sunWinter" x="0" y="0" width="100" height="100" transform="translate(0,19) scale(0.7,0.7)"></use>
+ </g>
+ <use xlink:href="#s14" x="0" y="0" width="100" height="100"></use>
+ </symbol>
+ <use xlink:href="#s21m" x="0" y="0" width="100" height="100"></use>
+</svg> \ No newline at end of file
diff --git a/apps/weather_status/l10n/.gitkeep b/apps/weather_status/l10n/.gitkeep
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/apps/weather_status/l10n/.gitkeep
diff --git a/apps/weather_status/l10n/ar.js b/apps/weather_status/l10n/ar.js
new file mode 100644
index 00000000000..4528024f83f
--- /dev/null
+++ b/apps/weather_status/l10n/ar.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "عنوان غير معروف",
+ "No result." : "لا توجد أي نتيجة",
+ "Malformed JSON data." : "بيانات JSON غير مكونة بشكل صحيح",
+ "Error" : "خطأ",
+ "Weather status" : "حالة الطقس",
+ "Weather status in your dashboard" : "حالة الطقس على لوحتك",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "حالة الطقس مدمجة في تطبيق لوحة المعلومات Dashboard في نكست كلاود. يمكن تحديد الموقع الجغرافي تلقائياً أو تحديده يدوياً. يتم بعد ذلك عرض توقعات الطقس لـ 6 ساعات قادمة. يمكن أيضًا دمج هذه الحالة في أماكن أخرى مثل تطبيق التقويم.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} سماءٌ صَحْوٌ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} سماءٌ صَحْوُ",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} طقسٌ مُغيّمٌ في وقت لاحقٍ من اليوم",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} غائم",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} ثلج و رعد في وقت لاحق من اليوم",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} ثلج و رعد",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} زخات ثلجية و رعد في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} زخات ثلجية و رعد",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} زخات ثلجية و رعد و شفق قطبي في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} زخات ثلجية و رعد وشفق قطبي",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} زخات ثلجية في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} زخات ثلجية",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} زخات ثلجية و شفق قطبي في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} زخات ثلجية و شفق قطبي",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} ثلج في وقت لاحق من اليوم",
+ "{temperature} {unit} snow" : "{temperature} {unit} ثلج",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} طقسٌ مُعتَدِلٌ في وقت لاحق من اليوم",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} طقسٌ مُعتَدِلٌ",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} غائمٌ جزئيّاً في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} غائمٌ جزئيّاً ",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ضبابيٌّ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ضبابيٌّ",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} هُطولُ أمطارٍ خفيفةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} هُطولُ أمطارٍ خفيفةٍ ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} مُمطِرٌ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} مُمطِرٌ ",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ ",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} هُطولُ زخّاتٍ من المطر في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} هُطولُ زخّاتٍ من المطر ",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} هُطولُ زخّاتٍ خفيفةٍ من المطر في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} هُطولُ زخّاتٍ خفيفةٍ من المطر ",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ ",
+ "More weather for {adr}" : "المزيد عن الطقس في {adr}",
+ "Loading weather" : "تحميل الطقس",
+ "Set location for weather" : "تعيين المكان لمعرفة الطقس",
+ "Remove from favorites" : "إزالة من المُفضّلة",
+ "Add as favorite" : "إضافة إلى المُفضّلة",
+ "You are not logged in." : "لم تقم بتسجيل الدخول.",
+ "There was an error getting the weather status information." : "حدث خطأ أثناء محاولة الحصول على معلومات عن حالة الطقس",
+ "No weather information found" : "لا توجد أيّ معلومات عن الطقس",
+ "Location not found" : "الموقع الجغرافي غير موجود",
+ "There was an error setting the location address." : "حدث خطأ أثناء تعيين عنوان الموقع الجغرافي.",
+ "There was an error setting the location." : "حدث خطأ أثناء تعيين الموقع الجغرافي.",
+ "There was an error saving the mode." : "حدث خطأ أثناء حفظ الوضعية mode.",
+ "There was an error using personal address." : "حدث خطأ أثناء استعمال العنوان الشخصي.",
+ "Unknown weather code" : "أحوال جوية غير محددة",
+ "Detect location" : "تحديد الموقع الجغرافي",
+ "Set custom address" : "تعيين عنوان مخصص",
+ "Favorites" : "المُفضّلة"
+},
+"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/weather_status/l10n/ar.json b/apps/weather_status/l10n/ar.json
new file mode 100644
index 00000000000..5eecce67e78
--- /dev/null
+++ b/apps/weather_status/l10n/ar.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "عنوان غير معروف",
+ "No result." : "لا توجد أي نتيجة",
+ "Malformed JSON data." : "بيانات JSON غير مكونة بشكل صحيح",
+ "Error" : "خطأ",
+ "Weather status" : "حالة الطقس",
+ "Weather status in your dashboard" : "حالة الطقس على لوحتك",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "حالة الطقس مدمجة في تطبيق لوحة المعلومات Dashboard في نكست كلاود. يمكن تحديد الموقع الجغرافي تلقائياً أو تحديده يدوياً. يتم بعد ذلك عرض توقعات الطقس لـ 6 ساعات قادمة. يمكن أيضًا دمج هذه الحالة في أماكن أخرى مثل تطبيق التقويم.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} سماءٌ صَحْوٌ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} سماءٌ صَحْوُ",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} طقسٌ مُغيّمٌ في وقت لاحقٍ من اليوم",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} غائم",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} ثلج و رعد في وقت لاحق من اليوم",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} ثلج و رعد",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} زخات ثلجية و رعد في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} زخات ثلجية و رعد",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} زخات ثلجية و رعد و شفق قطبي في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} زخات ثلجية و رعد وشفق قطبي",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} زخات ثلجية في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} زخات ثلجية",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} زخات ثلجية و شفق قطبي في وقت لاحق من اليوم",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} زخات ثلجية و شفق قطبي",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} ثلج في وقت لاحق من اليوم",
+ "{temperature} {unit} snow" : "{temperature} {unit} ثلج",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} طقسٌ مُعتَدِلٌ في وقت لاحق من اليوم",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} طقسٌ مُعتَدِلٌ",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} غائمٌ جزئيّاً في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} غائمٌ جزئيّاً ",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ضبابيٌّ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ضبابيٌّ",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} هُطولُ أمطارٍ خفيفةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} هُطولُ أمطارٍ خفيفةٍ ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} مُمطِرٌ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} مُمطِرٌ ",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ ",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} هُطولُ زخّاتٍ من المطر في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} هُطولُ زخّاتٍ من المطر ",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} هُطولُ زخّاتٍ خفيفةٍ من المطر في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} هُطولُ زخّاتٍ خفيفةٍ من المطر ",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ في وقتٍ لاحقٍ من اليوم",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} هُطولُ أمطارٍ غزيرةٍ ",
+ "More weather for {adr}" : "المزيد عن الطقس في {adr}",
+ "Loading weather" : "تحميل الطقس",
+ "Set location for weather" : "تعيين المكان لمعرفة الطقس",
+ "Remove from favorites" : "إزالة من المُفضّلة",
+ "Add as favorite" : "إضافة إلى المُفضّلة",
+ "You are not logged in." : "لم تقم بتسجيل الدخول.",
+ "There was an error getting the weather status information." : "حدث خطأ أثناء محاولة الحصول على معلومات عن حالة الطقس",
+ "No weather information found" : "لا توجد أيّ معلومات عن الطقس",
+ "Location not found" : "الموقع الجغرافي غير موجود",
+ "There was an error setting the location address." : "حدث خطأ أثناء تعيين عنوان الموقع الجغرافي.",
+ "There was an error setting the location." : "حدث خطأ أثناء تعيين الموقع الجغرافي.",
+ "There was an error saving the mode." : "حدث خطأ أثناء حفظ الوضعية mode.",
+ "There was an error using personal address." : "حدث خطأ أثناء استعمال العنوان الشخصي.",
+ "Unknown weather code" : "أحوال جوية غير محددة",
+ "Detect location" : "تحديد الموقع الجغرافي",
+ "Set custom address" : "تعيين عنوان مخصص",
+ "Favorites" : "المُفضّلة"
+},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/bg.js b/apps/weather_status/l10n/bg.js
new file mode 100644
index 00000000000..7b4543b4de4
--- /dev/null
+++ b/apps/weather_status/l10n/bg.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Неизвестен адрес",
+ "No result." : "Няма резултат.",
+ "Malformed JSON data." : "Неправилно оформени JSON данни.",
+ "Error" : "Грешка",
+ "Weather status" : "Метеорологично състояние",
+ "Weather status in your dashboard" : "Метеорологично състояние във вашето табло",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Информацията за времето е вградена в приложението Табло.\n Географското местоположение може да бъде определено автоматично или зададено ръчно, след което се показва прогноза за следващите 6 часа.\nТази информация може да бъде използвана и на други места, като например приложението Календар.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} по късно днес небето ще е ясно",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} по късно днес ще е облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit}сняг и гръмотевици по-късно днес",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit}сняг и гръмотевици",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature}{unit}снеговалеж и гръмотевици по-късно днес",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit}снеговалеж и гръмотевици",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature}{unit}снеговалеж, гръмотевици и полярен здрач по-късно днес",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature}{unit}снеговалеж, гръмотевици и полярен здрач",
+ "{temperature} {unit} snow showers later today" : "{temperature}{unit}снеговалеж по-късно днес",
+ "{temperature} {unit} snow showers" : "{temperature}{unit}снеговалеж",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature}{unit}снеговалеж и полярен здрач по-късно днес",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature}{unit}снеговалеж и полярен здрач",
+ "{temperature} {unit} snow later today" : "{temperature}{unit}снеговалеж по-късно днес",
+ "{temperature} {unit} snow" : "{temperature}{unit}сняг",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} по-късно днес времето ще е хубаво",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хубаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} по късно днес ще има частична облачност",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} частична облачност",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} по късно днес ще е мъгливо",
+ "{temperature} {unit} foggy" : "{temperature} {unit} мъгливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} по късно днес ще има слаби валежи",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаби валежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} по късно днес ще има валежи",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дъжд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} по късно днес ще има силни валежи",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} силни валежи",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} по късно днес ще има превалявания от дъжд",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} по късно днес ще има леки превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} леки превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} по късно днес ще има обилни превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} обилни превалявания от дъжд",
+ "More weather for {adr}" : "Още за времето в {adr}",
+ "Loading weather" : "Зареждане на времето",
+ "Set location for weather" : "Задаване на местоположение за метеорологично време",
+ "Remove from favorites" : "Премахни от любимите",
+ "Add as favorite" : "Добавяне към любими",
+ "You are not logged in." : "Не сте се вписали.",
+ "There was an error getting the weather status information." : "Възникна грешка при получаването на информацията за състоянието на времето.",
+ "No weather information found" : "Няма намерена информация за времето",
+ "Location not found" : "Местоположението не е намерено",
+ "There was an error setting the location address." : "Възникна грешка при задаване на адрес на местоположението.",
+ "There was an error setting the location." : "Възникна грешка при задаване на местоположението.",
+ "There was an error saving the mode." : "Възникна грешка при запазването на режима.",
+ "There was an error using personal address." : "Възникна грешка при използването на личния адрес.",
+ "Unknown weather code" : "Непознат код за време",
+ "Detect location" : "Откриване на местоположение",
+ "Set custom address" : "Задай локация",
+ "Favorites" : "Любими"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/bg.json b/apps/weather_status/l10n/bg.json
new file mode 100644
index 00000000000..16464e473bc
--- /dev/null
+++ b/apps/weather_status/l10n/bg.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Неизвестен адрес",
+ "No result." : "Няма резултат.",
+ "Malformed JSON data." : "Неправилно оформени JSON данни.",
+ "Error" : "Грешка",
+ "Weather status" : "Метеорологично състояние",
+ "Weather status in your dashboard" : "Метеорологично състояние във вашето табло",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Информацията за времето е вградена в приложението Табло.\n Географското местоположение може да бъде определено автоматично или зададено ръчно, след което се показва прогноза за следващите 6 часа.\nТази информация може да бъде използвана и на други места, като например приложението Календар.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} по късно днес небето ще е ясно",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} по късно днес ще е облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit}сняг и гръмотевици по-късно днес",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit}сняг и гръмотевици",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature}{unit}снеговалеж и гръмотевици по-късно днес",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit}снеговалеж и гръмотевици",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature}{unit}снеговалеж, гръмотевици и полярен здрач по-късно днес",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature}{unit}снеговалеж, гръмотевици и полярен здрач",
+ "{temperature} {unit} snow showers later today" : "{temperature}{unit}снеговалеж по-късно днес",
+ "{temperature} {unit} snow showers" : "{temperature}{unit}снеговалеж",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature}{unit}снеговалеж и полярен здрач по-късно днес",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature}{unit}снеговалеж и полярен здрач",
+ "{temperature} {unit} snow later today" : "{temperature}{unit}снеговалеж по-късно днес",
+ "{temperature} {unit} snow" : "{temperature}{unit}сняг",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} по-късно днес времето ще е хубаво",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хубаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} по късно днес ще има частична облачност",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} частична облачност",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} по късно днес ще е мъгливо",
+ "{temperature} {unit} foggy" : "{temperature} {unit} мъгливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} по късно днес ще има слаби валежи",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаби валежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} по късно днес ще има валежи",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дъжд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} по късно днес ще има силни валежи",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} силни валежи",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} по късно днес ще има превалявания от дъжд",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} по късно днес ще има леки превалявания от дъжд",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} леки превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} по късно днес ще има обилни превалявания от дъжд",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} обилни превалявания от дъжд",
+ "More weather for {adr}" : "Още за времето в {adr}",
+ "Loading weather" : "Зареждане на времето",
+ "Set location for weather" : "Задаване на местоположение за метеорологично време",
+ "Remove from favorites" : "Премахни от любимите",
+ "Add as favorite" : "Добавяне към любими",
+ "You are not logged in." : "Не сте се вписали.",
+ "There was an error getting the weather status information." : "Възникна грешка при получаването на информацията за състоянието на времето.",
+ "No weather information found" : "Няма намерена информация за времето",
+ "Location not found" : "Местоположението не е намерено",
+ "There was an error setting the location address." : "Възникна грешка при задаване на адрес на местоположението.",
+ "There was an error setting the location." : "Възникна грешка при задаване на местоположението.",
+ "There was an error saving the mode." : "Възникна грешка при запазването на режима.",
+ "There was an error using personal address." : "Възникна грешка при използването на личния адрес.",
+ "Unknown weather code" : "Непознат код за време",
+ "Detect location" : "Откриване на местоположение",
+ "Set custom address" : "Задай локация",
+ "Favorites" : "Любими"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ca.js b/apps/weather_status/l10n/ca.js
new file mode 100644
index 00000000000..33c78b44e7d
--- /dev/null
+++ b/apps/weather_status/l10n/ca.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Adreça desconeguda",
+ "No result." : "No hi ha resultats.",
+ "Malformed JSON data." : "Les dades en format JSON estan mal formades.",
+ "Error" : "Error",
+ "Weather status" : "Estat del temps",
+ "Weather status in your dashboard" : "Estat del temps en el tauler",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estat del temps integrat en l'aplicació Tauler.\n La ubicació geogràfica es pot determinar automàticament o definir manualment. A continuació, es mostra una previsió de 6 hores.\n Aquest estat també es pot integrar en altres llocs, com ara l'aplicació Calendari.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cel clar avui més tard",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cel clar",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} ennuvolat avui més tard",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} ennuvolat",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neu i trons més tard avui",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neu i trons",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ruixats de neu i trons més tard avui",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} ruixats de neu i trons",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} ruixats de neu, trons i crepuscle polar més tard avui",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} ruixats de neu, trons i crepuscle polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ruixats de neu més tard avui",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} ruixats de neu",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} ruixats de neu i crepuscle polar més tard avui",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} pluges de neu i crepuscle polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neu avui més tard",
+ "{temperature} {unit} snow" : "{temperature} {unit} neu",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bon temps avui més tard",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bon temps",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} mig ennuvolat avui més tard",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} mig ennuvolat",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} boira avui més tard",
+ "{temperature} {unit} foggy" : "{temperature} {unit} boira",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluja lleugera avui més tard",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} pluja lleugera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluja avui més tard",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} pluja",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluja intensa avui més tard",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluja intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ruixats avui més tard",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ruixats",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pluja lleugera avui més tard",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pluja lleugera",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pluja intensa avui més tard",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pluja intensa",
+ "More weather for {adr}" : "Més temps per a {adr}",
+ "Loading weather" : "S'està carregant el temps",
+ "Set location for weather" : "Definiu la ubicació per al temps",
+ "Remove from favorites" : "Suprimeix dels preferits",
+ "Add as favorite" : "Afegeix-ho com a preferit",
+ "You are not logged in." : "No heu iniciat la sessió.",
+ "There was an error getting the weather status information." : "S'ha produït un error en obtenir la informació de l'estat del temps.",
+ "No weather information found" : "No s'ha trobat informació del temps",
+ "Location not found" : "No s'ha trobat la ubicació",
+ "There was an error setting the location address." : "S'ha produït un error en definir l'adreça de la ubicació.",
+ "There was an error setting the location." : "S'ha produït un error en definir la ubicació.",
+ "There was an error saving the mode." : "S'ha produït un error en desar el mode.",
+ "There was an error using personal address." : "S'ha produït un error en utilitzar l'adreça personal.",
+ "Unknown weather code" : "Codi meteorològic desconegut",
+ "Detect location" : "Detecta la ubicació",
+ "Set custom address" : "Defineix una adreça personalitzada",
+ "Favorites" : "Preferits"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/ca.json b/apps/weather_status/l10n/ca.json
new file mode 100644
index 00000000000..48c05b3a54c
--- /dev/null
+++ b/apps/weather_status/l10n/ca.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Adreça desconeguda",
+ "No result." : "No hi ha resultats.",
+ "Malformed JSON data." : "Les dades en format JSON estan mal formades.",
+ "Error" : "Error",
+ "Weather status" : "Estat del temps",
+ "Weather status in your dashboard" : "Estat del temps en el tauler",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estat del temps integrat en l'aplicació Tauler.\n La ubicació geogràfica es pot determinar automàticament o definir manualment. A continuació, es mostra una previsió de 6 hores.\n Aquest estat també es pot integrar en altres llocs, com ara l'aplicació Calendari.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cel clar avui més tard",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cel clar",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} ennuvolat avui més tard",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} ennuvolat",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neu i trons més tard avui",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neu i trons",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ruixats de neu i trons més tard avui",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} ruixats de neu i trons",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} ruixats de neu, trons i crepuscle polar més tard avui",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} ruixats de neu, trons i crepuscle polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ruixats de neu més tard avui",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} ruixats de neu",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} ruixats de neu i crepuscle polar més tard avui",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} pluges de neu i crepuscle polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neu avui més tard",
+ "{temperature} {unit} snow" : "{temperature} {unit} neu",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bon temps avui més tard",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bon temps",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} mig ennuvolat avui més tard",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} mig ennuvolat",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} boira avui més tard",
+ "{temperature} {unit} foggy" : "{temperature} {unit} boira",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluja lleugera avui més tard",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} pluja lleugera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluja avui més tard",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} pluja",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluja intensa avui més tard",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluja intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ruixats avui més tard",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ruixats",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pluja lleugera avui més tard",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pluja lleugera",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pluja intensa avui més tard",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pluja intensa",
+ "More weather for {adr}" : "Més temps per a {adr}",
+ "Loading weather" : "S'està carregant el temps",
+ "Set location for weather" : "Definiu la ubicació per al temps",
+ "Remove from favorites" : "Suprimeix dels preferits",
+ "Add as favorite" : "Afegeix-ho com a preferit",
+ "You are not logged in." : "No heu iniciat la sessió.",
+ "There was an error getting the weather status information." : "S'ha produït un error en obtenir la informació de l'estat del temps.",
+ "No weather information found" : "No s'ha trobat informació del temps",
+ "Location not found" : "No s'ha trobat la ubicació",
+ "There was an error setting the location address." : "S'ha produït un error en definir l'adreça de la ubicació.",
+ "There was an error setting the location." : "S'ha produït un error en definir la ubicació.",
+ "There was an error saving the mode." : "S'ha produït un error en desar el mode.",
+ "There was an error using personal address." : "S'ha produït un error en utilitzar l'adreça personal.",
+ "Unknown weather code" : "Codi meteorològic desconegut",
+ "Detect location" : "Detecta la ubicació",
+ "Set custom address" : "Defineix una adreça personalitzada",
+ "Favorites" : "Preferits"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/cs.js b/apps/weather_status/l10n/cs.js
new file mode 100644
index 00000000000..9b2d21ecb52
--- /dev/null
+++ b/apps/weather_status/l10n/cs.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Neznámá adresa",
+ "No result." : "Bez výsledku.",
+ "Malformed JSON data." : "Nesprávně formátovaná JSON data.",
+ "Error" : "Chyba",
+ "Weather status" : "Stav počasí",
+ "Weather status in your dashboard" : "Stav počasí na vaší nástěnce",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stav počasí začleněný v aplikaci pro Nástěnku.\n Geografickou polohu je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bude jasná obloha",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bude zataženo",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} zataženo",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} odpoledne sníh a bouřky",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sníh a bouřky",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} odpoledne sněhové přeháňky a bouřka",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sněhové přeháňky a bouřka",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} odpoledne sněhové přeháňky, bouřka a polární soumrak",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sněhové přeháňky, bouřka a polární soumrak",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} odpoledne sněhové přeháňky",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sněhové přeháňky",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} odpoledne sněhové přeháňky a polární soumrak",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sněhové přeháňky a polární soumrak",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} odpoledne sněžení",
+ "{temperature} {unit} snow" : "{temperature} {unit} sněžení",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bude hezky",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} krásné počasí",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bude polojasno",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} polojasno",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} bude mlhavo",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mlhavo",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bude drobně pršet",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} drobný déšť",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} bude pršet",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} déšť",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bude vydatně pršet",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hustý déšť",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} budou přeháňky",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} přeháňky",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} budou drobné přeháňky",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} drobné přeháňky",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} budou vydatné přeháňky",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} intenzivní přeháňky",
+ "More weather for {adr}" : "Více o počasí pro {adr}",
+ "Loading weather" : "Načítání údajů o počasí",
+ "Set location for weather" : "Nastavit místo pro které předpovídat počasí",
+ "Remove from favorites" : "Odebrat z oblíbených",
+ "Add as favorite" : "Přidat do oblíbených",
+ "You are not logged in." : "Nejste přihlášení.",
+ "There was an error getting the weather status information." : "Při získávání informací o stavu počasí došlo k chybě.",
+ "No weather information found" : "Nenalezeny žádné údaje o počasí",
+ "Location not found" : "Umístění nenalezeno",
+ "There was an error setting the location address." : "Při nastavování adresy umístění došlo k chybě.",
+ "There was an error setting the location." : "Při nastavování umístění došlo k chybě.",
+ "There was an error saving the mode." : "Při ukládání režimu došlo k chybě.",
+ "There was an error using personal address." : "Při použití vaší osobní adresy došlo k chybě.",
+ "Unknown weather code" : "Neznámý kód počasí",
+ "Detect location" : "Zjistit polohu",
+ "Set custom address" : "Nastavit vlastní adresu",
+ "Favorites" : "Oblíbené"
+},
+"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/weather_status/l10n/cs.json b/apps/weather_status/l10n/cs.json
new file mode 100644
index 00000000000..fde34c1c134
--- /dev/null
+++ b/apps/weather_status/l10n/cs.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Neznámá adresa",
+ "No result." : "Bez výsledku.",
+ "Malformed JSON data." : "Nesprávně formátovaná JSON data.",
+ "Error" : "Chyba",
+ "Weather status" : "Stav počasí",
+ "Weather status in your dashboard" : "Stav počasí na vaší nástěnce",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stav počasí začleněný v aplikaci pro Nástěnku.\n Geografickou polohu je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bude jasná obloha",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bude zataženo",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} zataženo",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} odpoledne sníh a bouřky",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sníh a bouřky",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} odpoledne sněhové přeháňky a bouřka",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sněhové přeháňky a bouřka",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} odpoledne sněhové přeháňky, bouřka a polární soumrak",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sněhové přeháňky, bouřka a polární soumrak",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} odpoledne sněhové přeháňky",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sněhové přeháňky",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} odpoledne sněhové přeháňky a polární soumrak",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sněhové přeháňky a polární soumrak",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} odpoledne sněžení",
+ "{temperature} {unit} snow" : "{temperature} {unit} sněžení",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bude hezky",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} krásné počasí",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bude polojasno",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} polojasno",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} bude mlhavo",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mlhavo",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bude drobně pršet",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} drobný déšť",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} bude pršet",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} déšť",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bude vydatně pršet",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hustý déšť",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} budou přeháňky",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} přeháňky",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} budou drobné přeháňky",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} drobné přeháňky",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} budou vydatné přeháňky",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} intenzivní přeháňky",
+ "More weather for {adr}" : "Více o počasí pro {adr}",
+ "Loading weather" : "Načítání údajů o počasí",
+ "Set location for weather" : "Nastavit místo pro které předpovídat počasí",
+ "Remove from favorites" : "Odebrat z oblíbených",
+ "Add as favorite" : "Přidat do oblíbených",
+ "You are not logged in." : "Nejste přihlášení.",
+ "There was an error getting the weather status information." : "Při získávání informací o stavu počasí došlo k chybě.",
+ "No weather information found" : "Nenalezeny žádné údaje o počasí",
+ "Location not found" : "Umístění nenalezeno",
+ "There was an error setting the location address." : "Při nastavování adresy umístění došlo k chybě.",
+ "There was an error setting the location." : "Při nastavování umístění došlo k chybě.",
+ "There was an error saving the mode." : "Při ukládání režimu došlo k chybě.",
+ "There was an error using personal address." : "Při použití vaší osobní adresy došlo k chybě.",
+ "Unknown weather code" : "Neznámý kód počasí",
+ "Detect location" : "Zjistit polohu",
+ "Set custom address" : "Nastavit vlastní adresu",
+ "Favorites" : "Oblíbené"
+},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/da.js b/apps/weather_status/l10n/da.js
new file mode 100644
index 00000000000..4a1c6ab0a43
--- /dev/null
+++ b/apps/weather_status/l10n/da.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Ukendt adresse",
+ "No result." : "Intet resultat",
+ "Malformed JSON data." : "Fejl i JSON dataformat.",
+ "Error" : "Fejl",
+ "Weather status" : "Status for vejret",
+ "Weather status in your dashboard" : "Status for vejret på dit kontrolpanel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Vejrstatus integreret i Dashboard-appen.\nDen geografiske placering kan bestemmes automatisk eller manuelt. En 6 timers prognose vises derefter.\nDenne status kan også integreres andre steder som f.eks. Kalender-appen.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} skyfri himmel senere i dag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} skyfri himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} overskyet senere i dag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} overskyet",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sne og torden senere idag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sne og torden",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snebyger og torden senere i dag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snebyger og torden",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snebyger, torden og polartusmørke senere i dag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snebyger, torden og polartusmørke",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snebyger senere i dag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snebyger",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snebyger og polartusmørke senere i dag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snebyger og polartusmørke",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sne senere i dag",
+ "{temperature} {unit} snow" : "{temperature} {unit} sne",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} pænt vejr senere i dag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} pænt vejr",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} delvist overskyet senere i dag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delvis overskyet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} tåget senere i dag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} tåget",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} let regn senere i dag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} let regn",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} let regn senere i dag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} regn",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kraftig regn senere i dag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kraftig regn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regnbyger senere i dag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regnbyger",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lette regnbyger senere i dag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lette regnbyger",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kraftige regnbyger senere i dag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kraftige regnbyger",
+ "More weather for {adr}" : "Yderligere vejr for {adr}",
+ "Loading weather" : "Henter vejrudsigt",
+ "Set location for weather" : "Lokalitet for vejret",
+ "Remove from favorites" : "Fjern fra favoritter",
+ "Add as favorite" : "Tilføj til favoritter",
+ "You are not logged in." : "Du er ikke logget på.",
+ "There was an error getting the weather status information." : "Der skete en fejl under hentning af vejudsigten.",
+ "No weather information found" : "Ingen vejrudsigt fundet",
+ "Location not found" : "Den valgte lokalitet blev ikke fundet",
+ "There was an error setting the location address." : "Der opstod en fejl ved valg af lokalitetsadresse",
+ "There was an error setting the location." : "Der opstod en fejl ved valg af lokalitet",
+ "There was an error saving the mode." : "Tilstanden kunne ikke gemmes.",
+ "There was an error using personal address." : "Der skete en fejl i forsøget på at anvende personlig adresse.",
+ "Unknown weather code" : "Ukendt vejrkode",
+ "Detect location" : "Find min lokalitet",
+ "Set custom address" : "Angiv brugerdefineret adresse",
+ "Favorites" : "Favoritter"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/da.json b/apps/weather_status/l10n/da.json
new file mode 100644
index 00000000000..d95097bfdca
--- /dev/null
+++ b/apps/weather_status/l10n/da.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Ukendt adresse",
+ "No result." : "Intet resultat",
+ "Malformed JSON data." : "Fejl i JSON dataformat.",
+ "Error" : "Fejl",
+ "Weather status" : "Status for vejret",
+ "Weather status in your dashboard" : "Status for vejret på dit kontrolpanel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Vejrstatus integreret i Dashboard-appen.\nDen geografiske placering kan bestemmes automatisk eller manuelt. En 6 timers prognose vises derefter.\nDenne status kan også integreres andre steder som f.eks. Kalender-appen.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} skyfri himmel senere i dag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} skyfri himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} overskyet senere i dag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} overskyet",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sne og torden senere idag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sne og torden",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snebyger og torden senere i dag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snebyger og torden",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snebyger, torden og polartusmørke senere i dag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snebyger, torden og polartusmørke",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snebyger senere i dag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snebyger",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snebyger og polartusmørke senere i dag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snebyger og polartusmørke",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sne senere i dag",
+ "{temperature} {unit} snow" : "{temperature} {unit} sne",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} pænt vejr senere i dag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} pænt vejr",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} delvist overskyet senere i dag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delvis overskyet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} tåget senere i dag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} tåget",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} let regn senere i dag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} let regn",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} let regn senere i dag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} regn",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kraftig regn senere i dag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kraftig regn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regnbyger senere i dag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regnbyger",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lette regnbyger senere i dag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lette regnbyger",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kraftige regnbyger senere i dag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kraftige regnbyger",
+ "More weather for {adr}" : "Yderligere vejr for {adr}",
+ "Loading weather" : "Henter vejrudsigt",
+ "Set location for weather" : "Lokalitet for vejret",
+ "Remove from favorites" : "Fjern fra favoritter",
+ "Add as favorite" : "Tilføj til favoritter",
+ "You are not logged in." : "Du er ikke logget på.",
+ "There was an error getting the weather status information." : "Der skete en fejl under hentning af vejudsigten.",
+ "No weather information found" : "Ingen vejrudsigt fundet",
+ "Location not found" : "Den valgte lokalitet blev ikke fundet",
+ "There was an error setting the location address." : "Der opstod en fejl ved valg af lokalitetsadresse",
+ "There was an error setting the location." : "Der opstod en fejl ved valg af lokalitet",
+ "There was an error saving the mode." : "Tilstanden kunne ikke gemmes.",
+ "There was an error using personal address." : "Der skete en fejl i forsøget på at anvende personlig adresse.",
+ "Unknown weather code" : "Ukendt vejrkode",
+ "Detect location" : "Find min lokalitet",
+ "Set custom address" : "Angiv brugerdefineret adresse",
+ "Favorites" : "Favoritter"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/de.js b/apps/weather_status/l10n/de.js
new file mode 100644
index 00000000000..650d19e7e5b
--- /dev/null
+++ b/apps/weather_status/l10n/de.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Unbekannte Adresse",
+ "No result." : "Kein Ergebnis.",
+ "Malformed JSON data." : "Fehlerhafte JSON-Daten.",
+ "Error" : "Fehler",
+ "Weather status" : "Wetterstatus",
+ "Weather status in your dashboard" : "Wetterstatus für dein Dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "In die Dashboard-App integrierter Wetterstatus.\n Der geografische Standort kann automatisch ermittelt oder manuell angegeben werden. Es wird dann eine 6-Stunden-Vorhersage angezeigt.\n Dieser Status kann auch an anderen Stellen, z. B. in der Kalender-App, integriert werden.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} klarer Himmel später am Tag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} klarer Himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bewölkt später am Tag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bewölkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} Schneefall und Gewitter später am Tag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Schneefall und Gewitter",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} Schneeschauer und Gewitter später am Tag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} Schneeschauer und Gewitter",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Schneeschauer später am Tag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} Schneeschauer",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Schneeschauer und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} Schneeschauer und Polarlichter",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Schneefall später am Tag ",
+ "{temperature} {unit} snow" : "{temperature} {unit} Schneefall",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} schönes Wetter später am Tag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} schönes Wetter",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} teilweise bewölkt später am Tag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} teilweise bewölkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} neblig später am Tag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebelig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} leichter Regen später am Tag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} leichter Regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Regen später am Tag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} starker Regen später am Tag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} starker Regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Regenschauer später am Tag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Regenschauer",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} leichte Regenschauer später am Tag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} leichte Regenschauer",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} starke Regenschauer später am Tag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} starke Regenschauer",
+ "More weather for {adr}" : "Mehr Wetter für {adr}",
+ "Loading weather" : "Lade Wetter",
+ "Set location for weather" : "Standort für Wetterinformationen einstellen",
+ "Remove from favorites" : "Von Favoriten entfernen",
+ "Add as favorite" : "Als Favorit hinzufügen",
+ "You are not logged in." : "Du bist nicht angemeldet.",
+ "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.",
+ "No weather information found" : "Keine Wetterinformationen gefunden",
+ "Location not found" : "Standort nicht gefunden",
+ "There was an error setting the location address." : "Fehler beim Festlegen der Standortadresse aufgetreten.",
+ "There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.",
+ "There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.",
+ "There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.",
+ "Unknown weather code" : "Unbekannter Wettercode",
+ "Detect location" : "Standort ermitteln",
+ "Set custom address" : "Benutzerdefinierte Adresse festlegen",
+ "Favorites" : "Favoriten"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/de.json b/apps/weather_status/l10n/de.json
new file mode 100644
index 00000000000..64576182a00
--- /dev/null
+++ b/apps/weather_status/l10n/de.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Unbekannte Adresse",
+ "No result." : "Kein Ergebnis.",
+ "Malformed JSON data." : "Fehlerhafte JSON-Daten.",
+ "Error" : "Fehler",
+ "Weather status" : "Wetterstatus",
+ "Weather status in your dashboard" : "Wetterstatus für dein Dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "In die Dashboard-App integrierter Wetterstatus.\n Der geografische Standort kann automatisch ermittelt oder manuell angegeben werden. Es wird dann eine 6-Stunden-Vorhersage angezeigt.\n Dieser Status kann auch an anderen Stellen, z. B. in der Kalender-App, integriert werden.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} klarer Himmel später am Tag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} klarer Himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bewölkt später am Tag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bewölkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} Schneefall und Gewitter später am Tag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Schneefall und Gewitter",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} Schneeschauer und Gewitter später am Tag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} Schneeschauer und Gewitter",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Schneeschauer später am Tag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} Schneeschauer",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Schneeschauer und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} Schneeschauer und Polarlichter",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Schneefall später am Tag ",
+ "{temperature} {unit} snow" : "{temperature} {unit} Schneefall",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} schönes Wetter später am Tag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} schönes Wetter",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} teilweise bewölkt später am Tag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} teilweise bewölkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} neblig später am Tag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebelig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} leichter Regen später am Tag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} leichter Regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Regen später am Tag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} starker Regen später am Tag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} starker Regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Regenschauer später am Tag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Regenschauer",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} leichte Regenschauer später am Tag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} leichte Regenschauer",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} starke Regenschauer später am Tag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} starke Regenschauer",
+ "More weather for {adr}" : "Mehr Wetter für {adr}",
+ "Loading weather" : "Lade Wetter",
+ "Set location for weather" : "Standort für Wetterinformationen einstellen",
+ "Remove from favorites" : "Von Favoriten entfernen",
+ "Add as favorite" : "Als Favorit hinzufügen",
+ "You are not logged in." : "Du bist nicht angemeldet.",
+ "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.",
+ "No weather information found" : "Keine Wetterinformationen gefunden",
+ "Location not found" : "Standort nicht gefunden",
+ "There was an error setting the location address." : "Fehler beim Festlegen der Standortadresse aufgetreten.",
+ "There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.",
+ "There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.",
+ "There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.",
+ "Unknown weather code" : "Unbekannter Wettercode",
+ "Detect location" : "Standort ermitteln",
+ "Set custom address" : "Benutzerdefinierte Adresse festlegen",
+ "Favorites" : "Favoriten"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/de_DE.js b/apps/weather_status/l10n/de_DE.js
new file mode 100644
index 00000000000..72673615e88
--- /dev/null
+++ b/apps/weather_status/l10n/de_DE.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Unbekannte Adresse",
+ "No result." : "Kein Ergebnis.",
+ "Malformed JSON data." : "Fehlerhafte JSON-Daten.",
+ "Error" : "Fehler",
+ "Weather status" : "Wetter Status",
+ "Weather status in your dashboard" : "Wetter Status in deinem Dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "In die Dashboard-App integrierter Wetterstatus.\n Der geografische Standort kann automatisch ermittelt oder manuell angegeben werden. Es wird dann eine 6-Stunden-Vorhersage angezeigt.\n Dieser Status kann auch an anderen Stellen, z. B. in der Kalender-App, integriert werden.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Klarer Himmel später am Tag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Klarer Himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Bewölkt später am Tag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Bewölkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} Schneefall und Gewitter später am Tag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Schneefall und Gewitter",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} Schneeschauer und Gewitter später am Tag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} Schneeschauer und Gewitter",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Schneeschauer später am Tag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} Schneeschauer",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Schneeschauer und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} Schneeschauer und Polarlichter",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Schneefall später am Tag ",
+ "{temperature} {unit} snow" : "{temperature} {unit} Schneefall",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Schönes Wetter später am Tag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Schönes Wetter",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Teilweise bewölkt später am Tag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Teilweise bewölkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Neblig später am Tag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Neblig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Leichter Regen später am Tag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Leichter Regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Regen später am Tag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Starker Regen später am Tag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Starker Regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Regenschauer später am Tag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Regenschauer",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Leichte Regenschauer später am Tag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Leichte Regenschauer",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Starke Regenschauer später am Tag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Starke Regenschauer",
+ "More weather for {adr}" : "Mehr Wetter für {adr}",
+ "Loading weather" : "Lade Wetter",
+ "Set location for weather" : "Stelle Standort für Wetterinformation ein.",
+ "Remove from favorites" : "Von Favoriten entfernen",
+ "Add as favorite" : "Als Favorit hinzufügen",
+ "You are not logged in." : "Sie sind nicht angemeldet.",
+ "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.",
+ "No weather information found" : "Keine Wetterinformationen gefunden",
+ "Location not found" : "Ort nicht gefunden",
+ "There was an error setting the location address." : "Beim Festlegen der Standortadresse ist ein Fehler aufgetreten.",
+ "There was an error setting the location." : "Beim Festlegen des Standortes ist ein Fehler aufgetreten.",
+ "There was an error saving the mode." : "Beim Festlegen des Modus ist ein Fehler aufgetreten.",
+ "There was an error using personal address." : "Bei der Verwendung der persönlichen Adresse ist ein Fehler aufgetreten.",
+ "Unknown weather code" : "Unbekannter Wettercode",
+ "Detect location" : "Ort erkennen",
+ "Set custom address" : "Benutzerdefinierte Adresse festlegen",
+ "Favorites" : "Favoriten"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/de_DE.json b/apps/weather_status/l10n/de_DE.json
new file mode 100644
index 00000000000..c4a104eab5a
--- /dev/null
+++ b/apps/weather_status/l10n/de_DE.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Unbekannte Adresse",
+ "No result." : "Kein Ergebnis.",
+ "Malformed JSON data." : "Fehlerhafte JSON-Daten.",
+ "Error" : "Fehler",
+ "Weather status" : "Wetter Status",
+ "Weather status in your dashboard" : "Wetter Status in deinem Dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "In die Dashboard-App integrierter Wetterstatus.\n Der geografische Standort kann automatisch ermittelt oder manuell angegeben werden. Es wird dann eine 6-Stunden-Vorhersage angezeigt.\n Dieser Status kann auch an anderen Stellen, z. B. in der Kalender-App, integriert werden.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Klarer Himmel später am Tag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Klarer Himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Bewölkt später am Tag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Bewölkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} Schneefall und Gewitter später am Tag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Schneefall und Gewitter",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} Schneeschauer und Gewitter später am Tag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} Schneeschauer und Gewitter",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} Schneeschauer, Gewitter und Polarlichter",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Schneeschauer später am Tag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} Schneeschauer",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Schneeschauer und Polarlichter später am Tag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} Schneeschauer und Polarlichter",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Schneefall später am Tag ",
+ "{temperature} {unit} snow" : "{temperature} {unit} Schneefall",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Schönes Wetter später am Tag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Schönes Wetter",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Teilweise bewölkt später am Tag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Teilweise bewölkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Neblig später am Tag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Neblig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Leichter Regen später am Tag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Leichter Regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Regen später am Tag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Starker Regen später am Tag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Starker Regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Regenschauer später am Tag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Regenschauer",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Leichte Regenschauer später am Tag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Leichte Regenschauer",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Starke Regenschauer später am Tag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Starke Regenschauer",
+ "More weather for {adr}" : "Mehr Wetter für {adr}",
+ "Loading weather" : "Lade Wetter",
+ "Set location for weather" : "Stelle Standort für Wetterinformation ein.",
+ "Remove from favorites" : "Von Favoriten entfernen",
+ "Add as favorite" : "Als Favorit hinzufügen",
+ "You are not logged in." : "Sie sind nicht angemeldet.",
+ "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.",
+ "No weather information found" : "Keine Wetterinformationen gefunden",
+ "Location not found" : "Ort nicht gefunden",
+ "There was an error setting the location address." : "Beim Festlegen der Standortadresse ist ein Fehler aufgetreten.",
+ "There was an error setting the location." : "Beim Festlegen des Standortes ist ein Fehler aufgetreten.",
+ "There was an error saving the mode." : "Beim Festlegen des Modus ist ein Fehler aufgetreten.",
+ "There was an error using personal address." : "Bei der Verwendung der persönlichen Adresse ist ein Fehler aufgetreten.",
+ "Unknown weather code" : "Unbekannter Wettercode",
+ "Detect location" : "Ort erkennen",
+ "Set custom address" : "Benutzerdefinierte Adresse festlegen",
+ "Favorites" : "Favoriten"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/el.js b/apps/weather_status/l10n/el.js
new file mode 100644
index 00000000000..61722460972
--- /dev/null
+++ b/apps/weather_status/l10n/el.js
@@ -0,0 +1,38 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Άγνωστη διεύθυνση",
+ "No result." : "Κανένα αποτέλεσμα.",
+ "Malformed JSON data." : "Κακή μορφή δεδομένων JSON.",
+ "Error" : "Σφάλμα",
+ "Weather status" : "Κατάσταση καιρού",
+ "Weather status in your dashboard" : "Κατάσταση καιρού στον πίνακα ελέγχου",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} καθαρός ουρανός",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} συννεφιά αργότερα σήμερα",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} συννεφιά",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} αίθριος καιρός αργότερα σήμερα",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} αίθριος καιρός",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} λίγα σύννεφα αργότερα σήμερα",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} λίγα σύννεφα",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ομίχλη αργότερα σήμερα",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ομίχλη",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} ασθενείς βροχοπτώσεις αργότερα σήμερα",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} ασθενείς βροχοπτώσεις",
+ "More weather for {adr}" : "Περισσότερος καιρός για {adr}",
+ "Loading weather" : "Φόρτωση καιρού",
+ "Set location for weather" : "Ορισμός τοποθεσίας καιρού",
+ "Remove from favorites" : "Αφαίρεση από τα αγαπημένα",
+ "Add as favorite" : "Προσθήκη ως αγαπημένο",
+ "You are not logged in." : "Δεν έχετε συνδεθεί.",
+ "There was an error getting the weather status information." : "Παρουσιάστηκε σφάλμα κατά τη λήψη των πληροφοριών σχετικά με την κατάσταση καιρού.",
+ "No weather information found" : "Δεν βρέθηκαν πληροφορίες για τον καιρό",
+ "Location not found" : "Δεν βρέθηκε η τοποθεσία",
+ "There was an error setting the location address." : "Παρουσιάστηκε σφάλμα κατά τον καθορισμό της διεύθυνσης τοποθεσίας.",
+ "There was an error setting the location." : "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση της τοποθεσίας.",
+ "There was an error saving the mode." : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της λειτουργίας.",
+ "There was an error using personal address." : "Παρουσιάστηκε σφάλμα κατά τη χρήση της προσωπικής διεύθυνσης.",
+ "Detect location" : "Εντοπισμός τοποθεσίας",
+ "Set custom address" : "Ορισμός προσαρμοσμένης διεύθυνσης",
+ "Favorites" : "Αγαπημένα"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/el.json b/apps/weather_status/l10n/el.json
new file mode 100644
index 00000000000..944f8b0cdbb
--- /dev/null
+++ b/apps/weather_status/l10n/el.json
@@ -0,0 +1,36 @@
+{ "translations": {
+ "Unknown address" : "Άγνωστη διεύθυνση",
+ "No result." : "Κανένα αποτέλεσμα.",
+ "Malformed JSON data." : "Κακή μορφή δεδομένων JSON.",
+ "Error" : "Σφάλμα",
+ "Weather status" : "Κατάσταση καιρού",
+ "Weather status in your dashboard" : "Κατάσταση καιρού στον πίνακα ελέγχου",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} καθαρός ουρανός",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} συννεφιά αργότερα σήμερα",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} συννεφιά",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} αίθριος καιρός αργότερα σήμερα",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} αίθριος καιρός",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} λίγα σύννεφα αργότερα σήμερα",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} λίγα σύννεφα",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ομίχλη αργότερα σήμερα",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ομίχλη",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} ασθενείς βροχοπτώσεις αργότερα σήμερα",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} ασθενείς βροχοπτώσεις",
+ "More weather for {adr}" : "Περισσότερος καιρός για {adr}",
+ "Loading weather" : "Φόρτωση καιρού",
+ "Set location for weather" : "Ορισμός τοποθεσίας καιρού",
+ "Remove from favorites" : "Αφαίρεση από τα αγαπημένα",
+ "Add as favorite" : "Προσθήκη ως αγαπημένο",
+ "You are not logged in." : "Δεν έχετε συνδεθεί.",
+ "There was an error getting the weather status information." : "Παρουσιάστηκε σφάλμα κατά τη λήψη των πληροφοριών σχετικά με την κατάσταση καιρού.",
+ "No weather information found" : "Δεν βρέθηκαν πληροφορίες για τον καιρό",
+ "Location not found" : "Δεν βρέθηκε η τοποθεσία",
+ "There was an error setting the location address." : "Παρουσιάστηκε σφάλμα κατά τον καθορισμό της διεύθυνσης τοποθεσίας.",
+ "There was an error setting the location." : "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση της τοποθεσίας.",
+ "There was an error saving the mode." : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της λειτουργίας.",
+ "There was an error using personal address." : "Παρουσιάστηκε σφάλμα κατά τη χρήση της προσωπικής διεύθυνσης.",
+ "Detect location" : "Εντοπισμός τοποθεσίας",
+ "Set custom address" : "Ορισμός προσαρμοσμένης διεύθυνσης",
+ "Favorites" : "Αγαπημένα"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/en_GB.js b/apps/weather_status/l10n/en_GB.js
new file mode 100644
index 00000000000..b59b163615b
--- /dev/null
+++ b/apps/weather_status/l10n/en_GB.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Unknown address",
+ "No result." : "No result.",
+ "Malformed JSON data." : "Malformed JSON data.",
+ "Error" : "Error",
+ "Weather status" : "Weather status",
+ "Weather status in your dashboard" : "Weather status in your dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} clear sky later today",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} clear sky",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} cloudy later today",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} cloudy",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snow and thunder later today",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snow and thunder",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snow showers and thunder later today",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snow showers and thunder",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snow showers, thunder and polar twilight later today",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snow showers, thunder and polar twilight",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snow showers later today",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snow showers",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snow showers and polar twilight later today",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snow showers and polar twilight",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snow later today",
+ "{temperature} {unit} snow" : "{temperature} {unit} snow",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fair weather later today",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fair weather",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} partly cloudy later today",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} partly cloudy",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} foggy later today",
+ "{temperature} {unit} foggy" : "{temperature} {unit} foggy",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} light rainfall later today",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} light rainfall",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rainfall later today",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rainfall",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} heavy rainfall later today",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} heavy rainfall",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rainfall showers later today",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rainfall showers",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} light rainfall showers later today",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} light rainfall showers",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} heavy rainfall showers later today",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} heavy rainfall showers",
+ "More weather for {adr}" : "More weather for {adr}",
+ "Loading weather" : "Loading weather",
+ "Set location for weather" : "Set location for weather",
+ "Remove from favorites" : "Remove from favourites",
+ "Add as favorite" : "Add as favourite",
+ "You are not logged in." : "You are not logged in.",
+ "There was an error getting the weather status information." : "There was an error getting the weather status information.",
+ "No weather information found" : "No weather information found",
+ "Location not found" : "Location not found",
+ "There was an error setting the location address." : "There was an error setting the location address.",
+ "There was an error setting the location." : "There was an error setting the location.",
+ "There was an error saving the mode." : "There was an error saving the mode.",
+ "There was an error using personal address." : "There was an error using personal address.",
+ "Unknown weather code" : "Unknown weather code",
+ "Detect location" : "Detect location",
+ "Set custom address" : "Set custom address",
+ "Favorites" : "Favourites"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/en_GB.json b/apps/weather_status/l10n/en_GB.json
new file mode 100644
index 00000000000..7c060d57632
--- /dev/null
+++ b/apps/weather_status/l10n/en_GB.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Unknown address",
+ "No result." : "No result.",
+ "Malformed JSON data." : "Malformed JSON data.",
+ "Error" : "Error",
+ "Weather status" : "Weather status",
+ "Weather status in your dashboard" : "Weather status in your dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} clear sky later today",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} clear sky",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} cloudy later today",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} cloudy",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snow and thunder later today",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snow and thunder",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snow showers and thunder later today",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snow showers and thunder",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snow showers, thunder and polar twilight later today",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snow showers, thunder and polar twilight",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snow showers later today",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snow showers",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snow showers and polar twilight later today",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snow showers and polar twilight",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snow later today",
+ "{temperature} {unit} snow" : "{temperature} {unit} snow",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fair weather later today",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fair weather",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} partly cloudy later today",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} partly cloudy",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} foggy later today",
+ "{temperature} {unit} foggy" : "{temperature} {unit} foggy",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} light rainfall later today",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} light rainfall",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rainfall later today",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rainfall",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} heavy rainfall later today",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} heavy rainfall",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rainfall showers later today",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rainfall showers",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} light rainfall showers later today",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} light rainfall showers",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} heavy rainfall showers later today",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} heavy rainfall showers",
+ "More weather for {adr}" : "More weather for {adr}",
+ "Loading weather" : "Loading weather",
+ "Set location for weather" : "Set location for weather",
+ "Remove from favorites" : "Remove from favourites",
+ "Add as favorite" : "Add as favourite",
+ "You are not logged in." : "You are not logged in.",
+ "There was an error getting the weather status information." : "There was an error getting the weather status information.",
+ "No weather information found" : "No weather information found",
+ "Location not found" : "Location not found",
+ "There was an error setting the location address." : "There was an error setting the location address.",
+ "There was an error setting the location." : "There was an error setting the location.",
+ "There was an error saving the mode." : "There was an error saving the mode.",
+ "There was an error using personal address." : "There was an error using personal address.",
+ "Unknown weather code" : "Unknown weather code",
+ "Detect location" : "Detect location",
+ "Set custom address" : "Set custom address",
+ "Favorites" : "Favourites"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/eo.js b/apps/weather_status/l10n/eo.js
new file mode 100644
index 00000000000..79c5e2d4a78
--- /dev/null
+++ b/apps/weather_status/l10n/eo.js
@@ -0,0 +1,41 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Nekonata adreso",
+ "No result." : "Nenia rezulto.",
+ "Malformed JSON data." : "Misformita JSON datumoj.",
+ "Error" : "Eraro",
+ "Weather status" : "Stato de vetero",
+ "Weather status in your dashboard" : "Stato de vetero en via panelo",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} sennuba ĉielo poste hodiaŭ",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} sennuba ĉielo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nube poste hodiaŭ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nube",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bela vetero poste hodiaŭ",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bela vetero",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parte nube poste hodiaŭ",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parte nube",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nebule poste hodiaŭ",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebule",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluveto poste hodiaŭ",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} pluveto",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluvo poste hodiaŭ",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} pluvo",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluvego poste hodiaŭ",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluvego",
+ "More weather for {adr}" : "Pli da vetero por {adr}",
+ "Loading weather" : "Ŝarĝado de vetero",
+ "Set location for weather" : "Agordi lokon por vetero",
+ "Remove from favorites" : "Forigi el pliŝataĵoj",
+ "Add as favorite" : "Aldoni kiel plej ŝatata",
+ "You are not logged in." : "Vi ne estas ensalutita.",
+ "No weather information found" : "Nenia vetera informo trovita",
+ "Location not found" : "Loko ne trovita",
+ "There was an error setting the location address." : "Estis eraro agordante adreson de la loko.",
+ "There was an error setting the location." : "Estis eraro agordante la lokon.",
+ "There was an error saving the mode." : "Estis eraro konservante la reĝimon.",
+ "Detect location" : "Rekoni lokon",
+ "Set custom address" : "Agordi propran adreson",
+ "Favorites" : "Plej ŝatataj"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/eo.json b/apps/weather_status/l10n/eo.json
new file mode 100644
index 00000000000..b6154d2e591
--- /dev/null
+++ b/apps/weather_status/l10n/eo.json
@@ -0,0 +1,39 @@
+{ "translations": {
+ "Unknown address" : "Nekonata adreso",
+ "No result." : "Nenia rezulto.",
+ "Malformed JSON data." : "Misformita JSON datumoj.",
+ "Error" : "Eraro",
+ "Weather status" : "Stato de vetero",
+ "Weather status in your dashboard" : "Stato de vetero en via panelo",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} sennuba ĉielo poste hodiaŭ",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} sennuba ĉielo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nube poste hodiaŭ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nube",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bela vetero poste hodiaŭ",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bela vetero",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parte nube poste hodiaŭ",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parte nube",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nebule poste hodiaŭ",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebule",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} pluveto poste hodiaŭ",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} pluveto",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pluvo poste hodiaŭ",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} pluvo",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} pluvego poste hodiaŭ",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} pluvego",
+ "More weather for {adr}" : "Pli da vetero por {adr}",
+ "Loading weather" : "Ŝarĝado de vetero",
+ "Set location for weather" : "Agordi lokon por vetero",
+ "Remove from favorites" : "Forigi el pliŝataĵoj",
+ "Add as favorite" : "Aldoni kiel plej ŝatata",
+ "You are not logged in." : "Vi ne estas ensalutita.",
+ "No weather information found" : "Nenia vetera informo trovita",
+ "Location not found" : "Loko ne trovita",
+ "There was an error setting the location address." : "Estis eraro agordante adreson de la loko.",
+ "There was an error setting the location." : "Estis eraro agordante la lokon.",
+ "There was an error saving the mode." : "Estis eraro konservante la reĝimon.",
+ "Detect location" : "Rekoni lokon",
+ "Set custom address" : "Agordi propran adreson",
+ "Favorites" : "Plej ŝatataj"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/es.js b/apps/weather_status/l10n/es.js
new file mode 100644
index 00000000000..1f31e29e450
--- /dev/null
+++ b/apps/weather_status/l10n/es.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultados.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del tiempo",
+ "Weather status in your dashboard" : "El estado del tiempo en tu dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado del clima integrado en la aplicación Tablero.\n La posición geográfica del usuario puede determinarse automáticamente o definirse manualmente. Luego se muestra un pronóstico a 6 horas.\n Este estado también puede integrarse en otros lugares, como la aplicación Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nublado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} Nieve y truenos más tarde hoy",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Nieve y truenos",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} chubascos de nieve y truenos más tarde hoy",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} chubascos de nieve y truenos",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} chubascos de nieve, truenos y crepúsculo polar más tarde hoy",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} chubascos de nieve, truenos y crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} chubascos de nieve más tarde hoy",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} chubascos de nieve",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} chubascos de nieve y crepúsculo polar más tarde hoy",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} chubascos de nieve y crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} nieve más tarde hoy",
+ "{temperature} {unit} snow" : "{temperature} {unit} nieve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} buen clima más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Buen clima",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} con niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Con brumas",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lluvia leve más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lluvia leve",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} lluvioso más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} muy lluvioso",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} chubascos más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} chubascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chubascos leves más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chubascos leves",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} chubascos fuertes más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} chubascos fuertes",
+ "More weather for {adr}" : "Más previsiones para {adr}",
+ "Loading weather" : "Cargando previsión del tiempo",
+ "Set location for weather" : "Seleccione la ubicación para el tiempo",
+ "Remove from favorites" : "Quitar de favoritos",
+ "Add as favorite" : "Añadir como favorito",
+ "You are not logged in." : "No ha iniciado sesión.",
+ "There was an error getting the weather status information." : "Ha habido un error al obtener la información sobre la previsión del tiempo.",
+ "No weather information found" : "No se ha encontrado información del tiempo",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Ha habido un error al ajustar la dirección de la ubicación.",
+ "There was an error setting the location." : "Ha habido un error al ajustar la ubicación.",
+ "There was an error saving the mode." : "Ha habido un error al guardar el modo.",
+ "There was an error using personal address." : "Ha habido un error al ajustar la dirección personal.",
+ "Unknown weather code" : "Código climático desconocido",
+ "Detect location" : "Detectar la ubicación",
+ "Set custom address" : "Configurar una dirección personalizada",
+ "Favorites" : "Favoritos"
+},
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/es.json b/apps/weather_status/l10n/es.json
new file mode 100644
index 00000000000..1ade5c35130
--- /dev/null
+++ b/apps/weather_status/l10n/es.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultados.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del tiempo",
+ "Weather status in your dashboard" : "El estado del tiempo en tu dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado del clima integrado en la aplicación Tablero.\n La posición geográfica del usuario puede determinarse automáticamente o definirse manualmente. Luego se muestra un pronóstico a 6 horas.\n Este estado también puede integrarse en otros lugares, como la aplicación Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nublado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} Nieve y truenos más tarde hoy",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} Nieve y truenos",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} chubascos de nieve y truenos más tarde hoy",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} chubascos de nieve y truenos",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} chubascos de nieve, truenos y crepúsculo polar más tarde hoy",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} chubascos de nieve, truenos y crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} chubascos de nieve más tarde hoy",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} chubascos de nieve",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} chubascos de nieve y crepúsculo polar más tarde hoy",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} chubascos de nieve y crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} nieve más tarde hoy",
+ "{temperature} {unit} snow" : "{temperature} {unit} nieve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} buen clima más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Buen clima",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} con niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Con brumas",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lluvia leve más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lluvia leve",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} lluvioso más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} muy lluvioso",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} chubascos más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} chubascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chubascos leves más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chubascos leves",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} chubascos fuertes más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} chubascos fuertes",
+ "More weather for {adr}" : "Más previsiones para {adr}",
+ "Loading weather" : "Cargando previsión del tiempo",
+ "Set location for weather" : "Seleccione la ubicación para el tiempo",
+ "Remove from favorites" : "Quitar de favoritos",
+ "Add as favorite" : "Añadir como favorito",
+ "You are not logged in." : "No ha iniciado sesión.",
+ "There was an error getting the weather status information." : "Ha habido un error al obtener la información sobre la previsión del tiempo.",
+ "No weather information found" : "No se ha encontrado información del tiempo",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Ha habido un error al ajustar la dirección de la ubicación.",
+ "There was an error setting the location." : "Ha habido un error al ajustar la ubicación.",
+ "There was an error saving the mode." : "Ha habido un error al guardar el modo.",
+ "There was an error using personal address." : "Ha habido un error al ajustar la dirección personal.",
+ "Unknown weather code" : "Código climático desconocido",
+ "Detect location" : "Detectar la ubicación",
+ "Set custom address" : "Configurar una dirección personalizada",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/es_EC.js b/apps/weather_status/l10n/es_EC.js
new file mode 100644
index 00000000000..3ffff4a7b85
--- /dev/null
+++ b/apps/weather_status/l10n/es_EC.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultados.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del clima",
+ "Weather status in your dashboard" : "Estado del clima en tu tablero",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nublado",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} clima bueno más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} clima bueno",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} niebla",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lluvia ligera más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lluvia ligera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} lluvia intensa más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} lluvia intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} lluvia intermitente más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} lluvia intermitente",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lluvia ligera intermitente más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lluvia ligera intermitente",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} lluvia intensa intermitente más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} lluvia intensa intermitente",
+ "More weather for {adr}" : "Más información sobre el clima para {adr}",
+ "Loading weather" : "Cargando clima",
+ "Set location for weather" : "Establecer ubicación para el clima",
+ "Remove from favorites" : "Eliminar de favoritos",
+ "Add as favorite" : "Agregar como favorito",
+ "You are not logged in." : "No has iniciado sesión.",
+ "There was an error getting the weather status information." : "Hubo un error al obtener la información del estado del clima.",
+ "No weather information found" : "No se encontró información del clima",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Hubo un error al establecer la dirección de ubicación.",
+ "There was an error setting the location." : "Hubo un error al establecer la ubicación.",
+ "There was an error saving the mode." : "Hubo un error al guardar el modo.",
+ "There was an error using personal address." : "Hubo un error al usar la dirección personal.",
+ "Detect location" : "Detectar ubicación",
+ "Set custom address" : "Establecer dirección personalizada",
+ "Favorites" : "Favoritos"
+},
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/es_EC.json b/apps/weather_status/l10n/es_EC.json
new file mode 100644
index 00000000000..bdabc7c66a7
--- /dev/null
+++ b/apps/weather_status/l10n/es_EC.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultados.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del clima",
+ "Weather status in your dashboard" : "Estado del clima en tu tablero",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nublado",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} clima bueno más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} clima bueno",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} niebla",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lluvia ligera más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lluvia ligera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} lluvia intensa más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} lluvia intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} lluvia intermitente más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} lluvia intermitente",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lluvia ligera intermitente más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lluvia ligera intermitente",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} lluvia intensa intermitente más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} lluvia intensa intermitente",
+ "More weather for {adr}" : "Más información sobre el clima para {adr}",
+ "Loading weather" : "Cargando clima",
+ "Set location for weather" : "Establecer ubicación para el clima",
+ "Remove from favorites" : "Eliminar de favoritos",
+ "Add as favorite" : "Agregar como favorito",
+ "You are not logged in." : "No has iniciado sesión.",
+ "There was an error getting the weather status information." : "Hubo un error al obtener la información del estado del clima.",
+ "No weather information found" : "No se encontró información del clima",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Hubo un error al establecer la dirección de ubicación.",
+ "There was an error setting the location." : "Hubo un error al establecer la ubicación.",
+ "There was an error saving the mode." : "Hubo un error al guardar el modo.",
+ "There was an error using personal address." : "Hubo un error al usar la dirección personal.",
+ "Detect location" : "Detectar ubicación",
+ "Set custom address" : "Establecer dirección personalizada",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/es_MX.js b/apps/weather_status/l10n/es_MX.js
new file mode 100644
index 00000000000..200df66f137
--- /dev/null
+++ b/apps/weather_status/l10n/es_MX.js
@@ -0,0 +1,50 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultado.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del clima",
+ "Weather status in your dashboard" : "Estado del clima en su tablero",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado del clima integrado en la app del tablero.\n La posición geográfica del usuario puede determinarse automáticamente o definirse manualmente. Luego se mostrará un pronóstico a 6 horas.\n Este estado también puede integrarse en otros lugares, como la aplicación de calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Se espera un cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Estará nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nublado",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Se espera un buen clima más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Buen clima",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Estará parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Se espera niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Con niebla",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Se espera lluvia ligera más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Lluvia ligera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Se espera lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Se espera lluvia intensa más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Lluvia intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Se esperan chubascos más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Chubascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Se esperan chubascos ligeros más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Chubascos ligeros",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Se esperan chubascos fuertes más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Chubascos fuertes",
+ "More weather for {adr}" : "Más información sobre del clima para {adr}",
+ "Loading weather" : "Cargando estado del clima",
+ "Set location for weather" : "Establecer ubicación para el clima",
+ "Remove from favorites" : "Eliminar de favoritos",
+ "Add as favorite" : "Añadir como favorito",
+ "You are not logged in." : "No ha iniciado sesión.",
+ "There was an error getting the weather status information." : "Ocurrió un error al obtener la información del estado del clima.",
+ "No weather information found" : "No se encontró información del estado del clima",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Ocurrió un error al establecer la dirección de ubicación.",
+ "There was an error setting the location." : "Ocurrió un error al establecer la ubicación.",
+ "There was an error saving the mode." : "Ocurrió un error al guardar el modo.",
+ "There was an error using personal address." : "Ocurrió un error al usar la dirección personal.",
+ "Detect location" : "Detectar ubicación",
+ "Set custom address" : "Establecer dirección personalizada",
+ "Favorites" : "Favoritos"
+},
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/es_MX.json b/apps/weather_status/l10n/es_MX.json
new file mode 100644
index 00000000000..24f355ddccb
--- /dev/null
+++ b/apps/weather_status/l10n/es_MX.json
@@ -0,0 +1,48 @@
+{ "translations": {
+ "Unknown address" : "Dirección desconocida",
+ "No result." : "Sin resultado.",
+ "Malformed JSON data." : "Datos JSON mal formados.",
+ "Error" : "Error",
+ "Weather status" : "Estado del clima",
+ "Weather status in your dashboard" : "Estado del clima en su tablero",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado del clima integrado en la app del tablero.\n La posición geográfica del usuario puede determinarse automáticamente o definirse manualmente. Luego se mostrará un pronóstico a 6 horas.\n Este estado también puede integrarse en otros lugares, como la aplicación de calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Se espera un cielo despejado más tarde hoy",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Cielo despejado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Estará nublado más tarde hoy",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nublado",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Se espera un buen clima más tarde hoy",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Buen clima",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Estará parcialmente nublado más tarde hoy",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Se espera niebla más tarde hoy",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Con niebla",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Se espera lluvia ligera más tarde hoy",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Lluvia ligera",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Se espera lluvia más tarde hoy",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Lluvia",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Se espera lluvia intensa más tarde hoy",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Lluvia intensa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Se esperan chubascos más tarde hoy",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Chubascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Se esperan chubascos ligeros más tarde hoy",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Chubascos ligeros",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Se esperan chubascos fuertes más tarde hoy",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Chubascos fuertes",
+ "More weather for {adr}" : "Más información sobre del clima para {adr}",
+ "Loading weather" : "Cargando estado del clima",
+ "Set location for weather" : "Establecer ubicación para el clima",
+ "Remove from favorites" : "Eliminar de favoritos",
+ "Add as favorite" : "Añadir como favorito",
+ "You are not logged in." : "No ha iniciado sesión.",
+ "There was an error getting the weather status information." : "Ocurrió un error al obtener la información del estado del clima.",
+ "No weather information found" : "No se encontró información del estado del clima",
+ "Location not found" : "Ubicación no encontrada",
+ "There was an error setting the location address." : "Ocurrió un error al establecer la dirección de ubicación.",
+ "There was an error setting the location." : "Ocurrió un error al establecer la ubicación.",
+ "There was an error saving the mode." : "Ocurrió un error al guardar el modo.",
+ "There was an error using personal address." : "Ocurrió un error al usar la dirección personal.",
+ "Detect location" : "Detectar ubicación",
+ "Set custom address" : "Establecer dirección personalizada",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/et_EE.js b/apps/weather_status/l10n/et_EE.js
new file mode 100644
index 00000000000..938e84cce37
--- /dev/null
+++ b/apps/weather_status/l10n/et_EE.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Tundmatu aadress",
+ "No result." : "Vasteid ei leitud.",
+ "Malformed JSON data." : "Vigased JSON-andmed.",
+ "Error" : "Viga",
+ "Weather status" : "Hetke ilm",
+ "Weather status in your dashboard" : "Hetke ilm sinu avalehel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hetke ilm integreeritud Kodulehe äppi.\nGeograafilist asukohta saab määrata automaatselt või käsitsi. Näidatakse 6 tunni ennustust.\nSeda staatust saab integreerida ka teistesse kohtadesse nagu Kalendri rakendusse.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} hiljem taevas selge",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} taevas selge",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} hiljem taevas pilvine",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pilvine",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} täna hiljem lumi ja äike",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} lumi ja äike",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} täna hiljem lumesajud ja äike",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} lumesajud ja äike ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} täna hiljem lumesajud, äike ja polaaröö",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} lumesajud, äike ja polaaröö",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} täna hiljem lumesajud",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} lumesajud",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} täna hiljem lumesajud ja polaaröö",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} lumesajud ja polaaröö",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} täna hiljem lumi",
+ "{temperature} {unit} snow" : "{temperature} {unit} lumi",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} hiljem ilus ilm",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ilus ilm",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hiljem vahelduv pilvisus",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} vahelduv pilvisus",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} hiljem udune",
+ "{temperature} {unit} foggy" : "{temperature} {unit} udune",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} hiljem kerge vihm",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} kerge vihm",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} hiljem vihm",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} vihm",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hiljem tihe vihm",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} tihe vihm",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} hiljem hoovihm",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} hoovihm",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} hiljem kerge hoovihm",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} kerge hoovihm",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} hiljem tihe hoovihm",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} tihe hoovihm",
+ "More weather for {adr}" : "Rohkem ilmaandmeid {adr} jaoks",
+ "Loading weather" : "Ilmaennustuse laadimine",
+ "Set location for weather" : "Määra ilma jaoks asukoht",
+ "Remove from favorites" : "Eemalda lemmikutest",
+ "Add as favorite" : "Lisa lemmikuks",
+ "You are not logged in." : "Sa pole sisse logitud.",
+ "There was an error getting the weather status information." : "Ilmaandmete hankimisel esines viga.",
+ "No weather information found" : "Ilmaandmeid ei leitud",
+ "Location not found" : "Asukohta ei leitud",
+ "There was an error setting the location address." : "Asukoha aadressi määramisel esines viga.",
+ "There was an error setting the location." : "Asukoha määramisel esines viga.",
+ "There was an error saving the mode." : "Režiimi salvestamisel esines viga.",
+ "There was an error using personal address." : "Personaalse aadressi kasutamisel esines viga.",
+ "Unknown weather code" : "Tundmatu ilma kood",
+ "Detect location" : "Tuvasta asukoht",
+ "Set custom address" : "Määra aadress",
+ "Favorites" : "Lemmikud"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/et_EE.json b/apps/weather_status/l10n/et_EE.json
new file mode 100644
index 00000000000..e0bde250c28
--- /dev/null
+++ b/apps/weather_status/l10n/et_EE.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Tundmatu aadress",
+ "No result." : "Vasteid ei leitud.",
+ "Malformed JSON data." : "Vigased JSON-andmed.",
+ "Error" : "Viga",
+ "Weather status" : "Hetke ilm",
+ "Weather status in your dashboard" : "Hetke ilm sinu avalehel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hetke ilm integreeritud Kodulehe äppi.\nGeograafilist asukohta saab määrata automaatselt või käsitsi. Näidatakse 6 tunni ennustust.\nSeda staatust saab integreerida ka teistesse kohtadesse nagu Kalendri rakendusse.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} hiljem taevas selge",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} taevas selge",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} hiljem taevas pilvine",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pilvine",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} täna hiljem lumi ja äike",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} lumi ja äike",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} täna hiljem lumesajud ja äike",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} lumesajud ja äike ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} täna hiljem lumesajud, äike ja polaaröö",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} lumesajud, äike ja polaaröö",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} täna hiljem lumesajud",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} lumesajud",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} täna hiljem lumesajud ja polaaröö",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} lumesajud ja polaaröö",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} täna hiljem lumi",
+ "{temperature} {unit} snow" : "{temperature} {unit} lumi",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} hiljem ilus ilm",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ilus ilm",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hiljem vahelduv pilvisus",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} vahelduv pilvisus",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} hiljem udune",
+ "{temperature} {unit} foggy" : "{temperature} {unit} udune",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} hiljem kerge vihm",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} kerge vihm",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} hiljem vihm",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} vihm",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hiljem tihe vihm",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} tihe vihm",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} hiljem hoovihm",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} hoovihm",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} hiljem kerge hoovihm",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} kerge hoovihm",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} hiljem tihe hoovihm",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} tihe hoovihm",
+ "More weather for {adr}" : "Rohkem ilmaandmeid {adr} jaoks",
+ "Loading weather" : "Ilmaennustuse laadimine",
+ "Set location for weather" : "Määra ilma jaoks asukoht",
+ "Remove from favorites" : "Eemalda lemmikutest",
+ "Add as favorite" : "Lisa lemmikuks",
+ "You are not logged in." : "Sa pole sisse logitud.",
+ "There was an error getting the weather status information." : "Ilmaandmete hankimisel esines viga.",
+ "No weather information found" : "Ilmaandmeid ei leitud",
+ "Location not found" : "Asukohta ei leitud",
+ "There was an error setting the location address." : "Asukoha aadressi määramisel esines viga.",
+ "There was an error setting the location." : "Asukoha määramisel esines viga.",
+ "There was an error saving the mode." : "Režiimi salvestamisel esines viga.",
+ "There was an error using personal address." : "Personaalse aadressi kasutamisel esines viga.",
+ "Unknown weather code" : "Tundmatu ilma kood",
+ "Detect location" : "Tuvasta asukoht",
+ "Set custom address" : "Määra aadress",
+ "Favorites" : "Lemmikud"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/eu.js b/apps/weather_status/l10n/eu.js
new file mode 100644
index 00000000000..6f3cfd14749
--- /dev/null
+++ b/apps/weather_status/l10n/eu.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Helbide ezezaguna",
+ "No result." : "Emaitzarik ez.",
+ "Malformed JSON data." : "Gaizki eratutako JSON datuak.",
+ "Error" : "Errorea",
+ "Weather status" : "Eguraldiaren egoera",
+ "Weather status in your dashboard" : "Eguraldiaren egoera zure panelean",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Eguraldiaren egoera panelaren aplikazioan integratuta.\n Kokaleku geografikoa automatikoki zehaztu edo eskuz definitu daiteke. 6 orduko iragarpena bistaratzen da.\n Egoera hau Egutegia aplikazioa bezalako beste leku batzuetan ere txertatu daiteke.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} oskarbi egongo da geroago",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} oskarbi",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} hodeitsu egongo da geroago",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} hodeitsu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} elurra eta trumoiak egongo dira geroago",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit} elurra eta trumoiak",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature}{unit} elur zaparradak eta trumoiak egongo dira geroago",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit} elur zaparradak eta trumoiak",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} elur zaparradak, trumoiak eta ilunabar polarra egongo dira geroago",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} elur zaparradak, trumoiak eta ilunabar polarra",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} elur zaparradak egongo dira geroago",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} elur zaparradak",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} elur zaparradak eta ilunabar polarra egongo dira geroago",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} elur zaparradak eta ilunabar polarra",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} elurra geroago",
+ "{temperature} {unit} snow" : "{temperature} {unit} elurra",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} eguraldia hobetuko da geroago",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} eguraldi ona",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hodei-tarteak izango dira geroago",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} hodei-tarteak",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} lainotu egingo da geroago",
+ "{temperature} {unit} foggy" : "{temperature} {unit} lainotsu",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} eurite arina gaur beranduago",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} prezipitazio arina",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} prezipitazioa gaur beranduago",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} prezipitazioa",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} eurite handia gaur beranduago",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} euri-jasa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} euri zaparrada gaur beranduago",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} euri zaparradak gaur beranduago",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} zaparrada arinak gaur beranduago",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} zaparrada arinak",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} euri zaparrada handiak gaur beranduago",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} euri zaparrada handiak",
+ "More weather for {adr}" : "Eguraldi gehiago {adr}-(e)rako",
+ "Loading weather" : "Eguraldia kargatzen",
+ "Set location for weather" : "Ezarri kokalekua eguraldiarentzako",
+ "Remove from favorites" : "Kendu gogokoetatik",
+ "Add as favorite" : "Gehitu gogoko gisa",
+ "You are not logged in." : "Ez duzu saioa hasi.",
+ "There was an error getting the weather status information." : "Errore bat gertatu da eguraldiaren egoeraren informazioa eskuratzean.",
+ "No weather information found" : "Ez da eguraldiaren informaziorik aurkitu",
+ "Location not found" : "Ez da kokalekua aurkitu",
+ "There was an error setting the location address." : "Errore bat gertatu da kokalekuaren helbidea ezartzean.",
+ "There was an error setting the location." : "Errore bat gertatu da kokalekua ezartzean.",
+ "There was an error saving the mode." : "Errore bat gertatu da modua gordetzean.",
+ "There was an error using personal address." : "Errore bat gertatu da helbide pertsonala erabiltzean.",
+ "Unknown weather code" : "Eguraldi kode ezezaguna",
+ "Detect location" : "Detektatu kokalekua",
+ "Set custom address" : "Konfiguratu helbide pertsonalizatua",
+ "Favorites" : "Gogokoak"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/eu.json b/apps/weather_status/l10n/eu.json
new file mode 100644
index 00000000000..7a4e3d8c4b7
--- /dev/null
+++ b/apps/weather_status/l10n/eu.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Helbide ezezaguna",
+ "No result." : "Emaitzarik ez.",
+ "Malformed JSON data." : "Gaizki eratutako JSON datuak.",
+ "Error" : "Errorea",
+ "Weather status" : "Eguraldiaren egoera",
+ "Weather status in your dashboard" : "Eguraldiaren egoera zure panelean",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Eguraldiaren egoera panelaren aplikazioan integratuta.\n Kokaleku geografikoa automatikoki zehaztu edo eskuz definitu daiteke. 6 orduko iragarpena bistaratzen da.\n Egoera hau Egutegia aplikazioa bezalako beste leku batzuetan ere txertatu daiteke.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} oskarbi egongo da geroago",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} oskarbi",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} hodeitsu egongo da geroago",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} hodeitsu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} elurra eta trumoiak egongo dira geroago",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit} elurra eta trumoiak",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature}{unit} elur zaparradak eta trumoiak egongo dira geroago",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit} elur zaparradak eta trumoiak",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} elur zaparradak, trumoiak eta ilunabar polarra egongo dira geroago",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} elur zaparradak, trumoiak eta ilunabar polarra",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} elur zaparradak egongo dira geroago",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} elur zaparradak",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} elur zaparradak eta ilunabar polarra egongo dira geroago",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} elur zaparradak eta ilunabar polarra",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} elurra geroago",
+ "{temperature} {unit} snow" : "{temperature} {unit} elurra",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} eguraldia hobetuko da geroago",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} eguraldi ona",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hodei-tarteak izango dira geroago",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} hodei-tarteak",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} lainotu egingo da geroago",
+ "{temperature} {unit} foggy" : "{temperature} {unit} lainotsu",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} eurite arina gaur beranduago",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} prezipitazio arina",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} prezipitazioa gaur beranduago",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} prezipitazioa",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} eurite handia gaur beranduago",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} euri-jasa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} euri zaparrada gaur beranduago",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} euri zaparradak gaur beranduago",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} zaparrada arinak gaur beranduago",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} zaparrada arinak",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} euri zaparrada handiak gaur beranduago",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} euri zaparrada handiak",
+ "More weather for {adr}" : "Eguraldi gehiago {adr}-(e)rako",
+ "Loading weather" : "Eguraldia kargatzen",
+ "Set location for weather" : "Ezarri kokalekua eguraldiarentzako",
+ "Remove from favorites" : "Kendu gogokoetatik",
+ "Add as favorite" : "Gehitu gogoko gisa",
+ "You are not logged in." : "Ez duzu saioa hasi.",
+ "There was an error getting the weather status information." : "Errore bat gertatu da eguraldiaren egoeraren informazioa eskuratzean.",
+ "No weather information found" : "Ez da eguraldiaren informaziorik aurkitu",
+ "Location not found" : "Ez da kokalekua aurkitu",
+ "There was an error setting the location address." : "Errore bat gertatu da kokalekuaren helbidea ezartzean.",
+ "There was an error setting the location." : "Errore bat gertatu da kokalekua ezartzean.",
+ "There was an error saving the mode." : "Errore bat gertatu da modua gordetzean.",
+ "There was an error using personal address." : "Errore bat gertatu da helbide pertsonala erabiltzean.",
+ "Unknown weather code" : "Eguraldi kode ezezaguna",
+ "Detect location" : "Detektatu kokalekua",
+ "Set custom address" : "Konfiguratu helbide pertsonalizatua",
+ "Favorites" : "Gogokoak"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/fa.js b/apps/weather_status/l10n/fa.js
new file mode 100644
index 00000000000..077b3bc369d
--- /dev/null
+++ b/apps/weather_status/l10n/fa.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Unknown address",
+ "No result." : "بدون نتیجه.",
+ "Malformed JSON data." : "Malformed JSON data.",
+ "Error" : "خطا",
+ "Weather status" : "Weather status",
+ "Weather status in your dashboard" : "Weather status in your dashboard",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} clear sky later today",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} clear sky",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} cloudy later today",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} cloudy",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fair weather later today",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fair weather",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} partly cloudy later today",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} partly cloudy",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} foggy later today",
+ "{temperature} {unit} foggy" : "{temperature} {unit} foggy",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} light rainfall later today",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} light rainfall",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rainfall later today",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rainfall",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} heavy rainfall later today",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} heavy rainfall",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rainfall showers later today",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rainfall showers",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} light rainfall showers later today",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} light rainfall showers",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} heavy rainfall showers later today",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} heavy rainfall showers",
+ "More weather for {adr}" : "More weather for {adr}",
+ "Loading weather" : "Loading weather",
+ "Set location for weather" : "تنظیم مکان برای آب و هوا",
+ "Remove from favorites" : "حذف کردن از برگزیده ها",
+ "Add as favorite" : "Add as favorite",
+ "You are not logged in." : "You are not logged in.",
+ "There was an error getting the weather status information." : "There was an error getting the weather status information.",
+ "No weather information found" : "No weather information found",
+ "Location not found" : "Location not found",
+ "There was an error setting the location address." : "There was an error setting the location address.",
+ "There was an error setting the location." : "There was an error setting the location.",
+ "There was an error saving the mode." : "There was an error saving the mode.",
+ "There was an error using personal address." : "There was an error using personal address.",
+ "Detect location" : "Detect location",
+ "Set custom address" : "Set custom address",
+ "Favorites" : "مورد علاقه ها"
+},
+"nplurals=2; plural=(n > 1);");
diff --git a/apps/weather_status/l10n/fa.json b/apps/weather_status/l10n/fa.json
new file mode 100644
index 00000000000..2ddc9915b2b
--- /dev/null
+++ b/apps/weather_status/l10n/fa.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Unknown address",
+ "No result." : "بدون نتیجه.",
+ "Malformed JSON data." : "Malformed JSON data.",
+ "Error" : "خطا",
+ "Weather status" : "Weather status",
+ "Weather status in your dashboard" : "Weather status in your dashboard",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} clear sky later today",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} clear sky",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} cloudy later today",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} cloudy",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fair weather later today",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fair weather",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} partly cloudy later today",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} partly cloudy",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} foggy later today",
+ "{temperature} {unit} foggy" : "{temperature} {unit} foggy",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} light rainfall later today",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} light rainfall",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rainfall later today",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rainfall",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} heavy rainfall later today",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} heavy rainfall",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rainfall showers later today",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rainfall showers",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} light rainfall showers later today",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} light rainfall showers",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} heavy rainfall showers later today",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} heavy rainfall showers",
+ "More weather for {adr}" : "More weather for {adr}",
+ "Loading weather" : "Loading weather",
+ "Set location for weather" : "تنظیم مکان برای آب و هوا",
+ "Remove from favorites" : "حذف کردن از برگزیده ها",
+ "Add as favorite" : "Add as favorite",
+ "You are not logged in." : "You are not logged in.",
+ "There was an error getting the weather status information." : "There was an error getting the weather status information.",
+ "No weather information found" : "No weather information found",
+ "Location not found" : "Location not found",
+ "There was an error setting the location address." : "There was an error setting the location address.",
+ "There was an error setting the location." : "There was an error setting the location.",
+ "There was an error saving the mode." : "There was an error saving the mode.",
+ "There was an error using personal address." : "There was an error using personal address.",
+ "Detect location" : "Detect location",
+ "Set custom address" : "Set custom address",
+ "Favorites" : "مورد علاقه ها"
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/fi.js b/apps/weather_status/l10n/fi.js
new file mode 100644
index 00000000000..b6471c0db06
--- /dev/null
+++ b/apps/weather_status/l10n/fi.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Tuntematon osoite",
+ "No result." : "Ei tuloksia.",
+ "Malformed JSON data." : "Virheellinen JSON-data.",
+ "Error" : "Virhe",
+ "Weather status" : "Säätiedot",
+ "Weather status in your dashboard" : "Säätiedot kojelaudassa",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} selkeä taivas myöhemmin tänään",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} selkeä taivas",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} pilvistä myöhemmin tänään",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pilvistä",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} poutaa myöhemmin tänään",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} poutaa",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} puolipilvistä myöhemmin tänään",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} puolipilvistä",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} sumuista myöhemmin tänään",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sumuista",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} kevyt sadekuuro myöhemmin tänään",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} kevyt sadekuuro",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} sadekuuro myöhemmin tänään",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} sadekuuro",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} rankka sadekuuro myöhemmin tänään",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} rankka sadekuuro",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} sadekuuroja",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} kevyitä sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} kevyitä sadekuuroja",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} rankkoja sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} rankkoja sadekuuroja",
+ "More weather for {adr}" : "Lisää säätietoja kohteesta {adr}",
+ "Loading weather" : "Ladataan säätietoa",
+ "Set location for weather" : "Aseta sijainti säätiedoille",
+ "Remove from favorites" : "Poista suosikeista",
+ "Add as favorite" : "Lisää suosikiksi",
+ "You are not logged in." : "Et ole kirjautuneena sisään.",
+ "There was an error getting the weather status information." : "Säätietojen noudossa tapahtui virhe.",
+ "No weather information found" : "Säätietoja ei löytynyt",
+ "Location not found" : "Sijaintia ei löytynyt",
+ "There was an error setting the location address." : "Sijainnin osoitteen asettamisessa tapahtui virhe.",
+ "There was an error setting the location." : "Sijainnin asettamisessa tapahtui virhe.",
+ "There was an error saving the mode." : "Tilan tallennuksessa tapahtui virhe.",
+ "There was an error using personal address." : "Henkilökohtaisen osoitteen käytössä tapahtui virhe.",
+ "Detect location" : "Tunnista sijainti",
+ "Set custom address" : "Syötä osoite",
+ "Favorites" : "Suosikit"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/fi.json b/apps/weather_status/l10n/fi.json
new file mode 100644
index 00000000000..c714677f91b
--- /dev/null
+++ b/apps/weather_status/l10n/fi.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Tuntematon osoite",
+ "No result." : "Ei tuloksia.",
+ "Malformed JSON data." : "Virheellinen JSON-data.",
+ "Error" : "Virhe",
+ "Weather status" : "Säätiedot",
+ "Weather status in your dashboard" : "Säätiedot kojelaudassa",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} selkeä taivas myöhemmin tänään",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} selkeä taivas",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} pilvistä myöhemmin tänään",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pilvistä",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} poutaa myöhemmin tänään",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} poutaa",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} puolipilvistä myöhemmin tänään",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} puolipilvistä",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} sumuista myöhemmin tänään",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sumuista",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} kevyt sadekuuro myöhemmin tänään",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} kevyt sadekuuro",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} sadekuuro myöhemmin tänään",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} sadekuuro",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} rankka sadekuuro myöhemmin tänään",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} rankka sadekuuro",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} sadekuuroja",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} kevyitä sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} kevyitä sadekuuroja",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} rankkoja sadekuuroja myöhemmin tänään",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} rankkoja sadekuuroja",
+ "More weather for {adr}" : "Lisää säätietoja kohteesta {adr}",
+ "Loading weather" : "Ladataan säätietoa",
+ "Set location for weather" : "Aseta sijainti säätiedoille",
+ "Remove from favorites" : "Poista suosikeista",
+ "Add as favorite" : "Lisää suosikiksi",
+ "You are not logged in." : "Et ole kirjautuneena sisään.",
+ "There was an error getting the weather status information." : "Säätietojen noudossa tapahtui virhe.",
+ "No weather information found" : "Säätietoja ei löytynyt",
+ "Location not found" : "Sijaintia ei löytynyt",
+ "There was an error setting the location address." : "Sijainnin osoitteen asettamisessa tapahtui virhe.",
+ "There was an error setting the location." : "Sijainnin asettamisessa tapahtui virhe.",
+ "There was an error saving the mode." : "Tilan tallennuksessa tapahtui virhe.",
+ "There was an error using personal address." : "Henkilökohtaisen osoitteen käytössä tapahtui virhe.",
+ "Detect location" : "Tunnista sijainti",
+ "Set custom address" : "Syötä osoite",
+ "Favorites" : "Suosikit"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/fr.js b/apps/weather_status/l10n/fr.js
new file mode 100644
index 00000000000..ab7df98646b
--- /dev/null
+++ b/apps/weather_status/l10n/fr.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Adresse inconnue",
+ "No result." : "Aucun résultat",
+ "Malformed JSON data." : "Données JSON mal formées.",
+ "Error" : "Erreur",
+ "Weather status" : "Statut météo",
+ "Weather status in your dashboard" : "Statut météo sur votre tableau de bord",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Conditions météo intégrées à l’app Tableau de bord.\nLa position géographique peut être déterminée automatiquement ou définie manuellement. Une prévision à 6 heures est ensuite affichée.\nLa météo peut également être intégrée à d’autres emplacements comme l’app Calendrier.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ciel dégagé dans la journée",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Ciel dégagé",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Nuageux dans la journée",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nuageux",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neige et tonnerre plus tard dans la journée",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neige et tonnerre",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} averses de neige et tonnerre plus tard dans la journée",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} averses de neige et tonnerre",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} averses de neige, tonnerre et crépuscule polaire plus tard dans la journée",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} averses de neige, tonnerre et crépuscule polaire",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} averses de neige plus tard dans la journée",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} averses de neige",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} averses de neige et crépuscule polaire plus tard dans la journée",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} averses de neige et crépuscule polaire",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neige plus tard dans la journée",
+ "{temperature} {unit} snow" : "{temperature} {unit} neige",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Beau temps dans la journée",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Beau temps",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Partiellement nuageux dans la journée",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Partiellement nuageux",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Brouillard dans la journée",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Brouillard",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Pluie légère dans la journée",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Pluie légère",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Pluie dans la journée",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Pluie",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Fortes pluies dans la journée",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Fortes pluies",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Averses dans la journée",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Averses",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Faibles averses dans la journée",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Faibles averses",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Fortes averses dans la journée",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Fortes averses",
+ "More weather for {adr}" : "Plus de météo pour {adr}",
+ "Loading weather" : "Chargement de la météo",
+ "Set location for weather" : "Définir l'emplacement pour la météo",
+ "Remove from favorites" : "Retirer des favoris",
+ "Add as favorite" : "Ajouter comme favori",
+ "You are not logged in." : "Vous n'êtes pas connecté.",
+ "There was an error getting the weather status information." : "Une erreur s'est produite lors de l'obtention des informations sur l'état de la météo.",
+ "No weather information found" : "Aucune information météo",
+ "Location not found" : "Lieu non trouvé",
+ "There was an error setting the location address." : "Une erreur s'est produite lors de la définition de l'adresse de l'emplacement.",
+ "There was an error setting the location." : "Une erreur s'est produite lors de la définition de l'emplacement.",
+ "There was an error saving the mode." : "Une erreur s'est produite lors de l'enregistrement du mode.",
+ "There was an error using personal address." : "Une erreur s'est produite lors de l'utilisation de l'adresse personnelle.",
+ "Unknown weather code" : "Code météo inconnu",
+ "Detect location" : "Détecter la position",
+ "Set custom address" : "Définir une adresse personnalisée",
+ "Favorites" : "Favoris"
+},
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/fr.json b/apps/weather_status/l10n/fr.json
new file mode 100644
index 00000000000..5f5b0b86580
--- /dev/null
+++ b/apps/weather_status/l10n/fr.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Adresse inconnue",
+ "No result." : "Aucun résultat",
+ "Malformed JSON data." : "Données JSON mal formées.",
+ "Error" : "Erreur",
+ "Weather status" : "Statut météo",
+ "Weather status in your dashboard" : "Statut météo sur votre tableau de bord",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Conditions météo intégrées à l’app Tableau de bord.\nLa position géographique peut être déterminée automatiquement ou définie manuellement. Une prévision à 6 heures est ensuite affichée.\nLa météo peut également être intégrée à d’autres emplacements comme l’app Calendrier.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ciel dégagé dans la journée",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Ciel dégagé",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Nuageux dans la journée",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Nuageux",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neige et tonnerre plus tard dans la journée",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neige et tonnerre",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} averses de neige et tonnerre plus tard dans la journée",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} averses de neige et tonnerre",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} averses de neige, tonnerre et crépuscule polaire plus tard dans la journée",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} averses de neige, tonnerre et crépuscule polaire",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} averses de neige plus tard dans la journée",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} averses de neige",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} averses de neige et crépuscule polaire plus tard dans la journée",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} averses de neige et crépuscule polaire",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neige plus tard dans la journée",
+ "{temperature} {unit} snow" : "{temperature} {unit} neige",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Beau temps dans la journée",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Beau temps",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Partiellement nuageux dans la journée",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Partiellement nuageux",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Brouillard dans la journée",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Brouillard",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Pluie légère dans la journée",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Pluie légère",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Pluie dans la journée",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Pluie",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Fortes pluies dans la journée",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Fortes pluies",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Averses dans la journée",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Averses",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Faibles averses dans la journée",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Faibles averses",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Fortes averses dans la journée",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Fortes averses",
+ "More weather for {adr}" : "Plus de météo pour {adr}",
+ "Loading weather" : "Chargement de la météo",
+ "Set location for weather" : "Définir l'emplacement pour la météo",
+ "Remove from favorites" : "Retirer des favoris",
+ "Add as favorite" : "Ajouter comme favori",
+ "You are not logged in." : "Vous n'êtes pas connecté.",
+ "There was an error getting the weather status information." : "Une erreur s'est produite lors de l'obtention des informations sur l'état de la météo.",
+ "No weather information found" : "Aucune information météo",
+ "Location not found" : "Lieu non trouvé",
+ "There was an error setting the location address." : "Une erreur s'est produite lors de la définition de l'adresse de l'emplacement.",
+ "There was an error setting the location." : "Une erreur s'est produite lors de la définition de l'emplacement.",
+ "There was an error saving the mode." : "Une erreur s'est produite lors de l'enregistrement du mode.",
+ "There was an error using personal address." : "Une erreur s'est produite lors de l'utilisation de l'adresse personnelle.",
+ "Unknown weather code" : "Code météo inconnu",
+ "Detect location" : "Détecter la position",
+ "Set custom address" : "Définir une adresse personnalisée",
+ "Favorites" : "Favoris"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ga.js b/apps/weather_status/l10n/ga.js
new file mode 100644
index 00000000000..2892cb7477c
--- /dev/null
+++ b/apps/weather_status/l10n/ga.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Seoladh anaithnid",
+ "No result." : "Gan toradh.",
+ "Malformed JSON data." : "Sonraí JSON míchumtha.",
+ "Error" : "Earráid",
+ "Weather status" : "Stádas aimsire",
+ "Weather status in your dashboard" : "Stádas aimsire i do dheais",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stádas aimsire comhtháite san aip Deais.\nIs féidir an suíomh geografach a chinneadh go huathoibríoch nó a shainiú de láimh. Taispeántar réamhaisnéis 6 huaire ansin.\nIs féidir an stádas seo a chomhtháthú in áiteanna eile ar nós an aip Féilire.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} spéir shoiléir níos déanaí inniu",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} spéir shoiléir",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} scamallach níos déanaí inniu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} scamallach",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sneachta agus toirneach níos déanaí inniu",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sneachta agus toirneach",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ceathanna sneachta agus toirneach níos déanaí inniu",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} cithfholcadáin sneachta agus toirneach",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} cithfholcadáin sneachta, toirneach agus gealbhan gealaí níos déanaí inniu",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} cithfholcadáin sneachta, toirneach agus gealbhan gealaí",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ceathanna sneachta níos déanaí inniu",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} ceathanna sneachta",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} cithfholcadáin sneachta agus feannadh geal níos déanaí inniu",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}cithfholcadáin sneachta agus gealbhruthach",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sneachta níos déanaí inniu",
+ "{temperature} {unit} snow" : "{temperature} {unit} sneachta",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} aimsir chothrom níos déanaí inniu",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} aimsir chothrom",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} beagán scamallach níos déanaí inniu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} breacscamallach",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ceo níos déanaí inniu",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ceo",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} báisteach éadrom níos déanaí inniu",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} báisteach éadrom",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} báisteach níos déanaí inniu",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} báistí",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} báisteach throm níos déanaí inniu",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} báisteach throm",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ceathanna báistí níos déanaí inniu",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ceathanna báistí",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} ceathanna báistí éadrom níos déanaí inniu",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} cithfholcadáin báistí éadrom",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} cithfholcadáin báistí trom níos déanaí inniu",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} cithfholcadáin báistí trom",
+ "More weather for {adr}" : "Tuilleadh aimsire le haghaidh {adr}",
+ "Loading weather" : "Aimsir á lódáil",
+ "Set location for weather" : "Socraigh suíomh don aimsir",
+ "Remove from favorites" : "Bain ó cheanáin",
+ "Add as favorite" : "Cuir mar is fearr leat",
+ "You are not logged in." : "Níl tú logáilte isteach.",
+ "There was an error getting the weather status information." : "Tharla earráid agus an t-eolas ar stádas aimsire á fáil.",
+ "No weather information found" : "Níor aimsíodh aon eolas aimsire",
+ "Location not found" : "Suíomh gan aimsiú",
+ "There was an error setting the location address." : "Tharla earráid agus an seoladh suímh á shocrú.",
+ "There was an error setting the location." : "Tharla earráid agus an suíomh á shocrú.",
+ "There was an error saving the mode." : "Tharla earráid agus an mód á shábháil.",
+ "There was an error using personal address." : "Tharla earráid agus seoladh pearsanta á úsáid.",
+ "Unknown weather code" : "Cód anaithnid aimsire",
+ "Detect location" : "Braith suíomh",
+ "Set custom address" : "Socraigh seoladh saincheaptha",
+ "Favorites" : "Ceanáin"
+},
+"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
diff --git a/apps/weather_status/l10n/ga.json b/apps/weather_status/l10n/ga.json
new file mode 100644
index 00000000000..ff06cb85ef0
--- /dev/null
+++ b/apps/weather_status/l10n/ga.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Seoladh anaithnid",
+ "No result." : "Gan toradh.",
+ "Malformed JSON data." : "Sonraí JSON míchumtha.",
+ "Error" : "Earráid",
+ "Weather status" : "Stádas aimsire",
+ "Weather status in your dashboard" : "Stádas aimsire i do dheais",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stádas aimsire comhtháite san aip Deais.\nIs féidir an suíomh geografach a chinneadh go huathoibríoch nó a shainiú de láimh. Taispeántar réamhaisnéis 6 huaire ansin.\nIs féidir an stádas seo a chomhtháthú in áiteanna eile ar nós an aip Féilire.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} spéir shoiléir níos déanaí inniu",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} spéir shoiléir",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} scamallach níos déanaí inniu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} scamallach",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sneachta agus toirneach níos déanaí inniu",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sneachta agus toirneach",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ceathanna sneachta agus toirneach níos déanaí inniu",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} cithfholcadáin sneachta agus toirneach",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} cithfholcadáin sneachta, toirneach agus gealbhan gealaí níos déanaí inniu",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} cithfholcadáin sneachta, toirneach agus gealbhan gealaí",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ceathanna sneachta níos déanaí inniu",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} ceathanna sneachta",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} cithfholcadáin sneachta agus feannadh geal níos déanaí inniu",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}cithfholcadáin sneachta agus gealbhruthach",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sneachta níos déanaí inniu",
+ "{temperature} {unit} snow" : "{temperature} {unit} sneachta",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} aimsir chothrom níos déanaí inniu",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} aimsir chothrom",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} beagán scamallach níos déanaí inniu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} breacscamallach",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ceo níos déanaí inniu",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ceo",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} báisteach éadrom níos déanaí inniu",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} báisteach éadrom",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} báisteach níos déanaí inniu",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} báistí",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} báisteach throm níos déanaí inniu",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} báisteach throm",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} ceathanna báistí níos déanaí inniu",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ceathanna báistí",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} ceathanna báistí éadrom níos déanaí inniu",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} cithfholcadáin báistí éadrom",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} cithfholcadáin báistí trom níos déanaí inniu",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} cithfholcadáin báistí trom",
+ "More weather for {adr}" : "Tuilleadh aimsire le haghaidh {adr}",
+ "Loading weather" : "Aimsir á lódáil",
+ "Set location for weather" : "Socraigh suíomh don aimsir",
+ "Remove from favorites" : "Bain ó cheanáin",
+ "Add as favorite" : "Cuir mar is fearr leat",
+ "You are not logged in." : "Níl tú logáilte isteach.",
+ "There was an error getting the weather status information." : "Tharla earráid agus an t-eolas ar stádas aimsire á fáil.",
+ "No weather information found" : "Níor aimsíodh aon eolas aimsire",
+ "Location not found" : "Suíomh gan aimsiú",
+ "There was an error setting the location address." : "Tharla earráid agus an seoladh suímh á shocrú.",
+ "There was an error setting the location." : "Tharla earráid agus an suíomh á shocrú.",
+ "There was an error saving the mode." : "Tharla earráid agus an mód á shábháil.",
+ "There was an error using personal address." : "Tharla earráid agus seoladh pearsanta á úsáid.",
+ "Unknown weather code" : "Cód anaithnid aimsire",
+ "Detect location" : "Braith suíomh",
+ "Set custom address" : "Socraigh seoladh saincheaptha",
+ "Favorites" : "Ceanáin"
+},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/gl.js b/apps/weather_status/l10n/gl.js
new file mode 100644
index 00000000000..186de96a87c
--- /dev/null
+++ b/apps/weather_status/l10n/gl.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Enderezo descoñecido",
+ "No result." : "Sen resultados.",
+ "Malformed JSON data." : "Datos JSON con formato incorrecto.",
+ "Error" : "Erro",
+ "Weather status" : "Estado meteorolóxico",
+ "Weather status in your dashboard" : "Estado meteorolóxico no seu taboleiro",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado meteorolóxico integrado na aplicación do Taboleiro.\n A localización xeográfica do usuario pódese determinar automaticamente ou definir manualmente. A seguir amósase unha previsión de 6 horas.\n Este estado tamén se pode integrar noutros lugares como a aplicación Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ceo despexado hoxe máis tarde",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ceo despexado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nubrado hoxe máis tarde",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nubrado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e tronidos hoxe máis tarde",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e tronidos",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} nevariscas e tronidos hoxe máis tarde",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} nevariscas e tronidos",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} nevariscas, tronidos e crepúsculo polar hoxe máis tarde",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} nevariscas, tronidos e crepúsculo polar ",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} nevariscas hoxe máis tarde",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} nevariscas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} nevariscas e crepúsculo polar hoxe máis tarde",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} nevariscas e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve hoxe máis tarde",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bo tempo hoxe máis tarde",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bo tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nubrado hoxe máis tarde",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nuboso",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} néboa hoxe máis tarde",
+ "{temperature} {unit} foggy" : "{temperature} {unit} brumoso",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} choiva lene hoxe máis tarde",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} choiva lene",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} choiva hoxe máis tarde",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} choiva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} choiva forte hoxe máis tarde",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} choiva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} chuvascos hoxe máis tarde",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} chuvascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chuvascos lixeiros hoxe máis tarde",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chuvascos lixeiros",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} chuvascos fortes hoxe máis tarde",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} chuvascos fortes",
+ "More weather for {adr}" : "Máis previsións para {adr}",
+ "Loading weather" : "Cargando as previsións",
+ "Set location for weather" : "Definir a localización para as previsións meteorolóxicas",
+ "Remove from favorites" : "Retirar de favoritos",
+ "Add as favorite" : "Engadir como favorito",
+ "You are not logged in." : "Aínda non accedeu.",
+ "There was an error getting the weather status information." : "Produciuse un erro ao obter a información do estado do tempo.",
+ "No weather information found" : "Non se atopou información meteorolóxica",
+ "Location not found" : "Non se atopou a localización",
+ "There was an error setting the location address." : "Produciuse un erro ao axustar o enderezo da localización.",
+ "There was an error setting the location." : "Produciuse un erro ao axustar a localización",
+ "There was an error saving the mode." : "Produciuse un erro ao gardar o modo.",
+ "There was an error using personal address." : "Produciuse un erro ao usar o enderezo persoal.",
+ "Unknown weather code" : "Código meteorolóxico descoñecido",
+ "Detect location" : "Detectar localización",
+ "Set custom address" : "Definir o enderezo personalizado",
+ "Favorites" : "Favoritos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/gl.json b/apps/weather_status/l10n/gl.json
new file mode 100644
index 00000000000..2ba19344165
--- /dev/null
+++ b/apps/weather_status/l10n/gl.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Enderezo descoñecido",
+ "No result." : "Sen resultados.",
+ "Malformed JSON data." : "Datos JSON con formato incorrecto.",
+ "Error" : "Erro",
+ "Weather status" : "Estado meteorolóxico",
+ "Weather status in your dashboard" : "Estado meteorolóxico no seu taboleiro",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado meteorolóxico integrado na aplicación do Taboleiro.\n A localización xeográfica do usuario pódese determinar automaticamente ou definir manualmente. A seguir amósase unha previsión de 6 horas.\n Este estado tamén se pode integrar noutros lugares como a aplicación Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ceo despexado hoxe máis tarde",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ceo despexado",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nubrado hoxe máis tarde",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nubrado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e tronidos hoxe máis tarde",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e tronidos",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} nevariscas e tronidos hoxe máis tarde",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} nevariscas e tronidos",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} nevariscas, tronidos e crepúsculo polar hoxe máis tarde",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} nevariscas, tronidos e crepúsculo polar ",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} nevariscas hoxe máis tarde",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} nevariscas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} nevariscas e crepúsculo polar hoxe máis tarde",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} nevariscas e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve hoxe máis tarde",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bo tempo hoxe máis tarde",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bo tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nubrado hoxe máis tarde",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nuboso",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} néboa hoxe máis tarde",
+ "{temperature} {unit} foggy" : "{temperature} {unit} brumoso",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} choiva lene hoxe máis tarde",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} choiva lene",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} choiva hoxe máis tarde",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} choiva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} choiva forte hoxe máis tarde",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} choiva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} chuvascos hoxe máis tarde",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} chuvascos",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chuvascos lixeiros hoxe máis tarde",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chuvascos lixeiros",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} chuvascos fortes hoxe máis tarde",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} chuvascos fortes",
+ "More weather for {adr}" : "Máis previsións para {adr}",
+ "Loading weather" : "Cargando as previsións",
+ "Set location for weather" : "Definir a localización para as previsións meteorolóxicas",
+ "Remove from favorites" : "Retirar de favoritos",
+ "Add as favorite" : "Engadir como favorito",
+ "You are not logged in." : "Aínda non accedeu.",
+ "There was an error getting the weather status information." : "Produciuse un erro ao obter a información do estado do tempo.",
+ "No weather information found" : "Non se atopou información meteorolóxica",
+ "Location not found" : "Non se atopou a localización",
+ "There was an error setting the location address." : "Produciuse un erro ao axustar o enderezo da localización.",
+ "There was an error setting the location." : "Produciuse un erro ao axustar a localización",
+ "There was an error saving the mode." : "Produciuse un erro ao gardar o modo.",
+ "There was an error using personal address." : "Produciuse un erro ao usar o enderezo persoal.",
+ "Unknown weather code" : "Código meteorolóxico descoñecido",
+ "Detect location" : "Detectar localización",
+ "Set custom address" : "Definir o enderezo personalizado",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/hu.js b/apps/weather_status/l10n/hu.js
new file mode 100644
index 00000000000..1f1fa2a1487
--- /dev/null
+++ b/apps/weather_status/l10n/hu.js
@@ -0,0 +1,50 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Ismeretlen cím",
+ "No result." : "Nincs találat.",
+ "Malformed JSON data." : "Sérült JSON adatok.",
+ "Error" : "Hiba",
+ "Weather status" : "Időjárás állapota",
+ "Weather status in your dashboard" : "Időjárás állapota az irányítópulton",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Irányítópultba integrált időjárási állapot. A földrajzi helyzet meghatározható automatikusan vagy egyénileg beállítható. Ezután egy 6 órás előrejelzés lesz megjelenítve. Ez az információ máshol is megjeleníthető, például a Naptár alkalmazásban.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} tiszta égbolt a nap további részében",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} tiszta égbolt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} felhős a nap további részében",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} felhős",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} kellemes idő a nap további részében",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} kellemes idő",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} részben felhős a nap további részében",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} részben felhős",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ködös a nap további részében",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ködös",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} enyhe esőzés a nap további részében",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} enyhe esőzés",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} esőzés a nap további részében",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} esőzés",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kiadós esőzés a nap további részében",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kiadós esőzés",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} záporok a nap további részében",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} záporok",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} enyhe záporok a nap további részében",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} enyhe záporok",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kiadós záporok a nap további részében",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kiadós záporok",
+ "More weather for {adr}" : "További időjárás a következőhöz: {adr}",
+ "Loading weather" : "Időjárás betöltése",
+ "Set location for weather" : "Tartózkodási hely beállítása az időjáráshoz",
+ "Remove from favorites" : "Eltávolítás a kedvencekből",
+ "Add as favorite" : "Hozzáadás kedvencként",
+ "You are not logged in." : "Nincs bejelentkezve.",
+ "There was an error getting the weather status information." : "Hiba lépett fel az időjárási információk lekérése során.",
+ "No weather information found" : "Nem találhatók időjárási információk",
+ "Location not found" : "A hely nem található",
+ "There was an error setting the location address." : "Hiba történt a tartózkodási cím beállítása során.",
+ "There was an error setting the location." : "Hiba történt a tartózkodási hely beállítása során.",
+ "There was an error saving the mode." : "Hiba történt a mód mentése során.",
+ "There was an error using personal address." : "Hiba történt a személyes cím használata során.",
+ "Detect location" : "Helymeghatározás",
+ "Set custom address" : "Egyéni cím beállítása",
+ "Favorites" : "Kedvencek"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/hu.json b/apps/weather_status/l10n/hu.json
new file mode 100644
index 00000000000..ce3f603e14a
--- /dev/null
+++ b/apps/weather_status/l10n/hu.json
@@ -0,0 +1,48 @@
+{ "translations": {
+ "Unknown address" : "Ismeretlen cím",
+ "No result." : "Nincs találat.",
+ "Malformed JSON data." : "Sérült JSON adatok.",
+ "Error" : "Hiba",
+ "Weather status" : "Időjárás állapota",
+ "Weather status in your dashboard" : "Időjárás állapota az irányítópulton",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Irányítópultba integrált időjárási állapot. A földrajzi helyzet meghatározható automatikusan vagy egyénileg beállítható. Ezután egy 6 órás előrejelzés lesz megjelenítve. Ez az információ máshol is megjeleníthető, például a Naptár alkalmazásban.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} tiszta égbolt a nap további részében",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} tiszta égbolt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} felhős a nap további részében",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} felhős",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} kellemes idő a nap további részében",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} kellemes idő",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} részben felhős a nap további részében",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} részben felhős",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} ködös a nap további részében",
+ "{temperature} {unit} foggy" : "{temperature} {unit} ködös",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} enyhe esőzés a nap további részében",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} enyhe esőzés",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} esőzés a nap további részében",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} esőzés",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kiadós esőzés a nap további részében",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kiadós esőzés",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} záporok a nap további részében",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} záporok",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} enyhe záporok a nap további részében",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} enyhe záporok",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kiadós záporok a nap további részében",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kiadós záporok",
+ "More weather for {adr}" : "További időjárás a következőhöz: {adr}",
+ "Loading weather" : "Időjárás betöltése",
+ "Set location for weather" : "Tartózkodási hely beállítása az időjáráshoz",
+ "Remove from favorites" : "Eltávolítás a kedvencekből",
+ "Add as favorite" : "Hozzáadás kedvencként",
+ "You are not logged in." : "Nincs bejelentkezve.",
+ "There was an error getting the weather status information." : "Hiba lépett fel az időjárási információk lekérése során.",
+ "No weather information found" : "Nem találhatók időjárási információk",
+ "Location not found" : "A hely nem található",
+ "There was an error setting the location address." : "Hiba történt a tartózkodási cím beállítása során.",
+ "There was an error setting the location." : "Hiba történt a tartózkodási hely beállítása során.",
+ "There was an error saving the mode." : "Hiba történt a mód mentése során.",
+ "There was an error using personal address." : "Hiba történt a személyes cím használata során.",
+ "Detect location" : "Helymeghatározás",
+ "Set custom address" : "Egyéni cím beállítása",
+ "Favorites" : "Kedvencek"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/id.js b/apps/weather_status/l10n/id.js
new file mode 100644
index 00000000000..273665a19e8
--- /dev/null
+++ b/apps/weather_status/l10n/id.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Alamat tidak diketahui",
+ "No result." : "Tidak ada hasil.",
+ "Malformed JSON data." : "Data JSON tidak terbentuk dengan benar.",
+ "Error" : "Galat",
+ "Weather status" : "Status cuaca",
+ "Weather status in your dashboard" : "Status cuaca di dasbor Anda",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} langit cerah nanti pada hari ini",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} langit cerah",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} berawan nanti pada hari ini",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} berawan",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} cuaca cerah nanti pada hari ini",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} cuaca cerah",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} sebagian berawan nanti pada hari ini",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} sebagian berawan",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} berkabut nanti pada hari ini",
+ "{temperature} {unit} foggy" : "{temperature} {unit} berkabut",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} hujan ringan nanti pada hari ini",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} hujan ringan",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} hujan nanti pada hari ini",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} hujan",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hujan deras nanti pada hari ini",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hujan deras",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rintik hujan nanti pada hari ini",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rintik hujan",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} rintik hujan ringan nanti pada hari ini",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} rintik hujan ringan",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} rintik hujan deras nanti pada hari ini",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} rintik hujan deras",
+ "More weather for {adr}" : "Lebih banyak cuaca untuk {adr}",
+ "Loading weather" : "Memuat cuaca",
+ "Set location for weather" : "Atur lokasi untuk cuaca",
+ "Remove from favorites" : "Remove from favorites",
+ "Add as favorite" : "Tambahkan sebagai favorit",
+ "You are not logged in." : "Anda belum masuk.",
+ "There was an error getting the weather status information." : "Ada kesalahan mendapatkan informasi status cuaca.",
+ "No weather information found" : "Tidak ada informasi cuaca yang ditemukan",
+ "Location not found" : "Lokasi tidak ditemukan",
+ "There was an error setting the location address." : "Ada kesalahan menetapkan alamat lokasi.",
+ "There was an error setting the location." : "Ada kesalahan menetapkan lokasi.",
+ "There was an error saving the mode." : "Ada kesalahan menyimpan mode.",
+ "There was an error using personal address." : "Ada kesalahan menggunakan alamat pribadi.",
+ "Detect location" : "Deteksi lokasi",
+ "Set custom address" : "Tetapkan alamat kustom",
+ "Favorites" : "Disukai"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/id.json b/apps/weather_status/l10n/id.json
new file mode 100644
index 00000000000..7edd36da7d7
--- /dev/null
+++ b/apps/weather_status/l10n/id.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Alamat tidak diketahui",
+ "No result." : "Tidak ada hasil.",
+ "Malformed JSON data." : "Data JSON tidak terbentuk dengan benar.",
+ "Error" : "Galat",
+ "Weather status" : "Status cuaca",
+ "Weather status in your dashboard" : "Status cuaca di dasbor Anda",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} langit cerah nanti pada hari ini",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} langit cerah",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} berawan nanti pada hari ini",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} berawan",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} cuaca cerah nanti pada hari ini",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} cuaca cerah",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} sebagian berawan nanti pada hari ini",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} sebagian berawan",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} berkabut nanti pada hari ini",
+ "{temperature} {unit} foggy" : "{temperature} {unit} berkabut",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} hujan ringan nanti pada hari ini",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} hujan ringan",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} hujan nanti pada hari ini",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} hujan",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hujan deras nanti pada hari ini",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hujan deras",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rintik hujan nanti pada hari ini",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rintik hujan",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} rintik hujan ringan nanti pada hari ini",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} rintik hujan ringan",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} rintik hujan deras nanti pada hari ini",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} rintik hujan deras",
+ "More weather for {adr}" : "Lebih banyak cuaca untuk {adr}",
+ "Loading weather" : "Memuat cuaca",
+ "Set location for weather" : "Atur lokasi untuk cuaca",
+ "Remove from favorites" : "Remove from favorites",
+ "Add as favorite" : "Tambahkan sebagai favorit",
+ "You are not logged in." : "Anda belum masuk.",
+ "There was an error getting the weather status information." : "Ada kesalahan mendapatkan informasi status cuaca.",
+ "No weather information found" : "Tidak ada informasi cuaca yang ditemukan",
+ "Location not found" : "Lokasi tidak ditemukan",
+ "There was an error setting the location address." : "Ada kesalahan menetapkan alamat lokasi.",
+ "There was an error setting the location." : "Ada kesalahan menetapkan lokasi.",
+ "There was an error saving the mode." : "Ada kesalahan menyimpan mode.",
+ "There was an error using personal address." : "Ada kesalahan menggunakan alamat pribadi.",
+ "Detect location" : "Deteksi lokasi",
+ "Set custom address" : "Tetapkan alamat kustom",
+ "Favorites" : "Disukai"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/is.js b/apps/weather_status/l10n/is.js
new file mode 100644
index 00000000000..25952ce8ad5
--- /dev/null
+++ b/apps/weather_status/l10n/is.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Óþekkt vistfang",
+ "No result." : "Engar niðurstöður.",
+ "Malformed JSON data." : "Gölluð JSON-gögn.",
+ "Error" : "Villa",
+ "Weather status" : "Veðurlýsing",
+ "Weather status in your dashboard" : "Veðurlýsing á stjórnborðinu þínu",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Veðurupplýsingar innfelldar í stjórnborðsforritið.\n Hægt er að ákvarða staðsetningu sjálfvirkt eða handvirkt. Þá verður 6 klukkustunda veðurspá birt.\n Þessar upplýsingar má einnig samtvinna á öðrum stöðum eins og í dagatalsforritinu.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} heiðskírt seinnipartinn",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} heiðskírt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} skýjað seinnipartinn",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} skýjað",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snjókoma og þrumuveður seinnipartinn",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snjókoma og þrumuveður",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snjóél og þrumuveður seinnipartinn",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snjóél og þrumuveður",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snjóél, þrumuveður og dimmt seinnipartinn",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snjóél, þrumuveður og dimmt",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snjóél seinnipartinn",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snjóél",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snjóél og dimmt seinnipartinn",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snjóél og dimmt",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snjókoma seinnipartinn",
+ "{temperature} {unit} snow" : "{temperature} {unit} snjókpma",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bjartviðri seinnipartinn",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bjartviðri",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hálfskýjað seinnipartinn",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} hálfskýjað",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} þoka seinnipartinn",
+ "{temperature} {unit} foggy" : "{temperature} {unit} þoka",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dálítil rigning seinnipartinn",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} dálítil rigning",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rigning seinnipartinn",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rigning",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} talsverð rigning seinnipartinn",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} talsverð rigning",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} skúrir seinnipartinn",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} skúrir",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dálitlir skúrir seinnipartinn",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} dálitlir skúrir",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} talsverðir skúrir seinnipartinn",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} talsverðir skúrir",
+ "More weather for {adr}" : "Nánari veðurgögn fyrir {adr}",
+ "Loading weather" : "Hleð inn veðurlýsingu",
+ "Set location for weather" : "Stilla staðsetningu fyrir veður",
+ "Remove from favorites" : "Fjarlægja úr eftirlætum",
+ "Add as favorite" : "Bæta við sem eftirlæti",
+ "You are not logged in." : "Þú ert ekki skráð/ur inn.",
+ "There was an error getting the weather status information." : "Villa kom upp við að ná í veðurupplýsingar.",
+ "No weather information found" : "Engar veðurupplýsingar fundust",
+ "Location not found" : "Staðsetningin fannst ekki",
+ "There was an error setting the location address." : "Það kom upp villa við að stilla staðinn.",
+ "There was an error setting the location." : "Það kom upp villa við að stilla staðsetninguna.",
+ "There was an error saving the mode." : "Það kom upp villa við að vista haminn.",
+ "There was an error using personal address." : "Það kom upp villa við að nota persónulegt heimilisfang.",
+ "Unknown weather code" : "Óþekktur veðurkóði",
+ "Detect location" : "Finna staðsetningu",
+ "Set custom address" : "Setja sérsniðið heimilisfang",
+ "Favorites" : "Eftirlæti"
+},
+"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/weather_status/l10n/is.json b/apps/weather_status/l10n/is.json
new file mode 100644
index 00000000000..d0351763786
--- /dev/null
+++ b/apps/weather_status/l10n/is.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Óþekkt vistfang",
+ "No result." : "Engar niðurstöður.",
+ "Malformed JSON data." : "Gölluð JSON-gögn.",
+ "Error" : "Villa",
+ "Weather status" : "Veðurlýsing",
+ "Weather status in your dashboard" : "Veðurlýsing á stjórnborðinu þínu",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Veðurupplýsingar innfelldar í stjórnborðsforritið.\n Hægt er að ákvarða staðsetningu sjálfvirkt eða handvirkt. Þá verður 6 klukkustunda veðurspá birt.\n Þessar upplýsingar má einnig samtvinna á öðrum stöðum eins og í dagatalsforritinu.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} heiðskírt seinnipartinn",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} heiðskírt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} skýjað seinnipartinn",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} skýjað",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snjókoma og þrumuveður seinnipartinn",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snjókoma og þrumuveður",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snjóél og þrumuveður seinnipartinn",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snjóél og þrumuveður",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snjóél, þrumuveður og dimmt seinnipartinn",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snjóél, þrumuveður og dimmt",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snjóél seinnipartinn",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snjóél",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snjóél og dimmt seinnipartinn",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snjóél og dimmt",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snjókoma seinnipartinn",
+ "{temperature} {unit} snow" : "{temperature} {unit} snjókpma",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bjartviðri seinnipartinn",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bjartviðri",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} hálfskýjað seinnipartinn",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} hálfskýjað",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} þoka seinnipartinn",
+ "{temperature} {unit} foggy" : "{temperature} {unit} þoka",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dálítil rigning seinnipartinn",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} dálítil rigning",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} rigning seinnipartinn",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} rigning",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} talsverð rigning seinnipartinn",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} talsverð rigning",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} skúrir seinnipartinn",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} skúrir",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dálitlir skúrir seinnipartinn",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} dálitlir skúrir",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} talsverðir skúrir seinnipartinn",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} talsverðir skúrir",
+ "More weather for {adr}" : "Nánari veðurgögn fyrir {adr}",
+ "Loading weather" : "Hleð inn veðurlýsingu",
+ "Set location for weather" : "Stilla staðsetningu fyrir veður",
+ "Remove from favorites" : "Fjarlægja úr eftirlætum",
+ "Add as favorite" : "Bæta við sem eftirlæti",
+ "You are not logged in." : "Þú ert ekki skráð/ur inn.",
+ "There was an error getting the weather status information." : "Villa kom upp við að ná í veðurupplýsingar.",
+ "No weather information found" : "Engar veðurupplýsingar fundust",
+ "Location not found" : "Staðsetningin fannst ekki",
+ "There was an error setting the location address." : "Það kom upp villa við að stilla staðinn.",
+ "There was an error setting the location." : "Það kom upp villa við að stilla staðsetninguna.",
+ "There was an error saving the mode." : "Það kom upp villa við að vista haminn.",
+ "There was an error using personal address." : "Það kom upp villa við að nota persónulegt heimilisfang.",
+ "Unknown weather code" : "Óþekktur veðurkóði",
+ "Detect location" : "Finna staðsetningu",
+ "Set custom address" : "Setja sérsniðið heimilisfang",
+ "Favorites" : "Eftirlæti"
+},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/it.js b/apps/weather_status/l10n/it.js
new file mode 100644
index 00000000000..f84b510b4ff
--- /dev/null
+++ b/apps/weather_status/l10n/it.js
@@ -0,0 +1,53 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Indirizzo sconosciuto",
+ "No result." : "Nessun risultato.",
+ "Malformed JSON data." : "Dati JSON non validi.",
+ "Error" : "Errore",
+ "Weather status" : "Stato meteo",
+ "Weather status in your dashboard" : "Stato meteo nel tuo cruscotto",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Meteo integrato nell'applicazione del cruscotto.\n La posizione geografica può essere determinata automaticamente o definita a mano. Vengono poi mostrate previsioni per 6 ore.\n Questo stato può anche essere integrato in altri posti come nell'applicazione Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cielo sereno più tardi in giornata",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cielo sereno",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nuvoloso più tardi in giornata",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nuvoloso",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve più tardi oggi",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bel tempo più tardi in giornata",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bel tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parzialmente nuvoloso più tardi in giornata",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parzialmente nuvoloso",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nebbioso più tardi in giornata",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebbioso",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} deboli precipitazioni più tardi oggi",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} precipitazioni deboli",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pioggia più tardi oggi",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} precipitazioni",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} forti precipitazioni più tardi oggi",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} forti precipitazioni",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rovesci di pioggia",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} deboli rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} deboli rovesci di pioggia",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} forti rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} forti rovesci di pioggia",
+ "More weather for {adr}" : "Altro meteo per {adr}",
+ "Loading weather" : "Caricamento meteo",
+ "Set location for weather" : "Imposta la località per il meteo",
+ "Remove from favorites" : "Rimuovi dai preferiti",
+ "Add as favorite" : "Aggiungi come preferito",
+ "You are not logged in." : "Accesso non effettuato.",
+ "There was an error getting the weather status information." : "Si è verificato un errore durante il recupero delle informazioni meteo.",
+ "No weather information found" : "Nessuna informazione meteo trovata",
+ "Location not found" : "Località non trovata",
+ "There was an error setting the location address." : "Si è verificato un errore impostando l'indirizzo della località.",
+ "There was an error setting the location." : "Si è verificato un errore durante l'impostazione della località.",
+ "There was an error saving the mode." : "Si è verificato un errore durante il salvataggio della modalità.",
+ "There was an error using personal address." : "Si è verificato un errore usando l'indirizzo personale.",
+ "Unknown weather code" : "Codice meteo sconosciuto",
+ "Detect location" : "Elimina località",
+ "Set custom address" : "Imposta indirizzo personalizzato",
+ "Favorites" : "Preferiti"
+},
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/it.json b/apps/weather_status/l10n/it.json
new file mode 100644
index 00000000000..3e7eedc7f57
--- /dev/null
+++ b/apps/weather_status/l10n/it.json
@@ -0,0 +1,51 @@
+{ "translations": {
+ "Unknown address" : "Indirizzo sconosciuto",
+ "No result." : "Nessun risultato.",
+ "Malformed JSON data." : "Dati JSON non validi.",
+ "Error" : "Errore",
+ "Weather status" : "Stato meteo",
+ "Weather status in your dashboard" : "Stato meteo nel tuo cruscotto",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Meteo integrato nell'applicazione del cruscotto.\n La posizione geografica può essere determinata automaticamente o definita a mano. Vengono poi mostrate previsioni per 6 ore.\n Questo stato può anche essere integrato in altri posti come nell'applicazione Calendario.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cielo sereno più tardi in giornata",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cielo sereno",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nuvoloso più tardi in giornata",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nuvoloso",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve più tardi oggi",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bel tempo più tardi in giornata",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bel tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parzialmente nuvoloso più tardi in giornata",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parzialmente nuvoloso",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nebbioso più tardi in giornata",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nebbioso",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} deboli precipitazioni più tardi oggi",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} precipitazioni deboli",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} pioggia più tardi oggi",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} precipitazioni",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} forti precipitazioni più tardi oggi",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} forti precipitazioni",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} rovesci di pioggia",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} deboli rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} deboli rovesci di pioggia",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} forti rovesci di pioggia più tardi oggi",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} forti rovesci di pioggia",
+ "More weather for {adr}" : "Altro meteo per {adr}",
+ "Loading weather" : "Caricamento meteo",
+ "Set location for weather" : "Imposta la località per il meteo",
+ "Remove from favorites" : "Rimuovi dai preferiti",
+ "Add as favorite" : "Aggiungi come preferito",
+ "You are not logged in." : "Accesso non effettuato.",
+ "There was an error getting the weather status information." : "Si è verificato un errore durante il recupero delle informazioni meteo.",
+ "No weather information found" : "Nessuna informazione meteo trovata",
+ "Location not found" : "Località non trovata",
+ "There was an error setting the location address." : "Si è verificato un errore impostando l'indirizzo della località.",
+ "There was an error setting the location." : "Si è verificato un errore durante l'impostazione della località.",
+ "There was an error saving the mode." : "Si è verificato un errore durante il salvataggio della modalità.",
+ "There was an error using personal address." : "Si è verificato un errore usando l'indirizzo personale.",
+ "Unknown weather code" : "Codice meteo sconosciuto",
+ "Detect location" : "Elimina località",
+ "Set custom address" : "Imposta indirizzo personalizzato",
+ "Favorites" : "Preferiti"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ja.js b/apps/weather_status/l10n/ja.js
new file mode 100644
index 00000000000..7bcc65eed01
--- /dev/null
+++ b/apps/weather_status/l10n/ja.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "アドレスが見つかりません",
+ "No result." : "結果なし",
+ "Malformed JSON data." : "JSONデータの形式に誤りがあります",
+ "Error" : "エラー",
+ "Weather status" : "現在の天気",
+ "Weather status in your dashboard" : "ダッシュボードにおける天気の表示",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "天気ウィジットはダッシュボードアプリに統合されています。\n 地理的な位置は、自動的に決定することも、手動で定義することもできます。 そして6時間の予報が表示されます\n このステータスは、カレンダーアプリのような他の場所にも統合できます。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日遅く快晴",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 快晴",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日遅く曇り",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 曇り",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日遅くに雪と雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 雪と雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日遅くににわか雪と雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} にわか雪と雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日遅く、にわか雪と雷、極地の薄暮",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} にわか雪と雷、極地の薄暮",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日遅くにわか雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} にわか雪 ",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日遅くにわか雪と極地の薄暮",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} にわか雪と極地の薄暮 ",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日遅く雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 雪 ",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日遅く晴れ",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 晴れ",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日遅く所々曇り",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 所々曇り",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日遅く霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日遅く小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日遅く雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日遅く大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日遅くにわか雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} にわか雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日遅く小雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日遅く大雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 大雨",
+ "More weather for {adr}" : "{adr} の詳しい天気",
+ "Loading weather" : "天気を読み込み中",
+ "Set location for weather" : "天気の地域設定",
+ "Remove from favorites" : "お気に入りから削除",
+ "Add as favorite" : "お気に入りに追加",
+ "You are not logged in." : "ログインしていません",
+ "There was an error getting the weather status information." : "天気情報取得時にエラーが発生しました",
+ "No weather information found" : "天気情報が見つかりません",
+ "Location not found" : "地域が見つかりません",
+ "There was an error setting the location address." : "住所設定時にエラーが発生しました",
+ "There was an error setting the location." : "地域設定時にエラーが発生しました",
+ "There was an error saving the mode." : "モードの保存時にエラーが発生しました",
+ "There was an error using personal address." : "個人の住所使用時にエラーが発生しました",
+ "Unknown weather code" : "不明な気象コード",
+ "Detect location" : "地域を検出",
+ "Set custom address" : "地域を入力",
+ "Favorites" : "お気に入り"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/ja.json b/apps/weather_status/l10n/ja.json
new file mode 100644
index 00000000000..5ff669ca4ee
--- /dev/null
+++ b/apps/weather_status/l10n/ja.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "アドレスが見つかりません",
+ "No result." : "結果なし",
+ "Malformed JSON data." : "JSONデータの形式に誤りがあります",
+ "Error" : "エラー",
+ "Weather status" : "現在の天気",
+ "Weather status in your dashboard" : "ダッシュボードにおける天気の表示",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "天気ウィジットはダッシュボードアプリに統合されています。\n 地理的な位置は、自動的に決定することも、手動で定義することもできます。 そして6時間の予報が表示されます\n このステータスは、カレンダーアプリのような他の場所にも統合できます。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日遅く快晴",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 快晴",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日遅く曇り",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 曇り",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日遅くに雪と雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 雪と雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日遅くににわか雪と雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} にわか雪と雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日遅く、にわか雪と雷、極地の薄暮",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} にわか雪と雷、極地の薄暮",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日遅くにわか雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} にわか雪 ",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日遅くにわか雪と極地の薄暮",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} にわか雪と極地の薄暮 ",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日遅く雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 雪 ",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日遅く晴れ",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 晴れ",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日遅く所々曇り",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 所々曇り",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日遅く霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日遅く小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日遅く雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日遅く大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日遅くにわか雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} にわか雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日遅く小雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日遅く大雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 大雨",
+ "More weather for {adr}" : "{adr} の詳しい天気",
+ "Loading weather" : "天気を読み込み中",
+ "Set location for weather" : "天気の地域設定",
+ "Remove from favorites" : "お気に入りから削除",
+ "Add as favorite" : "お気に入りに追加",
+ "You are not logged in." : "ログインしていません",
+ "There was an error getting the weather status information." : "天気情報取得時にエラーが発生しました",
+ "No weather information found" : "天気情報が見つかりません",
+ "Location not found" : "地域が見つかりません",
+ "There was an error setting the location address." : "住所設定時にエラーが発生しました",
+ "There was an error setting the location." : "地域設定時にエラーが発生しました",
+ "There was an error saving the mode." : "モードの保存時にエラーが発生しました",
+ "There was an error using personal address." : "個人の住所使用時にエラーが発生しました",
+ "Unknown weather code" : "不明な気象コード",
+ "Detect location" : "地域を検出",
+ "Set custom address" : "地域を入力",
+ "Favorites" : "お気に入り"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ko.js b/apps/weather_status/l10n/ko.js
new file mode 100644
index 00000000000..9af97446624
--- /dev/null
+++ b/apps/weather_status/l10n/ko.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "알 수 없는 주소",
+ "No result." : "결과 없음.",
+ "Malformed JSON data." : "잘못 구성된 JSON 데이터.",
+ "Error" : "오류",
+ "Weather status" : "날씨 현황",
+ "Weather status in your dashboard" : "내 대시보드에 있는 날씨 현황",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 오늘 오후 늦게 맑음",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 맑음",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 흐림 ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 흐림 ",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 눈",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 천둥·번개를 동반한 눈",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 소나기눈",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 천둥·번개를 동반한 소나기눈",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개와 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 천둥·번개와 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기눈",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 소나기눈",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 오늘 오후 늦게 눈",
+ "{temperature} {unit} snow" : "{temperature} {unit} 눈",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 오늘 오후 늦게 맑음",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 맑음",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 구름 조금",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 구름 조금",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 오늘 오후 늦게 안개",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 안개",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 약한 비",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 약한 비",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 비",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 비",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 거센 비",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 거센 비",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 소나기",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 약한 소나기",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 약한 소나기",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 거센 소나기",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 거센 소나기",
+ "More weather for {adr}" : "{adr} 날씨 더 보기",
+ "Loading weather" : "날씨 불러오는 중",
+ "Set location for weather" : "날씨 위치 설정",
+ "Remove from favorites" : "즐겨찾기에서 제거",
+ "Add as favorite" : "즐겨찾기로 추가",
+ "You are not logged in." : "당신은 로그인하지 않았습니다.",
+ "There was an error getting the weather status information." : "날씨 현황 정보를 불러오는 동안 오류가 발생했습니다.",
+ "No weather information found" : "날씨 정보 없음",
+ "Location not found" : "위치를 찾을 수 없습니다.",
+ "There was an error setting the location address." : "이 위치의 주소를 설정하는 동안 오류가 발생했습니다.",
+ "There was an error setting the location." : "주소를 설정하는 동안 오류가 발생했습니다.",
+ "There was an error saving the mode." : "모드 저장에 오류가 있습니다.",
+ "There was an error using personal address." : "개인 주소를 사용하는 동안 오류가 발생했습니다.",
+ "Unknown weather code" : "알 수 없는 날씨 코드",
+ "Detect location" : "위치 감지",
+ "Set custom address" : "주소 설정",
+ "Favorites" : "즐겨찾기"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/ko.json b/apps/weather_status/l10n/ko.json
new file mode 100644
index 00000000000..1a7bbaa4d64
--- /dev/null
+++ b/apps/weather_status/l10n/ko.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "알 수 없는 주소",
+ "No result." : "결과 없음.",
+ "Malformed JSON data." : "잘못 구성된 JSON 데이터.",
+ "Error" : "오류",
+ "Weather status" : "날씨 현황",
+ "Weather status in your dashboard" : "내 대시보드에 있는 날씨 현황",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 오늘 오후 늦게 맑음",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 맑음",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 흐림 ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 흐림 ",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 눈",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 천둥·번개를 동반한 눈",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 소나기눈",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 천둥·번개를 동반한 소나기눈",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개와 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 천둥·번개와 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기눈",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 소나기눈",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 극야를 동반한 소나기눈",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 오늘 오후 늦게 눈",
+ "{temperature} {unit} snow" : "{temperature} {unit} 눈",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 오늘 오후 늦게 맑음",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 맑음",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 구름 조금",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 구름 조금",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 오늘 오후 늦게 안개",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 안개",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 약한 비",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 약한 비",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 비",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 비",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 거센 비",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 거센 비",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 소나기",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 약한 소나기",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 약한 소나기",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 거센 소나기",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 거센 소나기",
+ "More weather for {adr}" : "{adr} 날씨 더 보기",
+ "Loading weather" : "날씨 불러오는 중",
+ "Set location for weather" : "날씨 위치 설정",
+ "Remove from favorites" : "즐겨찾기에서 제거",
+ "Add as favorite" : "즐겨찾기로 추가",
+ "You are not logged in." : "당신은 로그인하지 않았습니다.",
+ "There was an error getting the weather status information." : "날씨 현황 정보를 불러오는 동안 오류가 발생했습니다.",
+ "No weather information found" : "날씨 정보 없음",
+ "Location not found" : "위치를 찾을 수 없습니다.",
+ "There was an error setting the location address." : "이 위치의 주소를 설정하는 동안 오류가 발생했습니다.",
+ "There was an error setting the location." : "주소를 설정하는 동안 오류가 발생했습니다.",
+ "There was an error saving the mode." : "모드 저장에 오류가 있습니다.",
+ "There was an error using personal address." : "개인 주소를 사용하는 동안 오류가 발생했습니다.",
+ "Unknown weather code" : "알 수 없는 날씨 코드",
+ "Detect location" : "위치 감지",
+ "Set custom address" : "주소 설정",
+ "Favorites" : "즐겨찾기"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/lt_LT.js b/apps/weather_status/l10n/lt_LT.js
new file mode 100644
index 00000000000..33c5da2f443
--- /dev/null
+++ b/apps/weather_status/l10n/lt_LT.js
@@ -0,0 +1,51 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Nežinomas adresas",
+ "No result." : "Nėra rezultatų.",
+ "Malformed JSON data." : "Netaisyklingi JSON duomenys.",
+ "Error" : "Klaida",
+ "Weather status" : "Orų būsena",
+ "Weather status in your dashboard" : "Orų būsena jūsų skydelyje",
+ "{temperature} {unit} clear sky later today" : "Šiandien vėliau bus {temperature} {unit}, giedra",
+ "{temperature} {unit} clear sky" : "{temperature} {unit}, giedra",
+ "{temperature} {unit} cloudy later today" : "Šiandien vėliau bus {temperature} {unit}, debesuota",
+ "{temperature} {unit} cloudy" : "{temperature} {unit}, debesuota",
+ "{temperature} {unit} snow" : "{temperature} {unit}, sniegas",
+ "{temperature} {unit} fair weather later today" : "Šiandien vėliau bus {temperature} {unit}, mažai debesuota",
+ "{temperature} {unit} fair weather" : "{temperature} {unit}, mažai debesuota",
+ "{temperature} {unit} partly cloudy later today" : "Šiandien vėliau bus {temperature} {unit}, su pragiedruliais",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit}, su pragiedruliais",
+ "{temperature} {unit} foggy later today" : "Šiandien vėliau bus {temperature} {unit}, ūkanota",
+ "{temperature} {unit} foggy" : "{temperature} {unit}, ūkanota",
+ "{temperature} {unit} light rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, silpnas lietus",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit}, silpnas lietus",
+ "{temperature} {unit} rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, lietus",
+ "{temperature} {unit} rainfall" : "{temperature} {unit}, lietus",
+ "{temperature} {unit} heavy rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, stiprus lietus",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit}, stiprus lietus",
+ "{temperature} {unit} rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, liūtys",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit}, liūtys",
+ "{temperature} {unit} light rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, silpnos liūtys",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit}, silpnos liūtys",
+ "{temperature} {unit} heavy rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, stiprios liūtys",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}, stiprios liūtys",
+ "More weather for {adr}" : "Daugiau orų ties {adr}",
+ "Loading weather" : "Įkeliami orai",
+ "Set location for weather" : "Nustatyti vietą orams",
+ "Remove from favorites" : "Šalinti iš mėgstamų",
+ "Add as favorite" : "Pridėti kaip mėgstamą",
+ "You are not logged in." : "Jūs nesate prisijungę.",
+ "There was an error getting the weather status information." : "Gaunant orų būsenos informaciją, įvyko klaida.",
+ "No weather information found" : "Nerasta jokios informacijos apie orus",
+ "Location not found" : "Vieta nerasta",
+ "There was an error setting the location address." : "Nustatant vietos adresą, įvyko klaida.",
+ "There was an error setting the location." : "Nustatant vietą, įvyko klaida.",
+ "There was an error saving the mode." : "Įrašant veikseną, įvyko klaida.",
+ "There was an error using personal address." : "Naudojant asmeninį adresą, įvyko klaida.",
+ "Unknown weather code" : "Nežinomas orų kodas",
+ "Detect location" : "Aptikti vietą",
+ "Set custom address" : "Nustatyti tinkintą adresą",
+ "Favorites" : "Mėgstamos"
+},
+"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/weather_status/l10n/lt_LT.json b/apps/weather_status/l10n/lt_LT.json
new file mode 100644
index 00000000000..2d9ed7daaae
--- /dev/null
+++ b/apps/weather_status/l10n/lt_LT.json
@@ -0,0 +1,49 @@
+{ "translations": {
+ "Unknown address" : "Nežinomas adresas",
+ "No result." : "Nėra rezultatų.",
+ "Malformed JSON data." : "Netaisyklingi JSON duomenys.",
+ "Error" : "Klaida",
+ "Weather status" : "Orų būsena",
+ "Weather status in your dashboard" : "Orų būsena jūsų skydelyje",
+ "{temperature} {unit} clear sky later today" : "Šiandien vėliau bus {temperature} {unit}, giedra",
+ "{temperature} {unit} clear sky" : "{temperature} {unit}, giedra",
+ "{temperature} {unit} cloudy later today" : "Šiandien vėliau bus {temperature} {unit}, debesuota",
+ "{temperature} {unit} cloudy" : "{temperature} {unit}, debesuota",
+ "{temperature} {unit} snow" : "{temperature} {unit}, sniegas",
+ "{temperature} {unit} fair weather later today" : "Šiandien vėliau bus {temperature} {unit}, mažai debesuota",
+ "{temperature} {unit} fair weather" : "{temperature} {unit}, mažai debesuota",
+ "{temperature} {unit} partly cloudy later today" : "Šiandien vėliau bus {temperature} {unit}, su pragiedruliais",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit}, su pragiedruliais",
+ "{temperature} {unit} foggy later today" : "Šiandien vėliau bus {temperature} {unit}, ūkanota",
+ "{temperature} {unit} foggy" : "{temperature} {unit}, ūkanota",
+ "{temperature} {unit} light rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, silpnas lietus",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit}, silpnas lietus",
+ "{temperature} {unit} rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, lietus",
+ "{temperature} {unit} rainfall" : "{temperature} {unit}, lietus",
+ "{temperature} {unit} heavy rainfall later today" : "Šiandien vėliau bus {temperature} {unit}, stiprus lietus",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit}, stiprus lietus",
+ "{temperature} {unit} rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, liūtys",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit}, liūtys",
+ "{temperature} {unit} light rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, silpnos liūtys",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit}, silpnos liūtys",
+ "{temperature} {unit} heavy rainfall showers later today" : "Šiandien vėliau bus {temperature} {unit}, stiprios liūtys",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}, stiprios liūtys",
+ "More weather for {adr}" : "Daugiau orų ties {adr}",
+ "Loading weather" : "Įkeliami orai",
+ "Set location for weather" : "Nustatyti vietą orams",
+ "Remove from favorites" : "Šalinti iš mėgstamų",
+ "Add as favorite" : "Pridėti kaip mėgstamą",
+ "You are not logged in." : "Jūs nesate prisijungę.",
+ "There was an error getting the weather status information." : "Gaunant orų būsenos informaciją, įvyko klaida.",
+ "No weather information found" : "Nerasta jokios informacijos apie orus",
+ "Location not found" : "Vieta nerasta",
+ "There was an error setting the location address." : "Nustatant vietos adresą, įvyko klaida.",
+ "There was an error setting the location." : "Nustatant vietą, įvyko klaida.",
+ "There was an error saving the mode." : "Įrašant veikseną, įvyko klaida.",
+ "There was an error using personal address." : "Naudojant asmeninį adresą, įvyko klaida.",
+ "Unknown weather code" : "Nežinomas orų kodas",
+ "Detect location" : "Aptikti vietą",
+ "Set custom address" : "Nustatyti tinkintą adresą",
+ "Favorites" : "Mėgstamos"
+},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/lv.js b/apps/weather_status/l10n/lv.js
new file mode 100644
index 00000000000..4ae9d443890
--- /dev/null
+++ b/apps/weather_status/l10n/lv.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Nezināma adrese",
+ "No result." : "Nav iznākuma.",
+ "Malformed JSON data." : "Nepareizi veidoti JSON dati.",
+ "Error" : "Kļūda",
+ "Weather status" : "Laikapstākļu stāvoklis",
+ "Weather status in your dashboard" : "Laikapstākļu stāvoklis informācijas panelī",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Laikapstākļu stāvoklis iekļauts informācijas paneļa lietotnē.\nĢeogrāfiskā atrašanās vieta var tikt automātiski noteikta vai pašrocīgi norādīta. Tad tiek attēlota 6 stundu prognoze.\nŠis stāvoklis var tikt ievietots arī citās vietās, piemēram, kalendāra lietotnē.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} skaidras debesis vēlāk šodien",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} skaidras debesis",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} mākoņains vēlāk šodien",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} mākoņains",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sniegs un pērkons vēlāk šodien",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sniegs un pērkons",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} sniega brāzmas un pērkons vēlāk šodien",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sniega brāzmas un pērkons",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} sniega brāzmas, pērkons un polārā krēsla vēlāk šodien",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sniega brāzmas, pērkons un polārā krēsla",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} sniega brāzmas vēlāk šodien",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sniega brāzmas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} sniega brāzmas un polārā krēsla vēlāk šodien",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sniega brāzmas un polārā krēsla",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sniegs vēlāk šodien",
+ "{temperature} {unit} snow" : "{temperature} {unit} sniegs",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} labi laikapstākļi vēlāk šodien",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} labi laikapstākļi",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} daļēji mākoņains vēlāk šodien",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} daļēji mākoņains",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} miglains vēlāk šodien",
+ "{temperature} {unit} foggy" : "{temperature} {unit} miglains",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} viegli nokrišņi vēlāk šodien",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} viegli nokrišņi",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} nokrišņi vēlāk šodien",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} nokrišņi",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} spēcīgi nokrišņi vēlāk šodien",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} spēcīgi nokrišņi",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} nokrišņu brāzmas",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} vieglas nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} vieglas nokrišņu brāzmas",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} spēcīgas nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} spēcīgas nokrišņu brāzmas",
+ "More weather for {adr}" : "Vairāk laikapstākļu datu par {adr}",
+ "Loading weather" : "Ielādē laikapstākļus",
+ "Set location for weather" : "Iestatīt atrašanās vietu laikapstākļiem",
+ "Remove from favorites" : "Noņemt no izlases",
+ "Add as favorite" : "Pievienot izlasei",
+ "You are not logged in." : "Tu neesi pieteicies.",
+ "There was an error getting the weather status information." : "Atgadījās kļūda laikapstākļu stāvokļa informācijas iegūšanā.",
+ "No weather information found" : "Netika atrasta informācija par laikapstākļiem",
+ "Location not found" : "Atrašanās vieta nav atrasta",
+ "There was an error setting the location address." : "Atgadījās kļūda atrašanās vietas adreses iestatīšanā.",
+ "There was an error setting the location." : "Atgadījās kļūda atrašanās vietas iestatīšanā.",
+ "There was an error saving the mode." : "Atgadījās kļūda režīma saglabāšanā.",
+ "There was an error using personal address." : "Atgadījās kļūda personīgās adreses izmantošanā.",
+ "Unknown weather code" : "Nezināms laikapstākļu kods",
+ "Detect location" : "Noteikt atrašanās vietu",
+ "Set custom address" : "Iestatīt pielāgotu adresi",
+ "Favorites" : "Izlase"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/weather_status/l10n/lv.json b/apps/weather_status/l10n/lv.json
new file mode 100644
index 00000000000..69a346be390
--- /dev/null
+++ b/apps/weather_status/l10n/lv.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Nezināma adrese",
+ "No result." : "Nav iznākuma.",
+ "Malformed JSON data." : "Nepareizi veidoti JSON dati.",
+ "Error" : "Kļūda",
+ "Weather status" : "Laikapstākļu stāvoklis",
+ "Weather status in your dashboard" : "Laikapstākļu stāvoklis informācijas panelī",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Laikapstākļu stāvoklis iekļauts informācijas paneļa lietotnē.\nĢeogrāfiskā atrašanās vieta var tikt automātiski noteikta vai pašrocīgi norādīta. Tad tiek attēlota 6 stundu prognoze.\nŠis stāvoklis var tikt ievietots arī citās vietās, piemēram, kalendāra lietotnē.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} skaidras debesis vēlāk šodien",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} skaidras debesis",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} mākoņains vēlāk šodien",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} mākoņains",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} sniegs un pērkons vēlāk šodien",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sniegs un pērkons",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} sniega brāzmas un pērkons vēlāk šodien",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sniega brāzmas un pērkons",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} sniega brāzmas, pērkons un polārā krēsla vēlāk šodien",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sniega brāzmas, pērkons un polārā krēsla",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} sniega brāzmas vēlāk šodien",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sniega brāzmas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} sniega brāzmas un polārā krēsla vēlāk šodien",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sniega brāzmas un polārā krēsla",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} sniegs vēlāk šodien",
+ "{temperature} {unit} snow" : "{temperature} {unit} sniegs",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} labi laikapstākļi vēlāk šodien",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} labi laikapstākļi",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} daļēji mākoņains vēlāk šodien",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} daļēji mākoņains",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} miglains vēlāk šodien",
+ "{temperature} {unit} foggy" : "{temperature} {unit} miglains",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} viegli nokrišņi vēlāk šodien",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} viegli nokrišņi",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} nokrišņi vēlāk šodien",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} nokrišņi",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} spēcīgi nokrišņi vēlāk šodien",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} spēcīgi nokrišņi",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} nokrišņu brāzmas",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} vieglas nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} vieglas nokrišņu brāzmas",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} spēcīgas nokrišņu brāzmas vēlāk šodien",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} spēcīgas nokrišņu brāzmas",
+ "More weather for {adr}" : "Vairāk laikapstākļu datu par {adr}",
+ "Loading weather" : "Ielādē laikapstākļus",
+ "Set location for weather" : "Iestatīt atrašanās vietu laikapstākļiem",
+ "Remove from favorites" : "Noņemt no izlases",
+ "Add as favorite" : "Pievienot izlasei",
+ "You are not logged in." : "Tu neesi pieteicies.",
+ "There was an error getting the weather status information." : "Atgadījās kļūda laikapstākļu stāvokļa informācijas iegūšanā.",
+ "No weather information found" : "Netika atrasta informācija par laikapstākļiem",
+ "Location not found" : "Atrašanās vieta nav atrasta",
+ "There was an error setting the location address." : "Atgadījās kļūda atrašanās vietas adreses iestatīšanā.",
+ "There was an error setting the location." : "Atgadījās kļūda atrašanās vietas iestatīšanā.",
+ "There was an error saving the mode." : "Atgadījās kļūda režīma saglabāšanā.",
+ "There was an error using personal address." : "Atgadījās kļūda personīgās adreses izmantošanā.",
+ "Unknown weather code" : "Nezināms laikapstākļu kods",
+ "Detect location" : "Noteikt atrašanās vietu",
+ "Set custom address" : "Iestatīt pielāgotu adresi",
+ "Favorites" : "Izlase"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/mk.js b/apps/weather_status/l10n/mk.js
new file mode 100644
index 00000000000..101ab96451c
--- /dev/null
+++ b/apps/weather_status/l10n/mk.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Немозната адреса",
+ "No result." : "Нема резултати.",
+ "Malformed JSON data." : "Лошо формирани JSON податоци.",
+ "Error" : "Грешка",
+ "Weather status" : "Временска прогноза",
+ "Weather status in your dashboard" : "Временска прогноза на вашата табла",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ведро небо подоцна денеска",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Ведро небо",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Облачно подоцна денеска",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Облачно",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Убаво време подоцна денеска",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Убаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Променливо облачно подоцна денеска",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Променливо облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Магливо подоцна денеска",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Магливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Слаби врнежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Врнежи од дожд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Обилни врнежи од дожд",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Врнежи од дожд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Слаби врнежи",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Обилни врнежи од дожд",
+ "More weather for {adr}" : "Повеќе информации за временската прогноза за {adr}",
+ "Loading weather" : "Вчитување на временска прогноза",
+ "Set location for weather" : "Поставете локација за временска прогноза",
+ "Remove from favorites" : "Отстрани од фаворити",
+ "Add as favorite" : "Додади во омилени",
+ "You are not logged in." : "Не сте најавени",
+ "There was an error getting the weather status information." : "Настана грешка при вчитување на инфорнации за временска прогноза.",
+ "No weather information found" : "Не се пронајдени информации за временската прогноза",
+ "Location not found" : "Локацијата не е пронајдена",
+ "There was an error setting the location address." : "Настана грешка при поставување на адреса на локација.",
+ "There was an error setting the location." : "Настана грешка при поставување на локација.",
+ "There was an error saving the mode." : "Грешка при зачувување.",
+ "There was an error using personal address." : "Настана грешка при користење на сопствена адреса.",
+ "Detect location" : "Детектирај локација",
+ "Set custom address" : "Поставете адреса",
+ "Favorites" : "Омилени"
+},
+"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/weather_status/l10n/mk.json b/apps/weather_status/l10n/mk.json
new file mode 100644
index 00000000000..86d922f8b5b
--- /dev/null
+++ b/apps/weather_status/l10n/mk.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Немозната адреса",
+ "No result." : "Нема резултати.",
+ "Malformed JSON data." : "Лошо формирани JSON податоци.",
+ "Error" : "Грешка",
+ "Weather status" : "Временска прогноза",
+ "Weather status in your dashboard" : "Временска прогноза на вашата табла",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ведро небо подоцна денеска",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} Ведро небо",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} Облачно подоцна денеска",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} Облачно",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} Убаво време подоцна денеска",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} Убаво време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Променливо облачно подоцна денеска",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} Променливо облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} Магливо подоцна денеска",
+ "{temperature} {unit} foggy" : "{temperature} {unit} Магливо",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} Слаби врнежи",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} Врнежи од дожд",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Обилни врнежи од дожд",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} Врнежи од дожд",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Слаби врнежи",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Обилни врнежи од дожд",
+ "More weather for {adr}" : "Повеќе информации за временската прогноза за {adr}",
+ "Loading weather" : "Вчитување на временска прогноза",
+ "Set location for weather" : "Поставете локација за временска прогноза",
+ "Remove from favorites" : "Отстрани од фаворити",
+ "Add as favorite" : "Додади во омилени",
+ "You are not logged in." : "Не сте најавени",
+ "There was an error getting the weather status information." : "Настана грешка при вчитување на инфорнации за временска прогноза.",
+ "No weather information found" : "Не се пронајдени информации за временската прогноза",
+ "Location not found" : "Локацијата не е пронајдена",
+ "There was an error setting the location address." : "Настана грешка при поставување на адреса на локација.",
+ "There was an error setting the location." : "Настана грешка при поставување на локација.",
+ "There was an error saving the mode." : "Грешка при зачувување.",
+ "There was an error using personal address." : "Настана грешка при користење на сопствена адреса.",
+ "Detect location" : "Детектирај локација",
+ "Set custom address" : "Поставете адреса",
+ "Favorites" : "Омилени"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/nb.js b/apps/weather_status/l10n/nb.js
new file mode 100644
index 00000000000..f42d93d4061
--- /dev/null
+++ b/apps/weather_status/l10n/nb.js
@@ -0,0 +1,50 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Ukjent adresse",
+ "No result." : "Ingen resultat.",
+ "Malformed JSON data." : "Feilaktige JSON-data.",
+ "Error" : "Feil",
+ "Weather status" : "Værstatus",
+ "Weather status in your dashboard" : "Værstatus i dashbordet ditt",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Værstatus integrert i Dashboard-appen.\n Den geografiske plasseringen kan bestemmes automatisk eller defineres manuelt. En 6 timers prognose vises deretter.\n Denne statusen kan også integreres andre steder som Kalender-appen.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} klar himmel senere i dag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} klar himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} overksyet senere i dag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} overskyet",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fint vær senere i dag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fint vær",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} delvis skyet senere i dag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delvis skyet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} tåkete senere i dag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} tåkete",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lett nedbør senere i dag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lett nedør",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} nedbør senere i dag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} nedbør",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kraftig nedbør senere i dag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kraftig nedbør",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regnbyger senere i dag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regnbyger",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lett regnbyger senere i dag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lett regnbyger",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kraftige regnbyger senere i dag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kraftige regnbyger",
+ "More weather for {adr}" : "Mer vær for {adr}",
+ "Loading weather" : "Laster vær",
+ "Set location for weather" : "Angi posisjon for været",
+ "Remove from favorites" : "Fjern fra favoritter",
+ "Add as favorite" : "Legg til som favoritt",
+ "You are not logged in." : "Du er ikke logget inn.",
+ "There was an error getting the weather status information." : "Det oppsto en feil ved å hente værstatusinformasjonen.",
+ "No weather information found" : "Ingen værinformasjon funnet",
+ "Location not found" : "Finner ikke posisjon",
+ "There was an error setting the location address." : "Det oppsto en feil ved å angi posisjonsadressen.",
+ "There was an error setting the location." : "Det oppsto en feil ved å angi posisjonen.",
+ "There was an error saving the mode." : "Det oppsto en feil da modusen skulle lagres.",
+ "There was an error using personal address." : "Det oppsto en feil ved bruk av personlig adresse.",
+ "Detect location" : "Oppdag plassering",
+ "Set custom address" : "Angi egendefinert adresse",
+ "Favorites" : "Favoritter"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/nb.json b/apps/weather_status/l10n/nb.json
new file mode 100644
index 00000000000..714f8a37727
--- /dev/null
+++ b/apps/weather_status/l10n/nb.json
@@ -0,0 +1,48 @@
+{ "translations": {
+ "Unknown address" : "Ukjent adresse",
+ "No result." : "Ingen resultat.",
+ "Malformed JSON data." : "Feilaktige JSON-data.",
+ "Error" : "Feil",
+ "Weather status" : "Værstatus",
+ "Weather status in your dashboard" : "Værstatus i dashbordet ditt",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Værstatus integrert i Dashboard-appen.\n Den geografiske plasseringen kan bestemmes automatisk eller defineres manuelt. En 6 timers prognose vises deretter.\n Denne statusen kan også integreres andre steder som Kalender-appen.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} klar himmel senere i dag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} klar himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} overksyet senere i dag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} overskyet",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} fint vær senere i dag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} fint vær",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} delvis skyet senere i dag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delvis skyet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} tåkete senere i dag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} tåkete",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lett nedbør senere i dag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lett nedør",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} nedbør senere i dag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} nedbør",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kraftig nedbør senere i dag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} kraftig nedbør",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regnbyger senere i dag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regnbyger",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lett regnbyger senere i dag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lett regnbyger",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kraftige regnbyger senere i dag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} kraftige regnbyger",
+ "More weather for {adr}" : "Mer vær for {adr}",
+ "Loading weather" : "Laster vær",
+ "Set location for weather" : "Angi posisjon for været",
+ "Remove from favorites" : "Fjern fra favoritter",
+ "Add as favorite" : "Legg til som favoritt",
+ "You are not logged in." : "Du er ikke logget inn.",
+ "There was an error getting the weather status information." : "Det oppsto en feil ved å hente værstatusinformasjonen.",
+ "No weather information found" : "Ingen værinformasjon funnet",
+ "Location not found" : "Finner ikke posisjon",
+ "There was an error setting the location address." : "Det oppsto en feil ved å angi posisjonsadressen.",
+ "There was an error setting the location." : "Det oppsto en feil ved å angi posisjonen.",
+ "There was an error saving the mode." : "Det oppsto en feil da modusen skulle lagres.",
+ "There was an error using personal address." : "Det oppsto en feil ved bruk av personlig adresse.",
+ "Detect location" : "Oppdag plassering",
+ "Set custom address" : "Angi egendefinert adresse",
+ "Favorites" : "Favoritter"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/nl.js b/apps/weather_status/l10n/nl.js
new file mode 100644
index 00000000000..44c10c74402
--- /dev/null
+++ b/apps/weather_status/l10n/nl.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Onbekend adres",
+ "No result." : "Geen resultaat.",
+ "Malformed JSON data." : "Onjuist opgemaakte JSON-gegevens.",
+ "Error" : "Fout",
+ "Weather status" : "Weerstatus",
+ "Weather status in your dashboard" : "Weerstatus in je dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Weerstatus geïntegreerd in de Dashboard-app.\n De geografische locatie kan automatisch worden bepaald of handmatig worden gedefinieerd. Vervolgens wordt een voorspelling van 6 uur weergegeven.\n Deze status kan ook op andere plaatsen worden geïntegreerd, zoals de Agenda-app.",
+ "{temperature} {unit} clear sky later today" : "{temperature}{unit} later vandaag onbewolkt ",
+ "{temperature} {unit} clear sky" : "{temperature}{unit} onbewolkt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bewolkt later vandaag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bewolkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} sneeuw en onweer later vandaag",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit} sneeuw en onweer",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} sneeuwbuien en onweer later vandaag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sneeuwbuien en onweer",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} sneeuwbuien, onweer en poolschemering later vandaag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sneeuwbuien, onweer en poolschemering",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snow showers later today",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sneeuwbuien",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} sneeuwbuien en poolschemering later vandaag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sneeuwbuien en poolschemering",
+ "{temperature} {unit} snow later today" : "{temperature}{unit} sneeuw later vandaag",
+ "{temperature} {unit} snow" : "{temperature}{unit}sneeuw",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} lekker weer later vandaag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} lekker weer",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} half bewolkt later vandaag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} half bewolkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} mistig later vandaag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mistig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lichte regen later vandaag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lichte regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} regen later vandaag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} zware regen later vandaag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} zware regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regenbuien later vandaag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regenbuien",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lichte regenbuien later vandaag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lichte regenbuien",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} zware regenbuien later vandaag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} zware regenbuien",
+ "More weather for {adr}" : "Meer weer voor {adr}",
+ "Loading weather" : "Weergegevens ophalen",
+ "Set location for weather" : "Stel je locatie voor het weer in.",
+ "Remove from favorites" : "Verwijderen uit favorieten",
+ "Add as favorite" : "Toevoegen als favoriet",
+ "You are not logged in." : "Je bent niet ingelogd.",
+ "There was an error getting the weather status information." : "Er is een fout opgetreden bij het ophalen van de weerinformatie.",
+ "No weather information found" : "Geen weer informatie gevonden.",
+ "Location not found" : "Locatie niet gevonden",
+ "There was an error setting the location address." : "Er is een fout opgetreden bij het zetten van het locatie adres.",
+ "There was an error setting the location." : "Er is een fout opgetreden bij het vastleggen van de locatie.",
+ "There was an error saving the mode." : "Er was een fout in het vastleggen van de modus.",
+ "There was an error using personal address." : "Er was een fout bij het gebruiken van je persoonlijke adres.",
+ "Unknown weather code" : "Onbekende weercode",
+ "Detect location" : "Locatie detecteren",
+ "Set custom address" : "Aangepast adres instellen",
+ "Favorites" : "Favorieten"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/nl.json b/apps/weather_status/l10n/nl.json
new file mode 100644
index 00000000000..2786990bf5c
--- /dev/null
+++ b/apps/weather_status/l10n/nl.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Onbekend adres",
+ "No result." : "Geen resultaat.",
+ "Malformed JSON data." : "Onjuist opgemaakte JSON-gegevens.",
+ "Error" : "Fout",
+ "Weather status" : "Weerstatus",
+ "Weather status in your dashboard" : "Weerstatus in je dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Weerstatus geïntegreerd in de Dashboard-app.\n De geografische locatie kan automatisch worden bepaald of handmatig worden gedefinieerd. Vervolgens wordt een voorspelling van 6 uur weergegeven.\n Deze status kan ook op andere plaatsen worden geïntegreerd, zoals de Agenda-app.",
+ "{temperature} {unit} clear sky later today" : "{temperature}{unit} later vandaag onbewolkt ",
+ "{temperature} {unit} clear sky" : "{temperature}{unit} onbewolkt",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bewolkt later vandaag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bewolkt",
+ "{temperature} {unit} snow and thunder later today" : "{temperature}{unit} sneeuw en onweer later vandaag",
+ "{temperature} {unit} snow and thunder" : "{temperature}{unit} sneeuw en onweer",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} sneeuwbuien en onweer later vandaag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} sneeuwbuien en onweer",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} sneeuwbuien, onweer en poolschemering later vandaag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} sneeuwbuien, onweer en poolschemering",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snow showers later today",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} sneeuwbuien",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} sneeuwbuien en poolschemering later vandaag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} sneeuwbuien en poolschemering",
+ "{temperature} {unit} snow later today" : "{temperature}{unit} sneeuw later vandaag",
+ "{temperature} {unit} snow" : "{temperature}{unit}sneeuw",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} lekker weer later vandaag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} lekker weer",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} half bewolkt later vandaag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} half bewolkt",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} mistig later vandaag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mistig",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lichte regen later vandaag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lichte regen",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} regen later vandaag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} regen",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} zware regen later vandaag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} zware regen",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} regenbuien later vandaag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} regenbuien",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lichte regenbuien later vandaag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lichte regenbuien",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} zware regenbuien later vandaag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} zware regenbuien",
+ "More weather for {adr}" : "Meer weer voor {adr}",
+ "Loading weather" : "Weergegevens ophalen",
+ "Set location for weather" : "Stel je locatie voor het weer in.",
+ "Remove from favorites" : "Verwijderen uit favorieten",
+ "Add as favorite" : "Toevoegen als favoriet",
+ "You are not logged in." : "Je bent niet ingelogd.",
+ "There was an error getting the weather status information." : "Er is een fout opgetreden bij het ophalen van de weerinformatie.",
+ "No weather information found" : "Geen weer informatie gevonden.",
+ "Location not found" : "Locatie niet gevonden",
+ "There was an error setting the location address." : "Er is een fout opgetreden bij het zetten van het locatie adres.",
+ "There was an error setting the location." : "Er is een fout opgetreden bij het vastleggen van de locatie.",
+ "There was an error saving the mode." : "Er was een fout in het vastleggen van de modus.",
+ "There was an error using personal address." : "Er was een fout bij het gebruiken van je persoonlijke adres.",
+ "Unknown weather code" : "Onbekende weercode",
+ "Detect location" : "Locatie detecteren",
+ "Set custom address" : "Aangepast adres instellen",
+ "Favorites" : "Favorieten"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/pl.js b/apps/weather_status/l10n/pl.js
new file mode 100644
index 00000000000..d30fa34c75c
--- /dev/null
+++ b/apps/weather_status/l10n/pl.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Nieznany adres",
+ "No result." : "Brak wyników.",
+ "Malformed JSON data." : "Nieprawidłowe dane JSON.",
+ "Error" : "Błąd",
+ "Weather status" : "Stan pogody",
+ "Weather status in your dashboard" : "Stan pogody na pulpicie",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Status pogody zintegrowany z aplikacją Panelu.\nPołożenie geograficzne może być automatycznie ustalane lub ręcznie definiowane. Wyświetlana jest prognoza na 6 godzin.\nStatus może być również integrowany z innymi aplikacjami, takimi jak Kalendarz.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bezchmurne niebo później dzisiaj",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} czyste niebo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} pochmurno później dzisiaj",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pochmurno",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} śnieg i burza później dziś",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} śnieg i burza",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} przelotne opady śniegu i burza później dziś",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} przelotne opady śniegu i burza",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} przelotne opady śniegu, burza i zmierzch polarny później dziś",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} przelotne opady śniegu, burza i zmierzch polarny",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} przelotne opady śniegu później dziś",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} przelotne opady śniegu",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} przelotne opady śniegu i zmierzch polarny później dziś",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} przelotne opady śniegu i zmierzch polarny",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} śnieg później dziś",
+ "{temperature} {unit} snow" : "{temperature} {unit} śnieg",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} ładna pogoda później dzisiaj",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ładna pogoda",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} częściowe zachmurzenie później dzisiaj",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} częściowe zachmurzenie",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} mgła później dzisiaj",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mgła",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lekkie opady deszczu później dzisiaj",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lekkie opady deszczu",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} opady deszczu później dzisiaj",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} opady deszczu",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} ulewne opady deszczu później dzisiaj",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} ulewne opady deszczu",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} przelotne opady deszczu później dzisiaj",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} przelotne opady deszczu",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lekkie przelotne opady deszczu później dzisiaj",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lekkie przelotne opady deszczu",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} obfite opady deszczu później dzisiaj",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} ulewne opady deszczu",
+ "More weather for {adr}" : "Więcej pogody dla {adr}",
+ "Loading weather" : "Wczytywanie pogody",
+ "Set location for weather" : "Ustaw lokalizację dla pogody",
+ "Remove from favorites" : "Usuń z ulubionych",
+ "Add as favorite" : "Dodaj jako ulubione",
+ "You are not logged in." : "Nie jesteś zalogowany.",
+ "There was an error getting the weather status information." : "Wystąpił błąd podczas pobierania informacji o stanie pogody.",
+ "No weather information found" : "Nie znaleziono informacji o pogodzie",
+ "Location not found" : "Nie znaleziono lokalizacji",
+ "There was an error setting the location address." : "Wystąpił błąd podczas ustawiania adresu lokalizacji.",
+ "There was an error setting the location." : "Wystąpił błąd podczas ustawiania lokalizacji.",
+ "There was an error saving the mode." : "Wystąpił błąd podczas zapisywania trybu.",
+ "There was an error using personal address." : "Wystąpił błąd podczas korzystania z własnego adresu.",
+ "Unknown weather code" : "Nieznany kod pogodowy",
+ "Detect location" : "Wykryj lokalizację",
+ "Set custom address" : "Ustaw adres własny",
+ "Favorites" : "Ulubione"
+},
+"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/weather_status/l10n/pl.json b/apps/weather_status/l10n/pl.json
new file mode 100644
index 00000000000..427c89fa8ac
--- /dev/null
+++ b/apps/weather_status/l10n/pl.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Nieznany adres",
+ "No result." : "Brak wyników.",
+ "Malformed JSON data." : "Nieprawidłowe dane JSON.",
+ "Error" : "Błąd",
+ "Weather status" : "Stan pogody",
+ "Weather status in your dashboard" : "Stan pogody na pulpicie",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Status pogody zintegrowany z aplikacją Panelu.\nPołożenie geograficzne może być automatycznie ustalane lub ręcznie definiowane. Wyświetlana jest prognoza na 6 godzin.\nStatus może być również integrowany z innymi aplikacjami, takimi jak Kalendarz.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bezchmurne niebo później dzisiaj",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} czyste niebo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} pochmurno później dzisiaj",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} pochmurno",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} śnieg i burza później dziś",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} śnieg i burza",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} przelotne opady śniegu i burza później dziś",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} przelotne opady śniegu i burza",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} przelotne opady śniegu, burza i zmierzch polarny później dziś",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} przelotne opady śniegu, burza i zmierzch polarny",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} przelotne opady śniegu później dziś",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} przelotne opady śniegu",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} przelotne opady śniegu i zmierzch polarny później dziś",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} przelotne opady śniegu i zmierzch polarny",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} śnieg później dziś",
+ "{temperature} {unit} snow" : "{temperature} {unit} śnieg",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} ładna pogoda później dzisiaj",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ładna pogoda",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} częściowe zachmurzenie później dzisiaj",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} częściowe zachmurzenie",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} mgła później dzisiaj",
+ "{temperature} {unit} foggy" : "{temperature} {unit} mgła",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} lekkie opady deszczu później dzisiaj",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} lekkie opady deszczu",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} opady deszczu później dzisiaj",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} opady deszczu",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} ulewne opady deszczu później dzisiaj",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} ulewne opady deszczu",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} przelotne opady deszczu później dzisiaj",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} przelotne opady deszczu",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} lekkie przelotne opady deszczu później dzisiaj",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} lekkie przelotne opady deszczu",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} obfite opady deszczu później dzisiaj",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} ulewne opady deszczu",
+ "More weather for {adr}" : "Więcej pogody dla {adr}",
+ "Loading weather" : "Wczytywanie pogody",
+ "Set location for weather" : "Ustaw lokalizację dla pogody",
+ "Remove from favorites" : "Usuń z ulubionych",
+ "Add as favorite" : "Dodaj jako ulubione",
+ "You are not logged in." : "Nie jesteś zalogowany.",
+ "There was an error getting the weather status information." : "Wystąpił błąd podczas pobierania informacji o stanie pogody.",
+ "No weather information found" : "Nie znaleziono informacji o pogodzie",
+ "Location not found" : "Nie znaleziono lokalizacji",
+ "There was an error setting the location address." : "Wystąpił błąd podczas ustawiania adresu lokalizacji.",
+ "There was an error setting the location." : "Wystąpił błąd podczas ustawiania lokalizacji.",
+ "There was an error saving the mode." : "Wystąpił błąd podczas zapisywania trybu.",
+ "There was an error using personal address." : "Wystąpił błąd podczas korzystania z własnego adresu.",
+ "Unknown weather code" : "Nieznany kod pogodowy",
+ "Detect location" : "Wykryj lokalizację",
+ "Set custom address" : "Ustaw adres własny",
+ "Favorites" : "Ulubione"
+},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/pt_BR.js b/apps/weather_status/l10n/pt_BR.js
new file mode 100644
index 00000000000..439fd045f4e
--- /dev/null
+++ b/apps/weather_status/l10n/pt_BR.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Endereço desconhecido",
+ "No result." : "Nenhum resultado.",
+ "Malformed JSON data." : "Dados JSON mal formatados.",
+ "Error" : "Erro",
+ "Weather status" : "Status do tempo meteorológico",
+ "Weather status in your dashboard" : "Status do tempo meteorológico no seu painel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Status do tempo meteorológico integrado no aplicativo Painel. \n A localização geográfica pode ser determinada automaticamente ou definida manualmente. Em seguida, é exibida uma previsão de 6 horas.\n Este status também pode ser integrado em outros locais, como o aplicativo Calendário.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} céu claro mais tarde hoje",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} céu claro",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado mais tarde hoje",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nublado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e trovoada mais tarde hoje",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e trovoadas",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} nevascas e trovoadas mais tarde hoje",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} nevascas e trovoadas",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} nevascas, trovoadas e crepúsculo polar mais tarde hoje",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} nevascas, trovoadas e crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} nevascas mais tarde hoje",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} nevascas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} nevascas e crepúsculo polar mais tarde hoje",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} nevascas e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve mais tarde hoje",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bom tempo mais tarde hoje",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bom tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado hoje mais tarde",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nevoeiro mais tarde hoje",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nevoeiro",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} chuva fraca mais tarde hoje",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} chuva mais tarde hoje",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} chuva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} chuva forte mais tarde hoje",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} chuva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} pancadas de chuva mais tarde hoje",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} pancadas de chuva",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pancadas de chuva leves mais tarde hoje",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pancadas de chuva leves",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pancadas de chuva fortes mais tarde hoje",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pancadas de chuva fortes",
+ "More weather for {adr}" : "Ver mais tempo para {adr}",
+ "Loading weather" : "Carregando tempo",
+ "Set location for weather" : "Definir localização para o tempo",
+ "Remove from favorites" : "Remover dos favoritos",
+ "Add as favorite" : "Adicionar aos favoritos",
+ "You are not logged in." : "Você não está conectado.",
+ "There was an error getting the weather status information." : "Houve um erro na obtenção das informações de status de tempo.",
+ "No weather information found" : "Não encontradas informações de tempo",
+ "Location not found" : "Localização não encontrada",
+ "There was an error setting the location address." : "Houve um erro ao definir o endereço.",
+ "There was an error setting the location." : "Houve um erro ao definir a localização.",
+ "There was an error saving the mode." : "Houve um erro ao salvar o modo.",
+ "There was an error using personal address." : "Houve um erro ao usar o endereço pessoal.",
+ "Unknown weather code" : "Código meteorológico desconhecido",
+ "Detect location" : "Detectar localização",
+ "Set custom address" : "Definir endereço personalizado",
+ "Favorites" : "Favoritos"
+},
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/pt_BR.json b/apps/weather_status/l10n/pt_BR.json
new file mode 100644
index 00000000000..82846701716
--- /dev/null
+++ b/apps/weather_status/l10n/pt_BR.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Endereço desconhecido",
+ "No result." : "Nenhum resultado.",
+ "Malformed JSON data." : "Dados JSON mal formatados.",
+ "Error" : "Erro",
+ "Weather status" : "Status do tempo meteorológico",
+ "Weather status in your dashboard" : "Status do tempo meteorológico no seu painel",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Status do tempo meteorológico integrado no aplicativo Painel. \n A localização geográfica pode ser determinada automaticamente ou definida manualmente. Em seguida, é exibida uma previsão de 6 horas.\n Este status também pode ser integrado em outros locais, como o aplicativo Calendário.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} céu claro mais tarde hoje",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} céu claro",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado mais tarde hoje",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nublado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e trovoada mais tarde hoje",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e trovoadas",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} nevascas e trovoadas mais tarde hoje",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} nevascas e trovoadas",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} nevascas, trovoadas e crepúsculo polar mais tarde hoje",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} nevascas, trovoadas e crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} nevascas mais tarde hoje",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} nevascas",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} nevascas e crepúsculo polar mais tarde hoje",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} nevascas e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neve mais tarde hoje",
+ "{temperature} {unit} snow" : "{temperature} {unit} neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bom tempo mais tarde hoje",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bom tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parcialmente nublado hoje mais tarde",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parcialmente nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nevoeiro mais tarde hoje",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nevoeiro",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} chuva fraca mais tarde hoje",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} chuva mais tarde hoje",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} chuva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} chuva forte mais tarde hoje",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} chuva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} pancadas de chuva mais tarde hoje",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} pancadas de chuva",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} pancadas de chuva leves mais tarde hoje",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} pancadas de chuva leves",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} pancadas de chuva fortes mais tarde hoje",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} pancadas de chuva fortes",
+ "More weather for {adr}" : "Ver mais tempo para {adr}",
+ "Loading weather" : "Carregando tempo",
+ "Set location for weather" : "Definir localização para o tempo",
+ "Remove from favorites" : "Remover dos favoritos",
+ "Add as favorite" : "Adicionar aos favoritos",
+ "You are not logged in." : "Você não está conectado.",
+ "There was an error getting the weather status information." : "Houve um erro na obtenção das informações de status de tempo.",
+ "No weather information found" : "Não encontradas informações de tempo",
+ "Location not found" : "Localização não encontrada",
+ "There was an error setting the location address." : "Houve um erro ao definir o endereço.",
+ "There was an error setting the location." : "Houve um erro ao definir a localização.",
+ "There was an error saving the mode." : "Houve um erro ao salvar o modo.",
+ "There was an error using personal address." : "Houve um erro ao usar o endereço pessoal.",
+ "Unknown weather code" : "Código meteorológico desconhecido",
+ "Detect location" : "Detectar localização",
+ "Set custom address" : "Definir endereço personalizado",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/pt_PT.js b/apps/weather_status/l10n/pt_PT.js
new file mode 100644
index 00000000000..4dbc02c09b5
--- /dev/null
+++ b/apps/weather_status/l10n/pt_PT.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Endereço desconhecido",
+ "No result." : "Sem resultados",
+ "Malformed JSON data." : "Dados JSON mal formatados.",
+ "Error" : "Erro",
+ "Weather status" : "Estado do tempo",
+ "Weather status in your dashboard" : "Estado do tempo no painel de controlo",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado do tempo integrado na aplicação Dashboard.\nA localização geográfica pode ser determinada automaticamente ou definida manualmente. É então apresentada uma previsão de 6 horas.\nEste estado também pode ser integrado noutros locais, como a aplicação Calendário.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} céu limpo mais tarde",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} céu limpo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado ainda hoje",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nebulado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e trovoada ainda hoje",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e trovoada",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} queda de neve e trovoada ainda hoje",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} queda de neve e trovoada",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} queda de neve, trovoada e crepúsculo polar ainda hoje",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} queda de neve, trovoada e crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} queda de neve hoje mais tarde",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} queda de neve",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} queda de neve e crepúsculo polar hoje mais tarde",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} queda de neve e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} queda de neve ainda hoje",
+ "{temperature} {unit} snow" : "{temperature} {unit} queda de neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bom tempo ainda hoje",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bom tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} pouco nublado no final do dia",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} pouco nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nevoeiro ainda hoje",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nevoeiro",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} chuva fraca hoje mais tarde",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} chuva ainda hoje",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} chuva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} chuva forte ainda hoje",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} chuva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} aguaceiros ainda hoje",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} aguaceiros",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chuva fraca ainda hoje",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} aguaceiros fortes ainda hoje",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} aguaceiros fortes",
+ "More weather for {adr}" : "Mais meteorologia para {adr}",
+ "Loading weather" : "A carregar a meteorologia",
+ "Set location for weather" : "Definir localização para a meteorologia",
+ "Remove from favorites" : "Remover dos favoritos",
+ "Add as favorite" : "Adicionar como favorito",
+ "You are not logged in." : "Não tem a sessão iniciada",
+ "There was an error getting the weather status information." : "Ocorreu um erro o estado da informação de meteorologia",
+ "No weather information found" : "Não foi encontrada informação de meteorologia",
+ "Location not found" : "O local não foi encontrada",
+ "There was an error setting the location address." : "Ocorreu um erro ao definir o endereço do local",
+ "There was an error setting the location." : "Ocorreu um erro ao definir o local",
+ "There was an error saving the mode." : "Ocorreu um erro ao guardar o modo",
+ "There was an error using personal address." : "Ocorreu um erro ao usar o endereço pessoal",
+ "Unknown weather code" : "Código meteorológico desconhecido",
+ "Detect location" : "Detetar local",
+ "Set custom address" : "Definir endereço personalizado",
+ "Favorites" : "Favoritos"
+},
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/weather_status/l10n/pt_PT.json b/apps/weather_status/l10n/pt_PT.json
new file mode 100644
index 00000000000..c4aff567fcf
--- /dev/null
+++ b/apps/weather_status/l10n/pt_PT.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Endereço desconhecido",
+ "No result." : "Sem resultados",
+ "Malformed JSON data." : "Dados JSON mal formatados.",
+ "Error" : "Erro",
+ "Weather status" : "Estado do tempo",
+ "Weather status in your dashboard" : "Estado do tempo no painel de controlo",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Estado do tempo integrado na aplicação Dashboard.\nA localização geográfica pode ser determinada automaticamente ou definida manualmente. É então apresentada uma previsão de 6 horas.\nEste estado também pode ser integrado noutros locais, como a aplicação Calendário.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} céu limpo mais tarde",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} céu limpo",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} nublado ainda hoje",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nebulado",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neve e trovoada ainda hoje",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} neve e trovoada",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} queda de neve e trovoada ainda hoje",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} queda de neve e trovoada",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} queda de neve, trovoada e crepúsculo polar ainda hoje",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} queda de neve, trovoada e crepúsculo polar",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} queda de neve hoje mais tarde",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} queda de neve",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} queda de neve e crepúsculo polar hoje mais tarde",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} queda de neve e crepúsculo polar",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} queda de neve ainda hoje",
+ "{temperature} {unit} snow" : "{temperature} {unit} queda de neve",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bom tempo ainda hoje",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} bom tempo",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} pouco nublado no final do dia",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} pouco nublado",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} nevoeiro ainda hoje",
+ "{temperature} {unit} foggy" : "{temperature} {unit} nevoeiro",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} chuva fraca hoje mais tarde",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} chuva ainda hoje",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} chuva",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} chuva forte ainda hoje",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} chuva forte",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} aguaceiros ainda hoje",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} aguaceiros",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} chuva fraca ainda hoje",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} chuva fraca",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} aguaceiros fortes ainda hoje",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} aguaceiros fortes",
+ "More weather for {adr}" : "Mais meteorologia para {adr}",
+ "Loading weather" : "A carregar a meteorologia",
+ "Set location for weather" : "Definir localização para a meteorologia",
+ "Remove from favorites" : "Remover dos favoritos",
+ "Add as favorite" : "Adicionar como favorito",
+ "You are not logged in." : "Não tem a sessão iniciada",
+ "There was an error getting the weather status information." : "Ocorreu um erro o estado da informação de meteorologia",
+ "No weather information found" : "Não foi encontrada informação de meteorologia",
+ "Location not found" : "O local não foi encontrada",
+ "There was an error setting the location address." : "Ocorreu um erro ao definir o endereço do local",
+ "There was an error setting the location." : "Ocorreu um erro ao definir o local",
+ "There was an error saving the mode." : "Ocorreu um erro ao guardar o modo",
+ "There was an error using personal address." : "Ocorreu um erro ao usar o endereço pessoal",
+ "Unknown weather code" : "Código meteorológico desconhecido",
+ "Detect location" : "Detetar local",
+ "Set custom address" : "Definir endereço personalizado",
+ "Favorites" : "Favoritos"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ro.js b/apps/weather_status/l10n/ro.js
new file mode 100644
index 00000000000..4cb35ad1656
--- /dev/null
+++ b/apps/weather_status/l10n/ro.js
@@ -0,0 +1,37 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Adresă necunoscută",
+ "No result." : "Niciun rezultat.",
+ "Malformed JSON data." : "Informațiile în format JSON au expirat.",
+ "Error" : "Eroare",
+ "Weather status" : "Starea vremii",
+ "Weather status in your dashboard" : "Starea vremii pe ecranul principal",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cer senin astăzi mai târziu",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cer senin",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} înourat mai târziu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} înourat",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} vreme frumoasă astăzi mai târziu",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} vreme frumoasă",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parțial înourat astăzi mai târziu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parțial înourat",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} încețoșat astăzi mai târziu",
+ "{temperature} {unit} foggy" : "{temperature} {unit} încețoșat",
+ "More weather for {adr}" : "Mai multe informații despre vreme pentru {adr}",
+ "Loading weather" : "Se încarcă datele despre vreme",
+ "Set location for weather" : "Setează locația pentru vreme",
+ "Remove from favorites" : "Șterge din favorite",
+ "Add as favorite" : "Adaugă ca favorit",
+ "You are not logged in." : "Nu ești înregistrat",
+ "There was an error getting the weather status information." : "A apărut o eroare când sa încercat preluarea de informații despre vreme.",
+ "No weather information found" : "Nu s-au găsit informații despre vreme",
+ "Location not found" : "Locația nu a fost găsită",
+ "There was an error setting the location address." : "A apărut o eroare în timpul setării locației adresei.",
+ "There was an error setting the location." : "A apărut o eroare în timpul setării locației.",
+ "There was an error saving the mode." : "A apărut o eroare în timpul salvării modului.",
+ "There was an error using personal address." : "A apărut o eroare în timpul folosirii adresei perosnale.",
+ "Detect location" : "Detectează locația",
+ "Set custom address" : "Setează adresă personalizată",
+ "Favorites" : "Favorite"
+},
+"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/weather_status/l10n/ro.json b/apps/weather_status/l10n/ro.json
new file mode 100644
index 00000000000..16cacecf8cd
--- /dev/null
+++ b/apps/weather_status/l10n/ro.json
@@ -0,0 +1,35 @@
+{ "translations": {
+ "Unknown address" : "Adresă necunoscută",
+ "No result." : "Niciun rezultat.",
+ "Malformed JSON data." : "Informațiile în format JSON au expirat.",
+ "Error" : "Eroare",
+ "Weather status" : "Starea vremii",
+ "Weather status in your dashboard" : "Starea vremii pe ecranul principal",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} cer senin astăzi mai târziu",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} cer senin",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} înourat mai târziu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} înourat",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} vreme frumoasă astăzi mai târziu",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} vreme frumoasă",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} parțial înourat astăzi mai târziu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parțial înourat",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} încețoșat astăzi mai târziu",
+ "{temperature} {unit} foggy" : "{temperature} {unit} încețoșat",
+ "More weather for {adr}" : "Mai multe informații despre vreme pentru {adr}",
+ "Loading weather" : "Se încarcă datele despre vreme",
+ "Set location for weather" : "Setează locația pentru vreme",
+ "Remove from favorites" : "Șterge din favorite",
+ "Add as favorite" : "Adaugă ca favorit",
+ "You are not logged in." : "Nu ești înregistrat",
+ "There was an error getting the weather status information." : "A apărut o eroare când sa încercat preluarea de informații despre vreme.",
+ "No weather information found" : "Nu s-au găsit informații despre vreme",
+ "Location not found" : "Locația nu a fost găsită",
+ "There was an error setting the location address." : "A apărut o eroare în timpul setării locației adresei.",
+ "There was an error setting the location." : "A apărut o eroare în timpul setării locației.",
+ "There was an error saving the mode." : "A apărut o eroare în timpul salvării modului.",
+ "There was an error using personal address." : "A apărut o eroare în timpul folosirii adresei perosnale.",
+ "Detect location" : "Detectează locația",
+ "Set custom address" : "Setează adresă personalizată",
+ "Favorites" : "Favorite"
+},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ru.js b/apps/weather_status/l10n/ru.js
new file mode 100644
index 00000000000..7fb7690025c
--- /dev/null
+++ b/apps/weather_status/l10n/ru.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Неизвестный адрес",
+ "No result." : "Нет результатов",
+ "Malformed JSON data." : "Неверные данные JSON.",
+ "Error" : "Ошибка",
+ "Weather status" : "Прогноз погоды",
+ "Weather status in your dashboard" : "Виджет для просмотра прогноза погоды",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Текущая погода — виджет для встраивания. \n Географическое положение может определяться автоматически или задаваться вручную. Затем отображается прогноз на 6 часов.\n Он также может быть интегрирован в другие приложения, например в «Календарь».",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} сегодня обещают ясную погоду",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} сегодня обещают облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit}, позже сегодня снег с грозой",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit}, снег с грозой",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit}, позже сегодня кратковременный снег с грозой",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit}, кратковременный снег с грозой",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit}, позже сегодня кратковременный снег, гроза и полярные сумерки",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}, кратковременный снег, гроза и полярные сумерки",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit}, позже сегодня кратковременный снег",
+ "{temperature} {unit} snow showers" : "{temperature} {unit}, кратковременный снег",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit}, позже сегодня кратковременный снег и полярные сумерки",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}, кратковременный снег и полярные сумерки",
+ "{temperature} {unit} snow later today" : "{temperature} {unit}, позже сегодня снег",
+ "{temperature} {unit} snow" : "{temperature} {unit}, снег",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} сегодня обещают хорошую погоду",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хорошая погода",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} сегодня обещают местами облачно",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} местами облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} сегодня обещают туман",
+ "{temperature} {unit} foggy" : "{temperature} {unit} туман",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} ожидается небольшой дождь",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} небольшой дождь",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} ожидается дождь",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дождь",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} ожидается сильный дождь",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} сильный дождь",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} обещают ливневые дожди",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ливневые дожди",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} сегодня позже пройдёт небольшой ливневый дождь",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} небольшой ливневый дождь",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} сегодня позже ожидаются сильные проливные дожди",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} сильный проливной дождь",
+ "More weather for {adr}" : "Дополнительные сведения о погоде в {adr}",
+ "Loading weather" : "Получение сведений о погоде...",
+ "Set location for weather" : "Задать местоположение",
+ "Remove from favorites" : "Удалить из избранного",
+ "Add as favorite" : "Добавить в избранное",
+ "You are not logged in." : "Не выполнен вход в систему.",
+ "There was an error getting the weather status information." : "Не удалось получить прогноз погоды.",
+ "No weather information found" : "Прогноз погоды не найден",
+ "Location not found" : "Местоположение не найдено",
+ "There was an error setting the location address." : "Не удалось задать адрес.",
+ "There was an error setting the location." : "Не удалось настроить местоположение.",
+ "There was an error saving the mode." : "Не удалось сохранить режим.",
+ "There was an error using personal address." : "Не удалось использовать личный адрес.",
+ "Unknown weather code" : "Неизвестный код погоды",
+ "Detect location" : "Определить местоположение",
+ "Set custom address" : "Задать адрес",
+ "Favorites" : "Избранное"
+},
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/weather_status/l10n/ru.json b/apps/weather_status/l10n/ru.json
new file mode 100644
index 00000000000..0156625bf7a
--- /dev/null
+++ b/apps/weather_status/l10n/ru.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Неизвестный адрес",
+ "No result." : "Нет результатов",
+ "Malformed JSON data." : "Неверные данные JSON.",
+ "Error" : "Ошибка",
+ "Weather status" : "Прогноз погоды",
+ "Weather status in your dashboard" : "Виджет для просмотра прогноза погоды",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Текущая погода — виджет для встраивания. \n Географическое положение может определяться автоматически или задаваться вручную. Затем отображается прогноз на 6 часов.\n Он также может быть интегрирован в другие приложения, например в «Календарь».",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} сегодня обещают ясную погоду",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясно",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} сегодня обещают облачно",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit}, позже сегодня снег с грозой",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit}, снег с грозой",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit}, позже сегодня кратковременный снег с грозой",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit}, кратковременный снег с грозой",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit}, позже сегодня кратковременный снег, гроза и полярные сумерки",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}, кратковременный снег, гроза и полярные сумерки",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit}, позже сегодня кратковременный снег",
+ "{temperature} {unit} snow showers" : "{temperature} {unit}, кратковременный снег",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit}, позже сегодня кратковременный снег и полярные сумерки",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}, кратковременный снег и полярные сумерки",
+ "{temperature} {unit} snow later today" : "{temperature} {unit}, позже сегодня снег",
+ "{temperature} {unit} snow" : "{temperature} {unit}, снег",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} сегодня обещают хорошую погоду",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} хорошая погода",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} сегодня обещают местами облачно",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} местами облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} сегодня обещают туман",
+ "{temperature} {unit} foggy" : "{temperature} {unit} туман",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} ожидается небольшой дождь",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} небольшой дождь",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} ожидается дождь",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} дождь",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} ожидается сильный дождь",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} сильный дождь",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} обещают ливневые дожди",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} ливневые дожди",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} сегодня позже пройдёт небольшой ливневый дождь",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} небольшой ливневый дождь",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} сегодня позже ожидаются сильные проливные дожди",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} сильный проливной дождь",
+ "More weather for {adr}" : "Дополнительные сведения о погоде в {adr}",
+ "Loading weather" : "Получение сведений о погоде...",
+ "Set location for weather" : "Задать местоположение",
+ "Remove from favorites" : "Удалить из избранного",
+ "Add as favorite" : "Добавить в избранное",
+ "You are not logged in." : "Не выполнен вход в систему.",
+ "There was an error getting the weather status information." : "Не удалось получить прогноз погоды.",
+ "No weather information found" : "Прогноз погоды не найден",
+ "Location not found" : "Местоположение не найдено",
+ "There was an error setting the location address." : "Не удалось задать адрес.",
+ "There was an error setting the location." : "Не удалось настроить местоположение.",
+ "There was an error saving the mode." : "Не удалось сохранить режим.",
+ "There was an error using personal address." : "Не удалось использовать личный адрес.",
+ "Unknown weather code" : "Неизвестный код погоды",
+ "Detect location" : "Определить местоположение",
+ "Set custom address" : "Задать адрес",
+ "Favorites" : "Избранное"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/sk.js b/apps/weather_status/l10n/sk.js
new file mode 100644
index 00000000000..73592b63a48
--- /dev/null
+++ b/apps/weather_status/l10n/sk.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Neznáma adresa",
+ "No result." : "Žiaden výsledok.",
+ "Malformed JSON data." : "Chybné údaje JSON.",
+ "Error" : "Chyba",
+ "Weather status" : "Stav počasia",
+ "Weather status in your dashboard" : "Stav počasia v informačnom paneli",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stav počasia integrovaný v aplikácii Dashboard.\nGeografickú polohu je možné určiť automaticky alebo manuálne. Potom sa zobrazí predpoveď na 6 hodín.\nTento stav možno integrovať aj na iných miestach, ako je napríklad aplikácia Kalendár.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} jasná obloha, neskôr v priebehu dňa",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} oblačno, neskôr v priebehu dňa",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} oblačno",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neskôr cez deň sneženie a búrka",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sneženie a búrka",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} neskôr cez deň snehové prehánky a búrka",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit} snehové prehánky a búrka",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} neskôr cez deň snehové prehánky, búrka a polárna žiara",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snehové prehánky, búrka a polárna žiara",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} neskôr cez deň snehové prehánky",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snehové prehánky",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} neskôr cez deň snehové prehánky a polárna žiara",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snehové prehánky a polárna žiara",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neskôr cez deň sneženie",
+ "{temperature} {unit} snow" : "{temperature} {unit} sneženie",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} pekné počasie, neskôr v priebehu dňa",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} pekné počasie",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} čiastočne zamračené, neskôr v priebehu dňa",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} čiastočne zamračené",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} hmlisto, neskôr v priebehu dňa",
+ "{temperature} {unit} foggy" : "{temperature} {unit} hmlisto",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dnes neskôr slabé zrážky",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} slabé zrážky",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} srážky, neskôr v priebehu dňa",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} zrážky",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} silné zrážky, neskôr v priebehu dňa",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} silné zrážky",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} dažďové prehánky dnes",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} dažďové prehánky",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dnes slabé dažďové prehánky",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} slabé dažďové prehánky",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} silné dažďové prehánky, neskôr v priebehu dňa",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} silné dažďové prehánky",
+ "More weather for {adr}" : "Viac o počasí pre {adr}",
+ "Loading weather" : "Načítava sa počasie",
+ "Set location for weather" : "Nastaviť polohu pre predpoveď počasia",
+ "Remove from favorites" : "Odstrániť z obľúbených",
+ "Add as favorite" : "Pridať k obľúbeným",
+ "You are not logged in." : "Nie si prihlásený.",
+ "There was an error getting the weather status information." : "Pri získavaní informácií o stave počasia sa vyskytla chyba.",
+ "No weather information found" : "Nenašli sa žiadne informácie o počasí",
+ "Location not found" : "Miesto sa nenašlo",
+ "There was an error setting the location address." : "Pri nastavovaní adresy sa vyskytla chyba.",
+ "There was an error setting the location." : "Pri nastavovaní polohy sa vyskytla chyba.",
+ "There was an error saving the mode." : "Pri ukladaní režimu sa vyskytla chyba.",
+ "There was an error using personal address." : "Pri použití osobnej adresy sa vyskytla chyba.",
+ "Unknown weather code" : "Neznámy kód počasia",
+ "Detect location" : "Zistiť polohu",
+ "Set custom address" : "Nastaviť vlastnú adresu",
+ "Favorites" : "Obľúbené"
+},
+"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/weather_status/l10n/sk.json b/apps/weather_status/l10n/sk.json
new file mode 100644
index 00000000000..0687825e7bd
--- /dev/null
+++ b/apps/weather_status/l10n/sk.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Neznáma adresa",
+ "No result." : "Žiaden výsledok.",
+ "Malformed JSON data." : "Chybné údaje JSON.",
+ "Error" : "Chyba",
+ "Weather status" : "Stav počasia",
+ "Weather status in your dashboard" : "Stav počasia v informačnom paneli",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Stav počasia integrovaný v aplikácii Dashboard.\nGeografickú polohu je možné určiť automaticky alebo manuálne. Potom sa zobrazí predpoveď na 6 hodín.\nTento stav možno integrovať aj na iných miestach, ako je napríklad aplikácia Kalendár.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} jasná obloha, neskôr v priebehu dňa",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} oblačno, neskôr v priebehu dňa",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} oblačno",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} neskôr cez deň sneženie a búrka",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} sneženie a búrka",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} neskôr cez deň snehové prehánky a búrka",
+ "{temperature} {unit} snow showers and thunder" : "{temperature}{unit} snehové prehánky a búrka",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} neskôr cez deň snehové prehánky, búrka a polárna žiara",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snehové prehánky, búrka a polárna žiara",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} neskôr cez deň snehové prehánky",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snehové prehánky",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} neskôr cez deň snehové prehánky a polárna žiara",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snehové prehánky a polárna žiara",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} neskôr cez deň sneženie",
+ "{temperature} {unit} snow" : "{temperature} {unit} sneženie",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} pekné počasie, neskôr v priebehu dňa",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} pekné počasie",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} čiastočne zamračené, neskôr v priebehu dňa",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} čiastočne zamračené",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} hmlisto, neskôr v priebehu dňa",
+ "{temperature} {unit} foggy" : "{temperature} {unit} hmlisto",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dnes neskôr slabé zrážky",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} slabé zrážky",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} srážky, neskôr v priebehu dňa",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} zrážky",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} silné zrážky, neskôr v priebehu dňa",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} silné zrážky",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} dažďové prehánky dnes",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} dažďové prehánky",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dnes slabé dažďové prehánky",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} slabé dažďové prehánky",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} silné dažďové prehánky, neskôr v priebehu dňa",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} silné dažďové prehánky",
+ "More weather for {adr}" : "Viac o počasí pre {adr}",
+ "Loading weather" : "Načítava sa počasie",
+ "Set location for weather" : "Nastaviť polohu pre predpoveď počasia",
+ "Remove from favorites" : "Odstrániť z obľúbených",
+ "Add as favorite" : "Pridať k obľúbeným",
+ "You are not logged in." : "Nie si prihlásený.",
+ "There was an error getting the weather status information." : "Pri získavaní informácií o stave počasia sa vyskytla chyba.",
+ "No weather information found" : "Nenašli sa žiadne informácie o počasí",
+ "Location not found" : "Miesto sa nenašlo",
+ "There was an error setting the location address." : "Pri nastavovaní adresy sa vyskytla chyba.",
+ "There was an error setting the location." : "Pri nastavovaní polohy sa vyskytla chyba.",
+ "There was an error saving the mode." : "Pri ukladaní režimu sa vyskytla chyba.",
+ "There was an error using personal address." : "Pri použití osobnej adresy sa vyskytla chyba.",
+ "Unknown weather code" : "Neznámy kód počasia",
+ "Detect location" : "Zistiť polohu",
+ "Set custom address" : "Nastaviť vlastnú adresu",
+ "Favorites" : "Obľúbené"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/sl.js b/apps/weather_status/l10n/sl.js
new file mode 100644
index 00000000000..c5a6643c1de
--- /dev/null
+++ b/apps/weather_status/l10n/sl.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Neznan naslov",
+ "No result." : "Ni zadetkov",
+ "Malformed JSON data." : "Nepravilno oblikovani podatki JSON.",
+ "Error" : "Napaka",
+ "Weather status" : "Stanje vremena",
+ "Weather status in your dashboard" : "Stanje vremena na nadzorni plošči",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} kasneje se bo zjasnilo",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} brez oblakov",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} kasneje se bo pooblačilo",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} oblačno",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} kasneje bo bolj prijetno",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} prijetno vreme",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} kasneje bo delno oblačno",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delno oblačno",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} kasneje bo megleno",
+ "{temperature} {unit} foggy" : "{temperature} {unit} megleno",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} kasneje bo rahlo deževalo",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} rahlo dežuje",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} kasneje bo deževalo",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} dežuje",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kasneje bo močno deževalo",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} močno dežuje",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} kasneje so možne plohe",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} občasne plohe",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} kasneje so možne plohe",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} občasne plohe",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kasneje so možne močnejše plohe",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} močnejše plohe",
+ "More weather for {adr}" : "Več o vremenu za mesto {adr}",
+ "Loading weather" : "Poteka nalaganje podatkov o vremenu",
+ "Set location for weather" : "Nastavitev mesta za prikaz vremena",
+ "Remove from favorites" : "Odstrani iz priljubljenih",
+ "Add as favorite" : "Dodaj kot priljubljeno",
+ "You are not logged in." : "Niste prijavljeni v oblak.",
+ "There was an error getting the weather status information." : "Prišlo je do napake med pridobivanjem podrobnosti o vremenu.",
+ "No weather information found" : "Ni dosegljivih podatkov o vremenu",
+ "Location not found" : "Trenutnega mesta ni mogoče določiti",
+ "There was an error setting the location address." : "Prišlo je do napake med določanjem naslova trenutnega mesta.",
+ "There was an error setting the location." : "Prišlo je do napake med določanjem trenutnega mesta.",
+ "There was an error saving the mode." : "Prišlo je do napake med shranjevanjem načina.",
+ "There was an error using personal address." : "Prišlo je do napake med uporabo osebnega naslova.",
+ "Detect location" : "Zaznaj trenutno mesto",
+ "Set custom address" : "Nastavi naslov po meri",
+ "Favorites" : "Priljubljeno"
+},
+"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/weather_status/l10n/sl.json b/apps/weather_status/l10n/sl.json
new file mode 100644
index 00000000000..451ee82a8f9
--- /dev/null
+++ b/apps/weather_status/l10n/sl.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Neznan naslov",
+ "No result." : "Ni zadetkov",
+ "Malformed JSON data." : "Nepravilno oblikovani podatki JSON.",
+ "Error" : "Napaka",
+ "Weather status" : "Stanje vremena",
+ "Weather status in your dashboard" : "Stanje vremena na nadzorni plošči",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} kasneje se bo zjasnilo",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} brez oblakov",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} kasneje se bo pooblačilo",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} oblačno",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} kasneje bo bolj prijetno",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} prijetno vreme",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} kasneje bo delno oblačno",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} delno oblačno",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} kasneje bo megleno",
+ "{temperature} {unit} foggy" : "{temperature} {unit} megleno",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} kasneje bo rahlo deževalo",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} rahlo dežuje",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} kasneje bo deževalo",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} dežuje",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} kasneje bo močno deževalo",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} močno dežuje",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} kasneje so možne plohe",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} občasne plohe",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} kasneje so možne plohe",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} občasne plohe",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} kasneje so možne močnejše plohe",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} močnejše plohe",
+ "More weather for {adr}" : "Več o vremenu za mesto {adr}",
+ "Loading weather" : "Poteka nalaganje podatkov o vremenu",
+ "Set location for weather" : "Nastavitev mesta za prikaz vremena",
+ "Remove from favorites" : "Odstrani iz priljubljenih",
+ "Add as favorite" : "Dodaj kot priljubljeno",
+ "You are not logged in." : "Niste prijavljeni v oblak.",
+ "There was an error getting the weather status information." : "Prišlo je do napake med pridobivanjem podrobnosti o vremenu.",
+ "No weather information found" : "Ni dosegljivih podatkov o vremenu",
+ "Location not found" : "Trenutnega mesta ni mogoče določiti",
+ "There was an error setting the location address." : "Prišlo je do napake med določanjem naslova trenutnega mesta.",
+ "There was an error setting the location." : "Prišlo je do napake med določanjem trenutnega mesta.",
+ "There was an error saving the mode." : "Prišlo je do napake med shranjevanjem načina.",
+ "There was an error using personal address." : "Prišlo je do napake med uporabo osebnega naslova.",
+ "Detect location" : "Zaznaj trenutno mesto",
+ "Set custom address" : "Nastavi naslov po meri",
+ "Favorites" : "Priljubljeno"
+},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/sr.js b/apps/weather_status/l10n/sr.js
new file mode 100644
index 00000000000..df57edef47f
--- /dev/null
+++ b/apps/weather_status/l10n/sr.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Непозната адреса",
+ "No result." : "Нема резултата.",
+ "Malformed JSON data." : "Неисправни JSON подаци.",
+ "Error" : "Грешка",
+ "Weather status" : "Временска прогноза",
+ "Weather status in your dashboard" : "Временска прогноза на Вашој контролној табли",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Временска прогноза интегрисана на Контролној табли.\n Географска локација се може аутоматски одредити или ручно подесити. Затим се приказује прогноза за наредних 6 сати.\n Овај статус се такође може интегрисати на друга места, као што је Календар.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ведро касније данас",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ведро",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} облачно касније данас",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} снег и грмљавина касније данас",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} снег и грмљавина",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} вејавица и грмљавина касније данас",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} вејавица и грмљавина",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} вејавица, грмљавина и поларни сумрак касније данас",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} вејавица, грмљавина и поларни сумрак",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} вејавица касније данас",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} вејавица",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} вејавица и поларни сумрак касније данас",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} вејавица и поларни сумрак",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} снег касније данас",
+ "{temperature} {unit} snow" : "{temperature} {unit} снег",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} лепо време касније данас",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} лепо време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} делимично облачно касније данас",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} делимично облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} магловито касније данас",
+ "{temperature} {unit} foggy" : "{temperature} {unit} магловито",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} слаба киша касније данас",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаба киша",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} киша касније данас",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} киша",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} јака киша касније данас",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} јака киша",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} пљускови касније данас",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} пљускови",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} слаби пљускови касније данас",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} слаби пљускови",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} јаки пљускови касније данас",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} јаки пљускови",
+ "More weather for {adr}" : "Још прогнозе за {adr}",
+ "Loading weather" : "Учитавам прогнозу",
+ "Set location for weather" : "Постави локацију за прогнозу",
+ "Remove from favorites" : "Уклони из омиљених",
+ "Add as favorite" : "Додај као омиљено",
+ "You are not logged in." : "Нисте пријављени.",
+ "There was an error getting the weather status information." : "Грешка приликом дохватања прогнозе времена.",
+ "No weather information found" : "Прогноза није нађена",
+ "Location not found" : "Локација није нађена",
+ "There was an error setting the location address." : "Грешка приликом постављања адресе локације.",
+ "There was an error setting the location." : "Грешка приликом постављања локације.",
+ "There was an error saving the mode." : "Грешка приликом чувања режима.",
+ "There was an error using personal address." : "Грешка приликом коришћења личне адресе.",
+ "Unknown weather code" : "Непознати код временских прилика",
+ "Detect location" : "Откриј локацију",
+ "Set custom address" : "Постави произвољну адресу",
+ "Favorites" : "Омиљене"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/weather_status/l10n/sr.json b/apps/weather_status/l10n/sr.json
new file mode 100644
index 00000000000..67833d06680
--- /dev/null
+++ b/apps/weather_status/l10n/sr.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Непозната адреса",
+ "No result." : "Нема резултата.",
+ "Malformed JSON data." : "Неисправни JSON подаци.",
+ "Error" : "Грешка",
+ "Weather status" : "Временска прогноза",
+ "Weather status in your dashboard" : "Временска прогноза на Вашој контролној табли",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Временска прогноза интегрисана на Контролној табли.\n Географска локација се може аутоматски одредити или ручно подесити. Затим се приказује прогноза за наредних 6 сати.\n Овај статус се такође може интегрисати на друга места, као што је Календар.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ведро касније данас",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ведро",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} облачно касније данас",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} облачно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} снег и грмљавина касније данас",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} снег и грмљавина",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} вејавица и грмљавина касније данас",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} вејавица и грмљавина",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} вејавица, грмљавина и поларни сумрак касније данас",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} вејавица, грмљавина и поларни сумрак",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} вејавица касније данас",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} вејавица",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} вејавица и поларни сумрак касније данас",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} вејавица и поларни сумрак",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} снег касније данас",
+ "{temperature} {unit} snow" : "{temperature} {unit} снег",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} лепо време касније данас",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} лепо време",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} делимично облачно касније данас",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} делимично облачно",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} магловито касније данас",
+ "{temperature} {unit} foggy" : "{temperature} {unit} магловито",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} слаба киша касније данас",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} слаба киша",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} киша касније данас",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} киша",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} јака киша касније данас",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} јака киша",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} пљускови касније данас",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} пљускови",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} слаби пљускови касније данас",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} слаби пљускови",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} јаки пљускови касније данас",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} јаки пљускови",
+ "More weather for {adr}" : "Још прогнозе за {adr}",
+ "Loading weather" : "Учитавам прогнозу",
+ "Set location for weather" : "Постави локацију за прогнозу",
+ "Remove from favorites" : "Уклони из омиљених",
+ "Add as favorite" : "Додај као омиљено",
+ "You are not logged in." : "Нисте пријављени.",
+ "There was an error getting the weather status information." : "Грешка приликом дохватања прогнозе времена.",
+ "No weather information found" : "Прогноза није нађена",
+ "Location not found" : "Локација није нађена",
+ "There was an error setting the location address." : "Грешка приликом постављања адресе локације.",
+ "There was an error setting the location." : "Грешка приликом постављања локације.",
+ "There was an error saving the mode." : "Грешка приликом чувања режима.",
+ "There was an error using personal address." : "Грешка приликом коришћења личне адресе.",
+ "Unknown weather code" : "Непознати код временских прилика",
+ "Detect location" : "Откриј локацију",
+ "Set custom address" : "Постави произвољну адресу",
+ "Favorites" : "Омиљене"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/sv.js b/apps/weather_status/l10n/sv.js
new file mode 100644
index 00000000000..da70b52f978
--- /dev/null
+++ b/apps/weather_status/l10n/sv.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Okänd adress",
+ "No result." : "Inga resultat.",
+ "Malformed JSON data." : "Felformaterad JSON-data.",
+ "Error" : "Fel",
+ "Weather status" : "Väderrapport",
+ "Weather status in your dashboard" : "Väderrapport på din dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Väderstatus integrerad i Dashboard-appen.\nDen geografiska platsen kan bestämmas automatiskt eller manuellt. En 6 timmars prognos visas sedan.\nDenna status kan också integreras på andra platser som appen Kalender.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} och klar himmel senare idag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} och klar himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} och mulet senare idag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} och mulet",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snö och åska senare idag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snö och åska",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snöbyar och åska senare idag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snöbyar och åska",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snöbyar, åska och polarskymning senare idag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snöbyar, åska och polarskymning",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snöbyar senare idag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snöbyar",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snöbyar och polarskymning senare idag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snöbyar och polarskymning",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snö senare idag",
+ "{temperature} {unit} snow" : "{temperature} {unit} snö",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} och klart väder senare idag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} och klart väder",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} och växlande molnighet senare idag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} och växlande molnighet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} och dimma senare idag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} och dimma",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} och lätt regn senare idag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} och lätt regn",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} och regn senare idag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} och regn",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} och kraftigt regn senare idag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} och kraftigt regn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} och regnbyar senare idag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} och regnbyar",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} och lätta regnbyar senare idag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} och lätta regnbyar",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} och kraftiga regnbyar senare idag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} och kraftiga regnbyar",
+ "More weather for {adr}" : "Mer väder omkring {adr}",
+ "Loading weather" : "Hämtar väder",
+ "Set location for weather" : "Ange position för väder",
+ "Remove from favorites" : "Ta bort från favoriter",
+ "Add as favorite" : "Lägg till som favorit",
+ "You are not logged in." : "Du är inte inloggad.",
+ "There was an error getting the weather status information." : "Ett fel inträffade vid hämtning av väderuppdateringen.",
+ "No weather information found" : "Ingen väderinformation hittades",
+ "Location not found" : "Platsen hittades inte",
+ "There was an error setting the location address." : "Ett fel inträffade när adressen för platsen angavs.",
+ "There was an error setting the location." : "Ett fel inträffade när platsen angavs.",
+ "There was an error saving the mode." : "Det uppstod ett fel vid sparandet av läget.",
+ "There was an error using personal address." : "Det uppstod ett fel vid användning av personlig adress.",
+ "Unknown weather code" : "Okänd väderkod",
+ "Detect location" : "Hitta min position",
+ "Set custom address" : "Uppge egen adress",
+ "Favorites" : "Favoriter"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/sv.json b/apps/weather_status/l10n/sv.json
new file mode 100644
index 00000000000..06f1b1a495c
--- /dev/null
+++ b/apps/weather_status/l10n/sv.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Okänd adress",
+ "No result." : "Inga resultat.",
+ "Malformed JSON data." : "Felformaterad JSON-data.",
+ "Error" : "Fel",
+ "Weather status" : "Väderrapport",
+ "Weather status in your dashboard" : "Väderrapport på din dashboard",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Väderstatus integrerad i Dashboard-appen.\nDen geografiska platsen kan bestämmas automatiskt eller manuellt. En 6 timmars prognos visas sedan.\nDenna status kan också integreras på andra platser som appen Kalender.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} och klar himmel senare idag",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} och klar himmel",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} och mulet senare idag",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} och mulet",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} snö och åska senare idag",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} snö och åska",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} snöbyar och åska senare idag",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} snöbyar och åska",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} snöbyar, åska och polarskymning senare idag",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} snöbyar, åska och polarskymning",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} snöbyar senare idag",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} snöbyar",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} snöbyar och polarskymning senare idag",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} snöbyar och polarskymning",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} snö senare idag",
+ "{temperature} {unit} snow" : "{temperature} {unit} snö",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} och klart väder senare idag",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} och klart väder",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} och växlande molnighet senare idag",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} och växlande molnighet",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} och dimma senare idag",
+ "{temperature} {unit} foggy" : "{temperature} {unit} och dimma",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} och lätt regn senare idag",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} och lätt regn",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} och regn senare idag",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} och regn",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} och kraftigt regn senare idag",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} och kraftigt regn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} och regnbyar senare idag",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} och regnbyar",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} och lätta regnbyar senare idag",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} och lätta regnbyar",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} och kraftiga regnbyar senare idag",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} och kraftiga regnbyar",
+ "More weather for {adr}" : "Mer väder omkring {adr}",
+ "Loading weather" : "Hämtar väder",
+ "Set location for weather" : "Ange position för väder",
+ "Remove from favorites" : "Ta bort från favoriter",
+ "Add as favorite" : "Lägg till som favorit",
+ "You are not logged in." : "Du är inte inloggad.",
+ "There was an error getting the weather status information." : "Ett fel inträffade vid hämtning av väderuppdateringen.",
+ "No weather information found" : "Ingen väderinformation hittades",
+ "Location not found" : "Platsen hittades inte",
+ "There was an error setting the location address." : "Ett fel inträffade när adressen för platsen angavs.",
+ "There was an error setting the location." : "Ett fel inträffade när platsen angavs.",
+ "There was an error saving the mode." : "Det uppstod ett fel vid sparandet av läget.",
+ "There was an error using personal address." : "Det uppstod ett fel vid användning av personlig adress.",
+ "Unknown weather code" : "Okänd väderkod",
+ "Detect location" : "Hitta min position",
+ "Set custom address" : "Uppge egen adress",
+ "Favorites" : "Favoriter"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/sw.js b/apps/weather_status/l10n/sw.js
new file mode 100644
index 00000000000..7928eb4db94
--- /dev/null
+++ b/apps/weather_status/l10n/sw.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Anwani isiyojulikana",
+ "No result." : "Hakuna matokeo",
+ "Malformed JSON data." : "Takwimu za JSON zilizoharibika.",
+ "Error" : "Hitilafu",
+ "Weather status" : "Hali ya hali ya hewa",
+ "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo",
+ "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo",
+ "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia",
+ "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ",
+ "{temperature} {unit} snow" : "{temperature} {unit}theluji",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ",
+ "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} mvua",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa",
+ "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}",
+ "Loading weather" : "Inapakia hali ya hewa",
+ "Set location for weather" : "Weka eneo kwa hali ya hewa",
+ "Remove from favorites" : "Ondoa kutoka katika pendwa",
+ "Add as favorite" : "Ongeza kama kipendwa",
+ "You are not logged in." : "Hujaingia kwenye akaunti.",
+ "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.",
+ "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana",
+ "Location not found" : "Mahali hapajulikani",
+ "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.",
+ "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.",
+ "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.",
+ "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.",
+ "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana",
+ "Detect location" : "Tambua eneo",
+ "Set custom address" : "Weka anwani maalum",
+ "Favorites" : "Vipendwa"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/sw.json b/apps/weather_status/l10n/sw.json
new file mode 100644
index 00000000000..985b7b4f15f
--- /dev/null
+++ b/apps/weather_status/l10n/sw.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Anwani isiyojulikana",
+ "No result." : "Hakuna matokeo",
+ "Malformed JSON data." : "Takwimu za JSON zilizoharibika.",
+ "Error" : "Hitilafu",
+ "Weather status" : "Hali ya hali ya hewa",
+ "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo",
+ "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ",
+ "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo",
+ "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia",
+ "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ",
+ "{temperature} {unit} snow" : "{temperature} {unit}theluji",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ",
+ "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} mvua",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa",
+ "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}",
+ "Loading weather" : "Inapakia hali ya hewa",
+ "Set location for weather" : "Weka eneo kwa hali ya hewa",
+ "Remove from favorites" : "Ondoa kutoka katika pendwa",
+ "Add as favorite" : "Ongeza kama kipendwa",
+ "You are not logged in." : "Hujaingia kwenye akaunti.",
+ "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.",
+ "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana",
+ "Location not found" : "Mahali hapajulikani",
+ "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.",
+ "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.",
+ "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.",
+ "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.",
+ "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana",
+ "Detect location" : "Tambua eneo",
+ "Set custom address" : "Weka anwani maalum",
+ "Favorites" : "Vipendwa"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/tr.js b/apps/weather_status/l10n/tr.js
new file mode 100644
index 00000000000..8487d641c4a
--- /dev/null
+++ b/apps/weather_status/l10n/tr.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Adres bilinmiyor",
+ "No result." : "Sonuç yok.",
+ "Malformed JSON data." : "JSON verileri bozuk.",
+ "Error" : "Hata",
+ "Weather status" : "Hava durumu",
+ "Weather status in your dashboard" : "Panonuz için hava durumu",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Pano uygulaması ile bütünleşik hava durumu.\n Coğrafi konum el ile de ayarlanabileceği gibi otomatik olarak da algılanabilir. 6 saatlik tahmin görüntülenir.\n Hava durumu Takvim gibi diğer uygulamalarla da kullanılabilir.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bugün açık",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} açık",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bugün bulutlu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bulutlu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} ilerleyen saatlerde kar ve gök gürültüsü",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} kar ve gök gürültüsü",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı ve gök gürültüsü ",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} kar yağışı ve gök gürültüsü ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı, gök gürültüsü ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} kar yağışı, gök gürültüsü ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} kar yağışı",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} kar yağışı ve kutup alaca karanlığı",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} ilerleyen saatlerde karlı",
+ "{temperature} {unit} snow" : "{temperature} {unit} karlı",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bugün güzel",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} güzel",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bugün parçalı bulutlu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parçalı bulutlu",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} bugün sisli",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sisli",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bugün hafif yağmurlu",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} hafif yağmurlu",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} bugün hafif yağmurlu",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} yağmurlu",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bugün şiddetli yağmurlu",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} şiddetli yağmurlu",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} bugün sağanak yağışlı",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} sağanak yağışlı",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} bugün hafif sağanak yağışlı",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} hafif sağanak yağışlı",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} bugün şiddetli sağanak yağışlı",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} şiddetli sağanak yağışlı",
+ "More weather for {adr}" : "{adr} için geniş hava durumu",
+ "Loading weather" : "Hava durumu yükleniyor",
+ "Set location for weather" : "Hava durumu için konumu ayarlayın",
+ "Remove from favorites" : "Sık kullanılanlardan kaldır",
+ "Add as favorite" : "Sık kullanılanlara ekle",
+ "You are not logged in." : "Oturum açmamışsınız.",
+ "There was an error getting the weather status information." : "Hava durumu bilgileri alınırken bir sorun çıktı.",
+ "No weather information found" : "Hava durumu bilgileri bulunamadı.",
+ "Location not found" : "Konum bulunamadı",
+ "There was an error setting the location address." : "Konum adresi ayarlanırken bir sorun çıktı.",
+ "There was an error setting the location." : "Konum ayarlanırken bir sorun çıktı.",
+ "There was an error saving the mode." : "Kip kaydedilirken bir sorun çıktı.",
+ "There was an error using personal address." : "Kişisel adres kullanılırken bir sorun çıktı.",
+ "Unknown weather code" : "Hava kodu bilinmiyor",
+ "Detect location" : "Konum algılansın",
+ "Set custom address" : "Özel adres belirtin",
+ "Favorites" : "Sık kullanılanlar"
+},
+"nplurals=2; plural=(n > 1);");
diff --git a/apps/weather_status/l10n/tr.json b/apps/weather_status/l10n/tr.json
new file mode 100644
index 00000000000..6261566732c
--- /dev/null
+++ b/apps/weather_status/l10n/tr.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Adres bilinmiyor",
+ "No result." : "Sonuç yok.",
+ "Malformed JSON data." : "JSON verileri bozuk.",
+ "Error" : "Hata",
+ "Weather status" : "Hava durumu",
+ "Weather status in your dashboard" : "Panonuz için hava durumu",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Pano uygulaması ile bütünleşik hava durumu.\n Coğrafi konum el ile de ayarlanabileceği gibi otomatik olarak da algılanabilir. 6 saatlik tahmin görüntülenir.\n Hava durumu Takvim gibi diğer uygulamalarla da kullanılabilir.",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} bugün açık",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} açık",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} bugün bulutlu",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} bulutlu",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} ilerleyen saatlerde kar ve gök gürültüsü",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} kar ve gök gürültüsü",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı ve gök gürültüsü ",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} kar yağışı ve gök gürültüsü ",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı, gök gürültüsü ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} kar yağışı, gök gürültüsü ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} kar yağışı",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} ilerleyen saatlerde kar yağışı ve kutup alaca karanlığı",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} kar yağışı ve kutup alaca karanlığı",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} ilerleyen saatlerde karlı",
+ "{temperature} {unit} snow" : "{temperature} {unit} karlı",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} bugün güzel",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} güzel",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bugün parçalı bulutlu",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} parçalı bulutlu",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} bugün sisli",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sisli",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bugün hafif yağmurlu",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} hafif yağmurlu",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} bugün hafif yağmurlu",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} yağmurlu",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bugün şiddetli yağmurlu",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} şiddetli yağmurlu",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} bugün sağanak yağışlı",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} sağanak yağışlı",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} bugün hafif sağanak yağışlı",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} hafif sağanak yağışlı",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} bugün şiddetli sağanak yağışlı",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} şiddetli sağanak yağışlı",
+ "More weather for {adr}" : "{adr} için geniş hava durumu",
+ "Loading weather" : "Hava durumu yükleniyor",
+ "Set location for weather" : "Hava durumu için konumu ayarlayın",
+ "Remove from favorites" : "Sık kullanılanlardan kaldır",
+ "Add as favorite" : "Sık kullanılanlara ekle",
+ "You are not logged in." : "Oturum açmamışsınız.",
+ "There was an error getting the weather status information." : "Hava durumu bilgileri alınırken bir sorun çıktı.",
+ "No weather information found" : "Hava durumu bilgileri bulunamadı.",
+ "Location not found" : "Konum bulunamadı",
+ "There was an error setting the location address." : "Konum adresi ayarlanırken bir sorun çıktı.",
+ "There was an error setting the location." : "Konum ayarlanırken bir sorun çıktı.",
+ "There was an error saving the mode." : "Kip kaydedilirken bir sorun çıktı.",
+ "There was an error using personal address." : "Kişisel adres kullanılırken bir sorun çıktı.",
+ "Unknown weather code" : "Hava kodu bilinmiyor",
+ "Detect location" : "Konum algılansın",
+ "Set custom address" : "Özel adres belirtin",
+ "Favorites" : "Sık kullanılanlar"
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/ug.js b/apps/weather_status/l10n/ug.js
new file mode 100644
index 00000000000..74d56fef4a8
--- /dev/null
+++ b/apps/weather_status/l10n/ug.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "نامەلۇم ئادرېس",
+ "No result." : "ھېچقانداق نەتىجە يوق.",
+ "Malformed JSON data." : "JSON سانلىق مەلۇماتلىرى ئۆزگەرتىلدى.",
+ "Error" : "خاتالىق",
+ "Weather status" : "ھاۋارايى ئەھۋالى",
+ "Weather status in your dashboard" : "باشقۇرۇش تاختىڭىزدىكى ھاۋارايى ئەھۋالى",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "باش تاختا دېتالىغا بىرلەشتۈرۈلگەن ھاۋارايى ئەھۋالى.\n جۇغراپىيىلىك ئورۇننى ئاپتوماتىك بەلگىلىگىلى ياكى قولدا بەلگىلىگىلى بولىدۇ. ئاندىن 6 سائەتلىك پەرەز كۆرسىتىلىدۇ.\n بۇ ھالەتنى كالېندار دېتالىغا ئوخشاش باشقا جايلارغىمۇ بىرلەشتۈرگىلى بولىدۇ.",
+ "{temperature} {unit} clear sky later today" : "بۈگۈن {temperature} {unit} سۈزۈك ئاسمان",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} سۈزۈك ئاسمان",
+ "{temperature} {unit} cloudy later today" : "بۈگۈن {temperature} {unit} بۇلۇتلۇق",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} بۇلۇتلۇق",
+ "{temperature} {unit} snow and thunder later today" : "بۈگۈن {temperature} {unit} قار ۋە گۈلدۈرمامىلىق يامغۇر",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} قار ۋە گۈلدۈرماما",
+ "{temperature} {unit} snow showers and thunder later today" : "بۈگۈن {temperature} {unit} قار ياغىدۇ ۋە گۈلدۈرماما",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} قار يامغۇر ۋە گۈلدۈرمامىلىق يامغۇر}",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "بۈگۈن {temperature} {unit}",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} قار ياغىدۇ ، گۈلدۈرمامىلىق ۋە شىمالىي قۇتۇپ شەپەق نۇرى",
+ "{temperature} {unit} snow showers later today" : "بۈگۈن {temperature} {unit} قار ياغدى",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} قار ياغىدۇ}",
+ "{temperature} {unit} snow showers and polar twilight later today" : "بۈگۈن {temperature} {unit} قار ياغىدۇ ۋە شىمالىي قۇتۇپ نۇرى",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} قار ياغىدۇ ۋە قۇتۇپ شەپەق نۇرى}",
+ "{temperature} {unit} snow later today" : "بۈگۈن {temperature} {unit} قار",
+ "{temperature} {unit} snow" : "{temperature} {unit} قار",
+ "{temperature} {unit} fair weather later today" : "بۈگۈن {temperature} {unit} ئادىل ھاۋارايى",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ئادىل ھاۋارايى",
+ "{temperature} {unit} partly cloudy later today" : "بۈگۈن {temperature} {unit} قىسمەن بۇلۇتلۇق",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} قىسمەن بۇلۇتلۇق",
+ "{temperature} {unit} foggy later today" : "بۈگۈن {temperature} {unit} تۇمانلىق",
+ "{temperature} {unit} foggy" : "{temperature} {unit} تۇمانلىق",
+ "{temperature} {unit} light rainfall later today" : "بۈگۈن {temperature} {unit} ئازراق يامغۇر",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} ئازراق يامغۇر",
+ "{temperature} {unit} rainfall later today" : "بۈگۈن {temperature} {unit} يامغۇر",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} يامغۇر",
+ "{temperature} {unit} heavy rainfall later today" : "بۈگۈن {temperature} {unit} قاتتىق يامغۇر",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} قاتتىق يامغۇر",
+ "{temperature} {unit} rainfall showers later today" : "بۈگۈن {temperature} {unit} يامغۇر ياغدى",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} يامغۇرلۇق يامغۇر",
+ "{temperature} {unit} light rainfall showers later today" : "بۈگۈن {temperature} {unit} ئازراق يامغۇر ياغىدۇ",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} ئازراق يامغۇر ياغىدۇ",
+ "{temperature} {unit} heavy rainfall showers later today" : "بۈگۈن {temperature} {unit} قاتتىق يامغۇر ياغىدۇ",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} قاتتىق يامغۇر ياغىدۇ",
+ "More weather for {adr}" : "تېخىمۇ كۆپ ھاۋارايى {adr}",
+ "Loading weather" : "ھاۋا رايى",
+ "Set location for weather" : "ھاۋارايىغا ئورۇن بەلگىلەڭ",
+ "Remove from favorites" : "Remove from favorites",
+ "Add as favorite" : "ياقتۇرىدىغاندەك قوشۇڭ",
+ "You are not logged in." : "سىز كىرمىدىڭىز.",
+ "There was an error getting the weather status information." : "ھاۋارايى ئەھۋالى ئۇچۇرىغا ئېرىشىشتە خاتالىق كۆرۈلدى.",
+ "No weather information found" : "ھاۋارايى ئۇچۇرى تېپىلمىدى",
+ "Location not found" : "ئورنى تېپىلمىدى",
+ "There was an error setting the location address." : "ئورۇن ئادرېسىنى تەڭشەشتە خاتالىق كۆرۈلدى.",
+ "There was an error setting the location." : "ئورۇن بەلگىلەشتە خاتالىق كۆرۈلدى.",
+ "There was an error saving the mode." : "ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى.",
+ "There was an error using personal address." : "شەخسىي ئادرېسنى ئىشلىتىپ خاتالىق كۆرۈلدى.",
+ "Unknown weather code" : "نامەلۇم ھاۋارايى كودى",
+ "Detect location" : "ئورۇننى ئېنىقلاڭ",
+ "Set custom address" : "ئىختىيارى ئادرېس بەلگىلەڭ",
+ "Favorites" : "يىغقۇچ"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/weather_status/l10n/ug.json b/apps/weather_status/l10n/ug.json
new file mode 100644
index 00000000000..bdb96abdaca
--- /dev/null
+++ b/apps/weather_status/l10n/ug.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "نامەلۇم ئادرېس",
+ "No result." : "ھېچقانداق نەتىجە يوق.",
+ "Malformed JSON data." : "JSON سانلىق مەلۇماتلىرى ئۆزگەرتىلدى.",
+ "Error" : "خاتالىق",
+ "Weather status" : "ھاۋارايى ئەھۋالى",
+ "Weather status in your dashboard" : "باشقۇرۇش تاختىڭىزدىكى ھاۋارايى ئەھۋالى",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "باش تاختا دېتالىغا بىرلەشتۈرۈلگەن ھاۋارايى ئەھۋالى.\n جۇغراپىيىلىك ئورۇننى ئاپتوماتىك بەلگىلىگىلى ياكى قولدا بەلگىلىگىلى بولىدۇ. ئاندىن 6 سائەتلىك پەرەز كۆرسىتىلىدۇ.\n بۇ ھالەتنى كالېندار دېتالىغا ئوخشاش باشقا جايلارغىمۇ بىرلەشتۈرگىلى بولىدۇ.",
+ "{temperature} {unit} clear sky later today" : "بۈگۈن {temperature} {unit} سۈزۈك ئاسمان",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} سۈزۈك ئاسمان",
+ "{temperature} {unit} cloudy later today" : "بۈگۈن {temperature} {unit} بۇلۇتلۇق",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} بۇلۇتلۇق",
+ "{temperature} {unit} snow and thunder later today" : "بۈگۈن {temperature} {unit} قار ۋە گۈلدۈرمامىلىق يامغۇر",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} قار ۋە گۈلدۈرماما",
+ "{temperature} {unit} snow showers and thunder later today" : "بۈگۈن {temperature} {unit} قار ياغىدۇ ۋە گۈلدۈرماما",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} قار يامغۇر ۋە گۈلدۈرمامىلىق يامغۇر}",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "بۈگۈن {temperature} {unit}",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} قار ياغىدۇ ، گۈلدۈرمامىلىق ۋە شىمالىي قۇتۇپ شەپەق نۇرى",
+ "{temperature} {unit} snow showers later today" : "بۈگۈن {temperature} {unit} قار ياغدى",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} قار ياغىدۇ}",
+ "{temperature} {unit} snow showers and polar twilight later today" : "بۈگۈن {temperature} {unit} قار ياغىدۇ ۋە شىمالىي قۇتۇپ نۇرى",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} قار ياغىدۇ ۋە قۇتۇپ شەپەق نۇرى}",
+ "{temperature} {unit} snow later today" : "بۈگۈن {temperature} {unit} قار",
+ "{temperature} {unit} snow" : "{temperature} {unit} قار",
+ "{temperature} {unit} fair weather later today" : "بۈگۈن {temperature} {unit} ئادىل ھاۋارايى",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} ئادىل ھاۋارايى",
+ "{temperature} {unit} partly cloudy later today" : "بۈگۈن {temperature} {unit} قىسمەن بۇلۇتلۇق",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} قىسمەن بۇلۇتلۇق",
+ "{temperature} {unit} foggy later today" : "بۈگۈن {temperature} {unit} تۇمانلىق",
+ "{temperature} {unit} foggy" : "{temperature} {unit} تۇمانلىق",
+ "{temperature} {unit} light rainfall later today" : "بۈگۈن {temperature} {unit} ئازراق يامغۇر",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} ئازراق يامغۇر",
+ "{temperature} {unit} rainfall later today" : "بۈگۈن {temperature} {unit} يامغۇر",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} يامغۇر",
+ "{temperature} {unit} heavy rainfall later today" : "بۈگۈن {temperature} {unit} قاتتىق يامغۇر",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} قاتتىق يامغۇر",
+ "{temperature} {unit} rainfall showers later today" : "بۈگۈن {temperature} {unit} يامغۇر ياغدى",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} يامغۇرلۇق يامغۇر",
+ "{temperature} {unit} light rainfall showers later today" : "بۈگۈن {temperature} {unit} ئازراق يامغۇر ياغىدۇ",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} ئازراق يامغۇر ياغىدۇ",
+ "{temperature} {unit} heavy rainfall showers later today" : "بۈگۈن {temperature} {unit} قاتتىق يامغۇر ياغىدۇ",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} قاتتىق يامغۇر ياغىدۇ",
+ "More weather for {adr}" : "تېخىمۇ كۆپ ھاۋارايى {adr}",
+ "Loading weather" : "ھاۋا رايى",
+ "Set location for weather" : "ھاۋارايىغا ئورۇن بەلگىلەڭ",
+ "Remove from favorites" : "Remove from favorites",
+ "Add as favorite" : "ياقتۇرىدىغاندەك قوشۇڭ",
+ "You are not logged in." : "سىز كىرمىدىڭىز.",
+ "There was an error getting the weather status information." : "ھاۋارايى ئەھۋالى ئۇچۇرىغا ئېرىشىشتە خاتالىق كۆرۈلدى.",
+ "No weather information found" : "ھاۋارايى ئۇچۇرى تېپىلمىدى",
+ "Location not found" : "ئورنى تېپىلمىدى",
+ "There was an error setting the location address." : "ئورۇن ئادرېسىنى تەڭشەشتە خاتالىق كۆرۈلدى.",
+ "There was an error setting the location." : "ئورۇن بەلگىلەشتە خاتالىق كۆرۈلدى.",
+ "There was an error saving the mode." : "ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى.",
+ "There was an error using personal address." : "شەخسىي ئادرېسنى ئىشلىتىپ خاتالىق كۆرۈلدى.",
+ "Unknown weather code" : "نامەلۇم ھاۋارايى كودى",
+ "Detect location" : "ئورۇننى ئېنىقلاڭ",
+ "Set custom address" : "ئىختىيارى ئادرېس بەلگىلەڭ",
+ "Favorites" : "يىغقۇچ"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/uk.js b/apps/weather_status/l10n/uk.js
new file mode 100644
index 00000000000..23ae208a767
--- /dev/null
+++ b/apps/weather_status/l10n/uk.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Невідома адреса",
+ "No result." : "Жодного результату.",
+ "Malformed JSON data." : "Неправильні дані JSON.",
+ "Error" : "Помилка",
+ "Weather status" : "Прогноз погоди",
+ "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Стан погоди інтегрований в додаток Dashboard.\n Географічне розташування може бути визначено автоматично або вручну. Потім відображається прогноз на 6 годин.\n Цей статус також може бути інтегрований в інші місця, наприклад, в додаток \"Календар\".",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ясне небо пізніше сьогодні",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясне небо",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} хмарно пізніше сьогодні",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} хмарно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} сніг та грім сьогодні ввечері",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} сніг і грім",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} сьогодні ввечері снігопад та грім",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} снігові зливи та грім",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} сьогодні ввечері снігопади, грім та полярні сутінки",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} снігові зливи, грім і полярні сутінки",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Сьогодні ввечері сніг зі снігом.",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} снігопади",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Сьогодні ввечері снігопади та полярні сутінки",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} снігопади та полярні сутінки",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Сьогодні сніг.",
+ "{temperature} {unit} snow" : "{temperature} {unit} сніг",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} гарна погода пізніше сьогодні",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} гарна погода",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} мінлива хмарність пізніше сьогодні",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} мінлива хмарність",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} туман пізніше сьогодні",
+ "{temperature} {unit} foggy" : "{temperature} {unit} туман",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} невеликий дощ пізніше сьогодні",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} невеликий дощ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} опадів пізніше сьогодні",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} опади",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} сьогодні сильний дощ",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} сильні опади",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} дощ пізніше сьогодні",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} злива",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} невеликий дощ пізніше сьогодні",
+ "{temperature} {unit} light rainfall showers" : " {temperature} {unit} невеликі дощові зливи",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} сильний дощ пізніше сьогодні",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} проливні дощі",
+ "More weather for {adr}" : "Більше інформації про погоду для {adr}",
+ "Loading weather" : "Завантаження інформації про стан погоди",
+ "Set location for weather" : "Встановіть місце для погоди",
+ "Remove from favorites" : "Прибрати зірочку",
+ "Add as favorite" : "Позначити зірочкою",
+ "You are not logged in." : "Ви не ввійшли до системи.",
+ "There was an error getting the weather status information." : "Виникла помилка при отриманні інформації про стан погоди.",
+ "No weather information found" : "Інформацію про погоду не знайдено",
+ "Location not found" : "Місце розташування не знайдено",
+ "There was an error setting the location address." : "Виникла помилка при встановленні адреси розташування.",
+ "There was an error setting the location." : "Під час встановлення місця розташування сталася помилка.",
+ "There was an error saving the mode." : "Під час збереження режиму сталася помилка.",
+ "There was an error using personal address." : "Під час використання особистої адреси сталася помилка.",
+ "Unknown weather code" : "Невідомий код погоди",
+ "Detect location" : "Визначити місце розташування",
+ "Set custom address" : "Встановити власну адресу",
+ "Favorites" : "Із зірочкою"
+},
+"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/weather_status/l10n/uk.json b/apps/weather_status/l10n/uk.json
new file mode 100644
index 00000000000..f38063daf56
--- /dev/null
+++ b/apps/weather_status/l10n/uk.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "Невідома адреса",
+ "No result." : "Жодного результату.",
+ "Malformed JSON data." : "Неправильні дані JSON.",
+ "Error" : "Помилка",
+ "Weather status" : "Прогноз погоди",
+ "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Стан погоди інтегрований в додаток Dashboard.\n Географічне розташування може бути визначено автоматично або вручну. Потім відображається прогноз на 6 годин.\n Цей статус також може бути інтегрований в інші місця, наприклад, в додаток \"Календар\".",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} ясне небо пізніше сьогодні",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} ясне небо",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} хмарно пізніше сьогодні",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} хмарно",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} сніг та грім сьогодні ввечері",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} сніг і грім",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} сьогодні ввечері снігопад та грім",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} снігові зливи та грім",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} сьогодні ввечері снігопади, грім та полярні сутінки",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} снігові зливи, грім і полярні сутінки",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} Сьогодні ввечері сніг зі снігом.",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} снігопади",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Сьогодні ввечері снігопади та полярні сутінки",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} снігопади та полярні сутінки",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} Сьогодні сніг.",
+ "{temperature} {unit} snow" : "{temperature} {unit} сніг",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} гарна погода пізніше сьогодні",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} гарна погода",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} мінлива хмарність пізніше сьогодні",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} мінлива хмарність",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} туман пізніше сьогодні",
+ "{temperature} {unit} foggy" : "{temperature} {unit} туман",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} невеликий дощ пізніше сьогодні",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} невеликий дощ",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} опадів пізніше сьогодні",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} опади",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} сьогодні сильний дощ",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} сильні опади",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} дощ пізніше сьогодні",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} злива",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} невеликий дощ пізніше сьогодні",
+ "{temperature} {unit} light rainfall showers" : " {temperature} {unit} невеликі дощові зливи",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} сильний дощ пізніше сьогодні",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} проливні дощі",
+ "More weather for {adr}" : "Більше інформації про погоду для {adr}",
+ "Loading weather" : "Завантаження інформації про стан погоди",
+ "Set location for weather" : "Встановіть місце для погоди",
+ "Remove from favorites" : "Прибрати зірочку",
+ "Add as favorite" : "Позначити зірочкою",
+ "You are not logged in." : "Ви не ввійшли до системи.",
+ "There was an error getting the weather status information." : "Виникла помилка при отриманні інформації про стан погоди.",
+ "No weather information found" : "Інформацію про погоду не знайдено",
+ "Location not found" : "Місце розташування не знайдено",
+ "There was an error setting the location address." : "Виникла помилка при встановленні адреси розташування.",
+ "There was an error setting the location." : "Під час встановлення місця розташування сталася помилка.",
+ "There was an error saving the mode." : "Під час збереження режиму сталася помилка.",
+ "There was an error using personal address." : "Під час використання особистої адреси сталася помилка.",
+ "Unknown weather code" : "Невідомий код погоди",
+ "Detect location" : "Визначити місце розташування",
+ "Set custom address" : "Встановити власну адресу",
+ "Favorites" : "Із зірочкою"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/vi.js b/apps/weather_status/l10n/vi.js
new file mode 100644
index 00000000000..a62615e405e
--- /dev/null
+++ b/apps/weather_status/l10n/vi.js
@@ -0,0 +1,49 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "Địa chỉ không xác định",
+ "No result." : "Không có kết quả",
+ "Error" : "Lỗi",
+ "Weather status" : "Tình trạng thời tiết",
+ "Weather status in your dashboard" : "Tình trạng thời tiết trên bảng điều khiển của bạn",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Tình trạng thời tiết được tích hợp trong ứng dụng Dashboard.\nVị trí địa lý có thể được xác định tự động hoặc được xác định thủ công. Một dự báo 6 giờ sẽ được hiển thị.\nTình trạng này cũng có thể được tích hợp vào các nơi khác như ứng dụng Lịch.",
+ "{temperature} {unit} clear sky later today" : "Trời quang đãng vào cuối ngày hôm nay",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} trời quang",
+ "{temperature} {unit} cloudy later today" : "Trời nhiều mây vào cuối ngày hôm nay",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nhiều mây",
+ "{temperature} {unit} fair weather later today" : "{temperature}{unit}thời tiết đẹp vào cuối ngày hôm nay",
+ "{temperature} {unit} fair weather" : "{temperature}{unit}thời tiết đẹp",
+ "{temperature} {unit} partly cloudy later today" : "{temperature}{unit}có mây rải rác vào cuối ngày hôm nay",
+ "{temperature} {unit} partly cloudy" : "{temperature}{unit}có mây rải rác",
+ "{temperature} {unit} foggy later today" : "{temperature}{unit}sương mù vào cuối ngày hôm nay",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sương mù",
+ "{temperature} {unit} light rainfall later today" : "{temperature}{unit}mưa nhẹ vào cuối ngày hôm nay",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} mưa nhẹ",
+ "{temperature} {unit} rainfall later today" : "{temperature}{unit}mưa vào cuối ngày hôm nay",
+ "{temperature} {unit} rainfall" : "{temperature}{unit}mưa",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature}{unit}mưa lớn vào cuối ngày hôm nay",
+ "{temperature} {unit} heavy rainfall" : "{temperature}{unit}mưa lớn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature}{unit}có mưa rào vào cuối ngày hôm nay",
+ "{temperature} {unit} rainfall showers" : "{temperature}{unit}mưa rào",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature}{unit}mưa rào nhẹ vào cuối ngày hôm nay",
+ "{temperature} {unit} light rainfall showers" : "{temperature}{unit}mưa rào nhẹ",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature}{unit}mưa rào lớn vào cuối ngày hôm nay",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature}{unit}Mưa rào lớn",
+ "More weather for {adr}" : "Thêm thông tin thời tiết cho {adr}",
+ "Loading weather" : "Đang tải thông tin thời tiết",
+ "Set location for weather" : "Chọn vị trí cho thời tiết",
+ "Remove from favorites" : "Xóa khỏi ưa thích",
+ "Add as favorite" : "Thêm vào yêu thích",
+ "You are not logged in." : "Bạn chưa đăng nhập",
+ "There was an error getting the weather status information." : "Đã xảy ra lỗi khi lấy thông tin tình trạng thời tiết.",
+ "No weather information found" : " Không tìm thấy thông tin thời tiết.",
+ "Location not found" : "Không tìm thấy vị trí",
+ "There was an error setting the location address." : "Đã xảy ra lỗi khi thiết lập địa chỉ vị trí.",
+ "There was an error setting the location." : "Đã xảy ra lỗi khi thiết lập vị trí.",
+ "There was an error saving the mode." : "Đã xảy ra lỗi khi lưu chế độ.",
+ "There was an error using personal address." : "Có lỗi khi sử dụng địa chỉ cá nhân.",
+ "Detect location" : "Phát hiện vị trí",
+ "Set custom address" : "Cài đặt vị trí tuỳ chọn",
+ "Favorites" : "Ưa thích"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/vi.json b/apps/weather_status/l10n/vi.json
new file mode 100644
index 00000000000..e0c026ad1cc
--- /dev/null
+++ b/apps/weather_status/l10n/vi.json
@@ -0,0 +1,47 @@
+{ "translations": {
+ "Unknown address" : "Địa chỉ không xác định",
+ "No result." : "Không có kết quả",
+ "Error" : "Lỗi",
+ "Weather status" : "Tình trạng thời tiết",
+ "Weather status in your dashboard" : "Tình trạng thời tiết trên bảng điều khiển của bạn",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Tình trạng thời tiết được tích hợp trong ứng dụng Dashboard.\nVị trí địa lý có thể được xác định tự động hoặc được xác định thủ công. Một dự báo 6 giờ sẽ được hiển thị.\nTình trạng này cũng có thể được tích hợp vào các nơi khác như ứng dụng Lịch.",
+ "{temperature} {unit} clear sky later today" : "Trời quang đãng vào cuối ngày hôm nay",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} trời quang",
+ "{temperature} {unit} cloudy later today" : "Trời nhiều mây vào cuối ngày hôm nay",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} nhiều mây",
+ "{temperature} {unit} fair weather later today" : "{temperature}{unit}thời tiết đẹp vào cuối ngày hôm nay",
+ "{temperature} {unit} fair weather" : "{temperature}{unit}thời tiết đẹp",
+ "{temperature} {unit} partly cloudy later today" : "{temperature}{unit}có mây rải rác vào cuối ngày hôm nay",
+ "{temperature} {unit} partly cloudy" : "{temperature}{unit}có mây rải rác",
+ "{temperature} {unit} foggy later today" : "{temperature}{unit}sương mù vào cuối ngày hôm nay",
+ "{temperature} {unit} foggy" : "{temperature} {unit} sương mù",
+ "{temperature} {unit} light rainfall later today" : "{temperature}{unit}mưa nhẹ vào cuối ngày hôm nay",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} mưa nhẹ",
+ "{temperature} {unit} rainfall later today" : "{temperature}{unit}mưa vào cuối ngày hôm nay",
+ "{temperature} {unit} rainfall" : "{temperature}{unit}mưa",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature}{unit}mưa lớn vào cuối ngày hôm nay",
+ "{temperature} {unit} heavy rainfall" : "{temperature}{unit}mưa lớn",
+ "{temperature} {unit} rainfall showers later today" : "{temperature}{unit}có mưa rào vào cuối ngày hôm nay",
+ "{temperature} {unit} rainfall showers" : "{temperature}{unit}mưa rào",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature}{unit}mưa rào nhẹ vào cuối ngày hôm nay",
+ "{temperature} {unit} light rainfall showers" : "{temperature}{unit}mưa rào nhẹ",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature}{unit}mưa rào lớn vào cuối ngày hôm nay",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature}{unit}Mưa rào lớn",
+ "More weather for {adr}" : "Thêm thông tin thời tiết cho {adr}",
+ "Loading weather" : "Đang tải thông tin thời tiết",
+ "Set location for weather" : "Chọn vị trí cho thời tiết",
+ "Remove from favorites" : "Xóa khỏi ưa thích",
+ "Add as favorite" : "Thêm vào yêu thích",
+ "You are not logged in." : "Bạn chưa đăng nhập",
+ "There was an error getting the weather status information." : "Đã xảy ra lỗi khi lấy thông tin tình trạng thời tiết.",
+ "No weather information found" : " Không tìm thấy thông tin thời tiết.",
+ "Location not found" : "Không tìm thấy vị trí",
+ "There was an error setting the location address." : "Đã xảy ra lỗi khi thiết lập địa chỉ vị trí.",
+ "There was an error setting the location." : "Đã xảy ra lỗi khi thiết lập vị trí.",
+ "There was an error saving the mode." : "Đã xảy ra lỗi khi lưu chế độ.",
+ "There was an error using personal address." : "Có lỗi khi sử dụng địa chỉ cá nhân.",
+ "Detect location" : "Phát hiện vị trí",
+ "Set custom address" : "Cài đặt vị trí tuỳ chọn",
+ "Favorites" : "Ưa thích"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/zh_CN.js b/apps/weather_status/l10n/zh_CN.js
new file mode 100644
index 00000000000..398620e5880
--- /dev/null
+++ b/apps/weather_status/l10n/zh_CN.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "未知地址",
+ "No result." : "无结果。",
+ "Malformed JSON data." : "JSON 数据格式错误。",
+ "Error" : "错误",
+ "Weather status" : "天气状况",
+ "Weather status in your dashboard" : "仪表盘中的天气状况",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "天气状态集成在仪表盘应用中。\n 地理位置可以自动确定或手动定义,然后显示 6 小时预报。\n 此状态也可以集成到其他地方,如日历应用。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日晚些时候晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日晚些时候多云",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多云",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今天晚些时候下雪和打雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪和打雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今天晚些时候有阵雪和打雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 阵雪和打雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今天晚些时候,阵雪、打雷和极夜",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 阵雪、打雷和极夜",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今天晚些时候有阵雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 阵雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今天晚些时候有阵雪和极夜",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 阵雪和极夜",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今天晚些时候下雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 下雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日晚些时候天气不错",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 天气不错",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日晚些时候局部多云",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多云",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日晚些时候有雾",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有雾",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日晚些时候有零星小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 零星小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日晚些时候有降雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 降雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日晚些时候有强降雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 强降雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日晚些时候有阵雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 阵雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日晚些时候有零星阵雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 零星阵雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日晚些时候有强阵雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 强阵雨",
+ "More weather for {adr}" : "{adr} 的更多天气信息",
+ "Loading weather" : "正在加载天气",
+ "Set location for weather" : "设置天气位置",
+ "Remove from favorites" : "从收藏夹移除",
+ "Add as favorite" : "添加到收藏",
+ "You are not logged in." : "您没有登录。",
+ "There was an error getting the weather status information." : "获取天气状态信息时出错。",
+ "No weather information found" : "找不到天气信息",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "设置位置地址时出错。",
+ "There was an error setting the location." : "设置位置时出错。",
+ "There was an error saving the mode." : "保存模式时出错。",
+ "There was an error using personal address." : "使用个人地址出错。",
+ "Unknown weather code" : "未知天气代码",
+ "Detect location" : "检测地点",
+ "Set custom address" : "自定义地址",
+ "Favorites" : "收藏"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/zh_CN.json b/apps/weather_status/l10n/zh_CN.json
new file mode 100644
index 00000000000..34bb6775e8d
--- /dev/null
+++ b/apps/weather_status/l10n/zh_CN.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "未知地址",
+ "No result." : "无结果。",
+ "Malformed JSON data." : "JSON 数据格式错误。",
+ "Error" : "错误",
+ "Weather status" : "天气状况",
+ "Weather status in your dashboard" : "仪表盘中的天气状况",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "天气状态集成在仪表盘应用中。\n 地理位置可以自动确定或手动定义,然后显示 6 小时预报。\n 此状态也可以集成到其他地方,如日历应用。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日晚些时候晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日晚些时候多云",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多云",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今天晚些时候下雪和打雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪和打雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今天晚些时候有阵雪和打雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 阵雪和打雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今天晚些时候,阵雪、打雷和极夜",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 阵雪、打雷和极夜",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今天晚些时候有阵雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 阵雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今天晚些时候有阵雪和极夜",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 阵雪和极夜",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今天晚些时候下雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 下雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日晚些时候天气不错",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 天气不错",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日晚些时候局部多云",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多云",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日晚些时候有雾",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有雾",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日晚些时候有零星小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 零星小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日晚些时候有降雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 降雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日晚些时候有强降雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 强降雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日晚些时候有阵雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 阵雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日晚些时候有零星阵雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 零星阵雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日晚些时候有强阵雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 强阵雨",
+ "More weather for {adr}" : "{adr} 的更多天气信息",
+ "Loading weather" : "正在加载天气",
+ "Set location for weather" : "设置天气位置",
+ "Remove from favorites" : "从收藏夹移除",
+ "Add as favorite" : "添加到收藏",
+ "You are not logged in." : "您没有登录。",
+ "There was an error getting the weather status information." : "获取天气状态信息时出错。",
+ "No weather information found" : "找不到天气信息",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "设置位置地址时出错。",
+ "There was an error setting the location." : "设置位置时出错。",
+ "There was an error saving the mode." : "保存模式时出错。",
+ "There was an error using personal address." : "使用个人地址出错。",
+ "Unknown weather code" : "未知天气代码",
+ "Detect location" : "检测地点",
+ "Set custom address" : "自定义地址",
+ "Favorites" : "收藏"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/zh_HK.js b/apps/weather_status/l10n/zh_HK.js
new file mode 100644
index 00000000000..bc63ac821da
--- /dev/null
+++ b/apps/weather_status/l10n/zh_HK.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "地址不詳",
+ "No result." : "無結果",
+ "Malformed JSON data." : "JSON 資料格式錯誤。",
+ "Error" : "錯誤",
+ "Weather status" : "天氣報告",
+ "Weather status in your dashboard" : "您儀表板中的天氣報告",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "整合在儀表板應用程式中的天氣狀態。\n 地理位置可以自動偵測或手動定義。然後會顯示6小時的預測。\n 此狀態也可以整合到其他地方,如「日曆」應用程式。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今天稍後天晴",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 天晴",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今天稍後密雲",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 密雲",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日稍後會下雪與行雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪與行雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日稍後有陣雪與行雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 陣雪與行雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪、行雷與極地曙暮光",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 陣雪、行雷與極地曙暮光",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日稍後陣雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 陣雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪與極地曙暮光",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 有陣雪與極地曙暮光",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日稍後有雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 有雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今天稍後好天氣",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 好天氣",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 天稍後局部密雲",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部密雲",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今天稍後有霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日稍後有微雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 微雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今天稍後有雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 有雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今天稍後有大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今天稍後有陣雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 陣雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日稍後有小驟雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小驟雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日稍後有大驟雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 大驟雨",
+ "More weather for {adr}" : "{adr} 的更多天氣",
+ "Loading weather" : "正在載入天氣",
+ "Set location for weather" : "設定天氣位置",
+ "Remove from favorites" : "從最愛中移除",
+ "Add as favorite" : "加到我的最愛",
+ "You are not logged in." : "您未登入",
+ "There was an error getting the weather status information." : "取得天氣報告資訊時發生錯誤。",
+ "No weather information found" : "找不到天氣資訊",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "設定位置地址時發生錯誤。",
+ "There was an error setting the location." : "設定位置時發生錯誤。",
+ "There was an error saving the mode." : "儲存模式時發生錯誤。",
+ "There was an error using personal address." : "使用個人地址時發生錯誤。",
+ "Unknown weather code" : "天氣代碼不詳",
+ "Detect location" : "偵測位置",
+ "Set custom address" : "設定自訂位置",
+ "Favorites" : "我的最愛"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/zh_HK.json b/apps/weather_status/l10n/zh_HK.json
new file mode 100644
index 00000000000..df54257c4b9
--- /dev/null
+++ b/apps/weather_status/l10n/zh_HK.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "地址不詳",
+ "No result." : "無結果",
+ "Malformed JSON data." : "JSON 資料格式錯誤。",
+ "Error" : "錯誤",
+ "Weather status" : "天氣報告",
+ "Weather status in your dashboard" : "您儀表板中的天氣報告",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "整合在儀表板應用程式中的天氣狀態。\n 地理位置可以自動偵測或手動定義。然後會顯示6小時的預測。\n 此狀態也可以整合到其他地方,如「日曆」應用程式。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今天稍後天晴",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 天晴",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今天稍後密雲",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 密雲",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日稍後會下雪與行雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪與行雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日稍後有陣雪與行雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 陣雪與行雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪、行雷與極地曙暮光",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 陣雪、行雷與極地曙暮光",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日稍後陣雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 陣雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪與極地曙暮光",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 有陣雪與極地曙暮光",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日稍後有雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 有雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今天稍後好天氣",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 好天氣",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 天稍後局部密雲",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部密雲",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今天稍後有霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日稍後有微雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 微雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今天稍後有雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 有雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今天稍後有大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今天稍後有陣雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 陣雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日稍後有小驟雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小驟雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日稍後有大驟雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 大驟雨",
+ "More weather for {adr}" : "{adr} 的更多天氣",
+ "Loading weather" : "正在載入天氣",
+ "Set location for weather" : "設定天氣位置",
+ "Remove from favorites" : "從最愛中移除",
+ "Add as favorite" : "加到我的最愛",
+ "You are not logged in." : "您未登入",
+ "There was an error getting the weather status information." : "取得天氣報告資訊時發生錯誤。",
+ "No weather information found" : "找不到天氣資訊",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "設定位置地址時發生錯誤。",
+ "There was an error setting the location." : "設定位置時發生錯誤。",
+ "There was an error saving the mode." : "儲存模式時發生錯誤。",
+ "There was an error using personal address." : "使用個人地址時發生錯誤。",
+ "Unknown weather code" : "天氣代碼不詳",
+ "Detect location" : "偵測位置",
+ "Set custom address" : "設定自訂位置",
+ "Favorites" : "我的最愛"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/l10n/zh_TW.js b/apps/weather_status/l10n/zh_TW.js
new file mode 100644
index 00000000000..f940f6765ec
--- /dev/null
+++ b/apps/weather_status/l10n/zh_TW.js
@@ -0,0 +1,63 @@
+OC.L10N.register(
+ "weather_status",
+ {
+ "Unknown address" : "未知的地址",
+ "No result." : "無結果。",
+ "Malformed JSON data." : "JSON 資料格式錯誤。",
+ "Error" : "錯誤",
+ "Weather status" : "天氣狀態",
+ "Weather status in your dashboard" : "您儀表板中的天氣狀態",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "整合在儀表板應用程式中的天氣狀態。\n 地理位置可以自動偵測或手動定義。然後會顯示6小時的預測。\n 此狀態也可以整合到其他地方,如「日曆」應用程式。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日稍晚晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日稍晚多雲",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多雲",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日稍後會下雪與打雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪與打雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日稍後有陣雪與打雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 陣雪與打雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪、打雷與極地曙暮光",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 陣雪、打雷與極地曙暮光",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日稍後陣雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 陣雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪與極地曙暮光",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 有陣雪與極地曙暮光",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日稍後有雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 有雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日稍晚好天氣",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 好天氣",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日稍晚局部多雲",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多雲",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日稍晚有霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日稍晚小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日稍晚有雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 有雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日稍晚大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日稍晚陣雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 陣雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日稍晚小陣雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小陣雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日稍晚強陣雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 強陣雨",
+ "More weather for {adr}" : "{adr} 的更多天氣",
+ "Loading weather" : "正在載入天氣",
+ "Set location for weather" : "設定天氣位置",
+ "Remove from favorites" : "從喜愛中移除",
+ "Add as favorite" : "新增為喜愛",
+ "You are not logged in." : "您未登入。",
+ "There was an error getting the weather status information." : "取得天氣狀態資訊時發生錯誤。",
+ "No weather information found" : "找不到天氣資訊",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "設定位置地址時發生錯誤。",
+ "There was an error setting the location." : "設定位置時發生錯誤。",
+ "There was an error saving the mode." : "儲存模式時發生錯誤。",
+ "There was an error using personal address." : "使用個人地址時發生錯誤。",
+ "Unknown weather code" : "未知天氣代碼",
+ "Detect location" : "偵測位置",
+ "Set custom address" : "設定自訂位置",
+ "Favorites" : "喜愛"
+},
+"nplurals=1; plural=0;");
diff --git a/apps/weather_status/l10n/zh_TW.json b/apps/weather_status/l10n/zh_TW.json
new file mode 100644
index 00000000000..ac7cb8a001b
--- /dev/null
+++ b/apps/weather_status/l10n/zh_TW.json
@@ -0,0 +1,61 @@
+{ "translations": {
+ "Unknown address" : "未知的地址",
+ "No result." : "無結果。",
+ "Malformed JSON data." : "JSON 資料格式錯誤。",
+ "Error" : "錯誤",
+ "Weather status" : "天氣狀態",
+ "Weather status in your dashboard" : "您儀表板中的天氣狀態",
+ "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "整合在儀表板應用程式中的天氣狀態。\n 地理位置可以自動偵測或手動定義。然後會顯示6小時的預測。\n 此狀態也可以整合到其他地方,如「日曆」應用程式。",
+ "{temperature} {unit} clear sky later today" : "{temperature} {unit} 今日稍晚晴朗",
+ "{temperature} {unit} clear sky" : "{temperature} {unit} 晴朗",
+ "{temperature} {unit} cloudy later today" : "{temperature} {unit} 今日稍晚多雲",
+ "{temperature} {unit} cloudy" : "{temperature} {unit} 多雲",
+ "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 今日稍後會下雪與打雷",
+ "{temperature} {unit} snow and thunder" : "{temperature} {unit} 下雪與打雷",
+ "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 今日稍後有陣雪與打雷",
+ "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 陣雪與打雷",
+ "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪、打雷與極地曙暮光",
+ "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 陣雪、打雷與極地曙暮光",
+ "{temperature} {unit} snow showers later today" : "{temperature} {unit} 今日稍後陣雪",
+ "{temperature} {unit} snow showers" : "{temperature} {unit} 陣雪",
+ "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 今日稍後有陣雪與極地曙暮光",
+ "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 有陣雪與極地曙暮光",
+ "{temperature} {unit} snow later today" : "{temperature} {unit} 今日稍後有雪",
+ "{temperature} {unit} snow" : "{temperature} {unit} 有雪",
+ "{temperature} {unit} fair weather later today" : "{temperature} {unit} 今日稍晚好天氣",
+ "{temperature} {unit} fair weather" : "{temperature} {unit} 好天氣",
+ "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 今日稍晚局部多雲",
+ "{temperature} {unit} partly cloudy" : "{temperature} {unit} 局部多雲",
+ "{temperature} {unit} foggy later today" : "{temperature} {unit} 今日稍晚有霧",
+ "{temperature} {unit} foggy" : "{temperature} {unit} 有霧",
+ "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 今日稍晚小雨",
+ "{temperature} {unit} light rainfall" : "{temperature} {unit} 小雨",
+ "{temperature} {unit} rainfall later today" : "{temperature} {unit} 今日稍晚有雨",
+ "{temperature} {unit} rainfall" : "{temperature} {unit} 有雨",
+ "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 今日稍晚大雨",
+ "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 大雨",
+ "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 今日稍晚陣雨",
+ "{temperature} {unit} rainfall showers" : "{temperature} {unit} 陣雨",
+ "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 今日稍晚小陣雨",
+ "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 小陣雨",
+ "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 今日稍晚強陣雨",
+ "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 強陣雨",
+ "More weather for {adr}" : "{adr} 的更多天氣",
+ "Loading weather" : "正在載入天氣",
+ "Set location for weather" : "設定天氣位置",
+ "Remove from favorites" : "從喜愛中移除",
+ "Add as favorite" : "新增為喜愛",
+ "You are not logged in." : "您未登入。",
+ "There was an error getting the weather status information." : "取得天氣狀態資訊時發生錯誤。",
+ "No weather information found" : "找不到天氣資訊",
+ "Location not found" : "找不到位置",
+ "There was an error setting the location address." : "設定位置地址時發生錯誤。",
+ "There was an error setting the location." : "設定位置時發生錯誤。",
+ "There was an error saving the mode." : "儲存模式時發生錯誤。",
+ "There was an error using personal address." : "使用個人地址時發生錯誤。",
+ "Unknown weather code" : "未知天氣代碼",
+ "Detect location" : "偵測位置",
+ "Set custom address" : "設定自訂位置",
+ "Favorites" : "喜愛"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/apps/weather_status/lib/AppInfo/Application.php b/apps/weather_status/lib/AppInfo/Application.php
new file mode 100644
index 00000000000..147d69ee543
--- /dev/null
+++ b/apps/weather_status/lib/AppInfo/Application.php
@@ -0,0 +1,49 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\WeatherStatus\AppInfo;
+
+use OCA\WeatherStatus\Capabilities;
+use OCA\WeatherStatus\Listeners\BeforeTemplateRenderedListener;
+use OCP\AppFramework\App;
+use OCP\AppFramework\Bootstrap\IBootContext;
+use OCP\AppFramework\Bootstrap\IBootstrap;
+use OCP\AppFramework\Bootstrap\IRegistrationContext;
+use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
+
+/**
+ * Class Application
+ *
+ * @package OCA\WeatherStatus\AppInfo
+ */
+class Application extends App implements IBootstrap {
+
+ /** @var string */
+ public const APP_ID = 'weather_status';
+
+ /**
+ * Application constructor.
+ *
+ * @param array $urlParams
+ */
+ public function __construct(array $urlParams = []) {
+ parent::__construct(self::APP_ID, $urlParams);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function register(IRegistrationContext $context): void {
+ // Register OCS Capabilities
+ $context->registerCapability(Capabilities::class);
+ $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
+ }
+
+ public function boot(IBootContext $context): void {
+ }
+}
diff --git a/apps/weather_status/lib/Capabilities.php b/apps/weather_status/lib/Capabilities.php
new file mode 100644
index 00000000000..953b40036f3
--- /dev/null
+++ b/apps/weather_status/lib/Capabilities.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\WeatherStatus;
+
+use OCA\WeatherStatus\AppInfo\Application;
+
+use OCP\Capabilities\ICapability;
+
+/**
+ * Class Capabilities
+ *
+ * @package OCA\UserStatus
+ */
+class Capabilities implements ICapability {
+
+ /**
+ * Capabilities constructor.
+ *
+ */
+ public function __construct() {
+ }
+
+ /**
+ * @return array{weather_status: array{enabled: bool}}
+ */
+ public function getCapabilities() {
+ return [
+ Application::APP_ID => [
+ 'enabled' => true,
+ ],
+ ];
+ }
+}
diff --git a/apps/weather_status/lib/Controller/WeatherStatusController.php b/apps/weather_status/lib/Controller/WeatherStatusController.php
new file mode 100644
index 00000000000..c56ea3b97b3
--- /dev/null
+++ b/apps/weather_status/lib/Controller/WeatherStatusController.php
@@ -0,0 +1,135 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\WeatherStatus\Controller;
+
+use OCA\WeatherStatus\ResponseDefinitions;
+use OCA\WeatherStatus\Service\WeatherStatusService;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\NoAdminRequired;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCSController;
+use OCP\IRequest;
+
+/**
+ * @psalm-import-type WeatherStatusForecast from ResponseDefinitions
+ * @psalm-import-type WeatherStatusSuccess from ResponseDefinitions
+ * @psalm-import-type WeatherStatusLocation from ResponseDefinitions
+ * @psalm-import-type WeatherStatusLocationWithSuccess from ResponseDefinitions
+ * @psalm-import-type WeatherStatusLocationWithMode from ResponseDefinitions
+ */
+class WeatherStatusController extends OCSController {
+ public function __construct(
+ string $appName,
+ IRequest $request,
+ private WeatherStatusService $service,
+ private ?string $userId,
+ ) {
+ parent::__construct($appName, $request);
+ }
+
+ /**
+ * Try to use the address set in user personal settings as weather location
+ *
+ * @return DataResponse<Http::STATUS_OK, WeatherStatusLocationWithSuccess, array{}>
+ *
+ * 200: Address updated
+ */
+ #[NoAdminRequired]
+ public function usePersonalAddress(): DataResponse {
+ return new DataResponse($this->service->usePersonalAddress());
+ }
+
+ /**
+ * Change the weather status mode. There are currently 2 modes:
+ * - ask the browser
+ * - use the user defined address
+ *
+ * @param int $mode New mode
+ * @return DataResponse<Http::STATUS_OK, WeatherStatusSuccess, array{}>
+ *
+ * 200: Weather status mode updated
+ */
+ #[NoAdminRequired]
+ public function setMode(int $mode): DataResponse {
+ return new DataResponse($this->service->setMode($mode));
+ }
+
+ /**
+ * Set address and resolve it to get coordinates
+ * or directly set coordinates and get address with reverse geocoding
+ *
+ * @param string|null $address Any approximative or exact address
+ * @param float|null $lat Latitude in decimal degree format
+ * @param float|null $lon Longitude in decimal degree format
+ * @return DataResponse<Http::STATUS_OK, WeatherStatusLocationWithSuccess, array{}>
+ *
+ * 200: Location updated
+ */
+ #[NoAdminRequired]
+ public function setLocation(?string $address, ?float $lat, ?float $lon): DataResponse {
+ $currentWeather = $this->service->setLocation($address, $lat, $lon);
+ return new DataResponse($currentWeather);
+ }
+
+ /**
+ * Get stored user location
+ *
+ * @return DataResponse<Http::STATUS_OK, WeatherStatusLocationWithMode, array{}>
+ *
+ * 200: Location returned
+ */
+ #[NoAdminRequired]
+ public function getLocation(): DataResponse {
+ $location = $this->service->getLocation();
+ return new DataResponse($location);
+ }
+
+ /**
+ * Get forecast for current location
+ *
+ * @return DataResponse<Http::STATUS_OK, list<WeatherStatusForecast>|array{error: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, WeatherStatusSuccess, array{}>
+ *
+ * 200: Forecast returned
+ * 404: Forecast not found
+ */
+ #[NoAdminRequired]
+ public function getForecast(): DataResponse {
+ $forecast = $this->service->getForecast();
+ if (isset($forecast['success']) && $forecast['success'] === false) {
+ return new DataResponse($forecast, Http::STATUS_NOT_FOUND);
+ } else {
+ return new DataResponse($forecast);
+ }
+ }
+
+ /**
+ * Get favorites list
+ *
+ * @return DataResponse<Http::STATUS_OK, list<string>, array{}>
+ *
+ * 200: Favorites returned
+ */
+ #[NoAdminRequired]
+ public function getFavorites(): DataResponse {
+ return new DataResponse($this->service->getFavorites());
+ }
+
+ /**
+ * Set favorites list
+ *
+ * @param list<string> $favorites Favorite addresses
+ * @return DataResponse<Http::STATUS_OK, WeatherStatusSuccess, array{}>
+ *
+ * 200: Favorites updated
+ */
+ #[NoAdminRequired]
+ public function setFavorites(array $favorites): DataResponse {
+ return new DataResponse($this->service->setFavorites($favorites));
+ }
+}
diff --git a/apps/weather_status/lib/Listeners/BeforeTemplateRenderedListener.php b/apps/weather_status/lib/Listeners/BeforeTemplateRenderedListener.php
new file mode 100644
index 00000000000..5d3b76626b6
--- /dev/null
+++ b/apps/weather_status/lib/Listeners/BeforeTemplateRenderedListener.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\WeatherStatus\Listeners;
+
+use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Util;
+
+/**
+ * @template-implements IEventListener<BeforeTemplateRenderedEvent>
+ */
+class BeforeTemplateRenderedListener implements IEventListener {
+
+ /**
+ * Inject our status widget script when the dashboard is loaded
+ * We need to do it like this because there is currently no PHP API for registering "status widgets"
+ */
+ public function handle(Event $event): void {
+ if (!($event instanceof BeforeTemplateRenderedEvent)) {
+ return;
+ }
+
+ // Only handle the dashboard
+ if ($event->getResponse()->getApp() !== 'dashboard') {
+ return;
+ }
+
+ Util::addScript('weather_status', 'weather-status');
+ }
+}
diff --git a/apps/weather_status/lib/ResponseDefinitions.php b/apps/weather_status/lib/ResponseDefinitions.php
new file mode 100644
index 00000000000..17d7cebf76e
--- /dev/null
+++ b/apps/weather_status/lib/ResponseDefinitions.php
@@ -0,0 +1,72 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\WeatherStatus;
+
+/**
+ * https://api.met.no/doc/ForecastJSON compact format according to https://docs.api.met.no/doc/locationforecast/datamodel
+ * @psalm-type WeatherStatusForecast = array{
+ * time: string,
+ * data: array{
+ * instant: array{
+ * details: array{
+ * air_pressure_at_sea_level: numeric,
+ * air_temperature: numeric,
+ * cloud_area_fraction: numeric,
+ * relative_humidity: numeric,
+ * wind_from_direction: numeric,
+ * wind_speed: numeric,
+ * },
+ * },
+ * next_12_hours: array{
+ * summary: array{
+ * symbol_code: string,
+ * },
+ * details: array{
+ * precipitation_amount?: numeric,
+ * },
+ * },
+ * next_1_hours: array{
+ * summary: array{
+ * symbol_code: string,
+ * },
+ * details: array{
+ * precipitation_amount?: numeric,
+ * },
+ * },
+ * next_6_hours: array{
+ * summary: array{
+ * symbol_code: string,
+ * },
+ * details: array{
+ * precipitation_amount?: numeric,
+ * },
+ * },
+ * },
+ * }
+ *
+ * @psalm-type WeatherStatusSuccess = array{
+ * success: bool,
+ * }
+ *
+ * @psalm-type WeatherStatusMode = array{
+ * mode: int,
+ * }
+ * @psalm-type WeatherStatusLocation = array{
+ * lat?: string,
+ * lon?: string,
+ * address?: ?string,
+ * }
+ *
+ * @psalm-type WeatherStatusLocationWithSuccess = WeatherStatusLocation&WeatherStatusSuccess
+ *
+ * @psalm-type WeatherStatusLocationWithMode = WeatherStatusLocation&WeatherStatusMode
+ */
+class ResponseDefinitions {
+}
diff --git a/apps/weather_status/lib/Service/WeatherStatusService.php b/apps/weather_status/lib/Service/WeatherStatusService.php
new file mode 100644
index 00000000000..c93010e7f58
--- /dev/null
+++ b/apps/weather_status/lib/Service/WeatherStatusService.php
@@ -0,0 +1,394 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\WeatherStatus\Service;
+
+use OCA\WeatherStatus\AppInfo\Application;
+use OCA\WeatherStatus\ResponseDefinitions;
+use OCP\Accounts\IAccountManager;
+use OCP\Accounts\PropertyDoesNotExistException;
+use OCP\App\IAppManager;
+use OCP\Http\Client\IClient;
+use OCP\Http\Client\IClientService;
+use OCP\ICache;
+use OCP\ICacheFactory;
+use OCP\IConfig;
+use OCP\IL10N;
+use OCP\IUserManager;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Class WeatherStatusService
+ *
+ * @package OCA\WeatherStatus\Service
+ *
+ * @psalm-import-type WeatherStatusForecast from ResponseDefinitions
+ * @psalm-import-type WeatherStatusSuccess from ResponseDefinitions
+ * @psalm-import-type WeatherStatusLocationWithSuccess from ResponseDefinitions
+ * @psalm-import-type WeatherStatusLocationWithMode from ResponseDefinitions
+ */
+class WeatherStatusService {
+ public const MODE_BROWSER_LOCATION = 1;
+ public const MODE_MANUAL_LOCATION = 2;
+
+ private IClient $client;
+ private ICache $cache;
+ private string $version;
+
+ public function __construct(
+ private IClientService $clientService,
+ private IConfig $config,
+ private IL10N $l10n,
+ private LoggerInterface $logger,
+ private IAccountManager $accountManager,
+ private IUserManager $userManager,
+ private IAppManager $appManager,
+ private ICacheFactory $cacheFactory,
+ private ?string $userId,
+ ) {
+ $this->version = $appManager->getAppVersion(Application::APP_ID);
+ $this->client = $clientService->newClient();
+ $this->cache = $cacheFactory->createDistributed('weatherstatus');
+ }
+
+ /**
+ * Change the weather status mode. There are currently 2 modes:
+ * - ask the browser
+ * - use the user defined address
+ * @param int $mode New mode
+ * @return WeatherStatusSuccess success state
+ */
+ public function setMode(int $mode): array {
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'mode', strval($mode));
+ return ['success' => true];
+ }
+
+ /**
+ * Get favorites list
+ * @return list<string>
+ */
+ public function getFavorites(): array {
+ $favoritesJson = $this->config->getUserValue($this->userId, Application::APP_ID, 'favorites', '');
+ return json_decode($favoritesJson, true) ?: [];
+ }
+
+ /**
+ * Set favorites list
+ * @param list<string> $favorites
+ * @return WeatherStatusSuccess success state
+ */
+ public function setFavorites(array $favorites): array {
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'favorites', json_encode($favorites));
+ return ['success' => true];
+ }
+
+ /**
+ * Try to use the address set in user personal settings as weather location
+ *
+ * @return WeatherStatusLocationWithSuccess with success state and address information
+ */
+ public function usePersonalAddress(): array {
+ $account = $this->accountManager->getAccount($this->userManager->get($this->userId));
+ try {
+ $address = $account->getProperty('address')->getValue();
+ } catch (PropertyDoesNotExistException $e) {
+ return ['success' => false];
+ }
+ if ($address === '') {
+ return ['success' => false];
+ }
+ return $this->setAddress($address);
+ }
+
+ /**
+ * Set address and resolve it to get coordinates
+ * or directly set coordinates and get address with reverse geocoding
+ *
+ * @param string|null $address Any approximative or exact address
+ * @param float|null $lat Latitude in decimal degree format
+ * @param float|null $lon Longitude in decimal degree format
+ * @return WeatherStatusLocationWithSuccess with success state and address information
+ */
+ public function setLocation(?string $address, ?float $lat, ?float $lon): array {
+ if (!is_null($lat) && !is_null($lon)) {
+ // store coordinates
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'lat', strval($lat));
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'lon', strval($lon));
+ // resolve and store formatted address
+ $address = $this->resolveLocation($lat, $lon);
+ $address = $address ?: $this->l10n->t('Unknown address');
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'address', $address);
+ // get and store altitude
+ $altitude = $this->getAltitude($lat, $lon);
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'altitude', strval($altitude));
+ return [
+ 'address' => $address,
+ 'success' => true,
+ ];
+ } elseif ($address) {
+ return $this->setAddress($address);
+ } else {
+ return ['success' => false];
+ }
+ }
+
+ /**
+ * Provide address information from coordinates
+ *
+ * @param float $lat Latitude in decimal degree format
+ * @param float $lon Longitude in decimal degree format
+ */
+ private function resolveLocation(float $lat, float $lon): ?string {
+ $params = [
+ 'lat' => number_format($lat, 2),
+ 'lon' => number_format($lon, 2),
+ 'addressdetails' => 1,
+ 'format' => 'json',
+ ];
+ $url = 'https://nominatim.openstreetmap.org/reverse';
+ $result = $this->requestJSON($url, $params);
+ return $this->formatOsmAddress($result);
+ }
+
+ /**
+ * Get altitude from coordinates
+ *
+ * @param float $lat Latitude in decimal degree format
+ * @param float $lon Longitude in decimal degree format
+ * @return float altitude in meter
+ */
+ private function getAltitude(float $lat, float $lon): float {
+ $params = [
+ 'locations' => $lat . ',' . $lon,
+ ];
+ $url = 'https://api.opentopodata.org/v1/srtm30m';
+ $result = $this->requestJSON($url, $params);
+ $altitude = 0;
+ if (isset($result['results']) && is_array($result['results']) && count($result['results']) > 0
+ && is_array($result['results'][0]) && isset($result['results'][0]['elevation'])) {
+ $altitude = floatval($result['results'][0]['elevation']);
+ }
+ return $altitude;
+ }
+
+ /**
+ * @return string Formatted address from JSON nominatim result
+ */
+ private function formatOsmAddress(array $json): ?string {
+ if (isset($json['address']) && isset($json['display_name'])) {
+ $jsonAddr = $json['address'];
+ $cityAddress = '';
+ // priority : city, town, village, municipality
+ if (isset($jsonAddr['city'])) {
+ $cityAddress .= $jsonAddr['city'];
+ } elseif (isset($jsonAddr['town'])) {
+ $cityAddress .= $jsonAddr['town'];
+ } elseif (isset($jsonAddr['village'])) {
+ $cityAddress .= $jsonAddr['village'];
+ } elseif (isset($jsonAddr['municipality'])) {
+ $cityAddress .= $jsonAddr['municipality'];
+ } else {
+ return $json['display_name'];
+ }
+ // post code
+ if (isset($jsonAddr['postcode'])) {
+ $cityAddress .= ', ' . $jsonAddr['postcode'];
+ }
+ // country
+ if (isset($jsonAddr['country'])) {
+ $cityAddress .= ', ' . $jsonAddr['country'];
+ return $cityAddress;
+ } else {
+ return $json['display_name'];
+ }
+ } elseif (isset($json['display_name'])) {
+ return $json['display_name'];
+ }
+ return null;
+ }
+
+ /**
+ * Set address and resolve it to get coordinates
+ *
+ * @param string $address Any approximative or exact address
+ * @return WeatherStatusLocationWithSuccess with success state and address information (coordinates and formatted address)
+ */
+ public function setAddress(string $address): array {
+ $addressInfo = $this->searchForAddress($address);
+ if (isset($addressInfo['display_name']) && isset($addressInfo['lat']) && isset($addressInfo['lon'])) {
+ $formattedAddress = $this->formatOsmAddress($addressInfo);
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'address', $formattedAddress);
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'lat', strval($addressInfo['lat']));
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'lon', strval($addressInfo['lon']));
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'mode', strval(self::MODE_MANUAL_LOCATION));
+ // get and store altitude
+ $altitude = $this->getAltitude(floatval($addressInfo['lat']), floatval($addressInfo['lon']));
+ $this->config->setUserValue($this->userId, Application::APP_ID, 'altitude', strval($altitude));
+ return [
+ 'lat' => $addressInfo['lat'],
+ 'lon' => $addressInfo['lon'],
+ 'address' => $formattedAddress,
+ 'success' => true,
+ ];
+ } else {
+ return ['success' => false];
+ }
+ }
+
+ /**
+ * Ask nominatim information about an unformatted address
+ *
+ * @param string Unformatted address
+ * @return array{display_name?: string, lat?: string, lon?: string, error?: string} Full Nominatim result for the given address
+ */
+ private function searchForAddress(string $address): array {
+ $params = [
+ 'q' => $address,
+ 'format' => 'json',
+ 'addressdetails' => '1',
+ 'extratags' => '1',
+ 'namedetails' => '1',
+ 'limit' => '1',
+ ];
+ $url = 'https://nominatim.openstreetmap.org/search';
+ $results = $this->requestJSON($url, $params);
+
+ if (isset($results['error'])) {
+ return ['error' => (string)$results['error']];
+ }
+
+ if (count($results) > 0 && is_array($results[0])) {
+ return [
+ 'display_name' => (string)($results[0]['display_name'] ?? null),
+ 'lat' => (string)($results[0]['lat'] ?? null),
+ 'lon' => (string)($results[0]['lon'] ?? null),
+ ];
+ }
+
+ return ['error' => $this->l10n->t('No result.')];
+ }
+
+ /**
+ * Get stored user location
+ *
+ * @return WeatherStatusLocationWithMode which contains coordinates, formatted address and current weather status mode
+ */
+ public function getLocation(): array {
+ $lat = $this->config->getUserValue($this->userId, Application::APP_ID, 'lat', '');
+ $lon = $this->config->getUserValue($this->userId, Application::APP_ID, 'lon', '');
+ $address = $this->config->getUserValue($this->userId, Application::APP_ID, 'address', '');
+ $mode = $this->config->getUserValue($this->userId, Application::APP_ID, 'mode', self::MODE_MANUAL_LOCATION);
+ return [
+ 'lat' => $lat,
+ 'lon' => $lon,
+ 'address' => $address,
+ 'mode' => intval($mode),
+ ];
+ }
+
+ /**
+ * Get forecast for current location
+ *
+ * @return list<WeatherStatusForecast>|array{error: string}|WeatherStatusSuccess which contains success state and filtered forecast data
+ */
+ public function getForecast(): array {
+ $lat = $this->config->getUserValue($this->userId, Application::APP_ID, 'lat', '');
+ $lon = $this->config->getUserValue($this->userId, Application::APP_ID, 'lon', '');
+ $alt = $this->config->getUserValue($this->userId, Application::APP_ID, 'altitude', '');
+ if (!is_numeric($alt)) {
+ $alt = 0;
+ }
+ if (is_numeric($lat) && is_numeric($lon)) {
+ return $this->forecastRequest(floatval($lat), floatval($lon), floatval($alt));
+ } else {
+ return ['success' => false];
+ }
+ }
+
+ /**
+ * Actually make the request to the forecast service
+ *
+ * @param float $lat Latitude of requested forecast, in decimal degree format
+ * @param float $lon Longitude of requested forecast, in decimal degree format
+ * @param float $altitude Altitude of requested forecast, in meter
+ * @param int $nbValues Number of forecast values (hours)
+ * @return list<WeatherStatusForecast>|array{error: string} Filtered forecast data
+ */
+ private function forecastRequest(float $lat, float $lon, float $altitude, int $nbValues = 10): array {
+ $params = [
+ 'lat' => number_format($lat, 2),
+ 'lon' => number_format($lon, 2),
+ 'altitude' => $altitude,
+ ];
+ $url = 'https://api.met.no/weatherapi/locationforecast/2.0/compact';
+ $weather = $this->requestJSON($url, $params);
+ if (isset($weather['properties']) && isset($weather['properties']['timeseries']) && is_array($weather['properties']['timeseries'])) {
+ return array_slice($weather['properties']['timeseries'], 0, $nbValues);
+ }
+ return ['error' => $this->l10n->t('Malformed JSON data.')];
+ }
+
+ /**
+ * Make a HTTP GET request and parse JSON result.
+ * Request results are cached until the 'Expires' response header says so
+ *
+ * @param string $url Base URL to query
+ * @param array $params GET parameters
+ * @return array which contains the error message or the parsed JSON result
+ */
+ private function requestJSON(string $url, array $params = []): array {
+ $cacheKey = $url . '|' . implode(',', $params) . '|' . implode(',', array_keys($params));
+ $cacheValue = $this->cache->get($cacheKey);
+ if ($cacheValue !== null) {
+ return $cacheValue;
+ }
+
+ try {
+ $options = [
+ 'headers' => [
+ 'User-Agent' => 'NextcloudWeatherStatus/' . $this->version . ' nextcloud.com'
+ ],
+ ];
+
+ $reqUrl = $url;
+ if (count($params) > 0) {
+ $paramsContent = http_build_query($params);
+ $reqUrl = $url . '?' . $paramsContent;
+ }
+
+ $response = $this->client->get($reqUrl, $options);
+ $body = $response->getBody();
+ $headers = $response->getHeaders();
+ $respCode = $response->getStatusCode();
+
+ if ($respCode >= 400) {
+ return ['error' => $this->l10n->t('Error')];
+ } else {
+ $json = json_decode($body, true);
+
+ // default cache duration is one hour
+ $cacheDuration = 60 * 60;
+ if (isset($headers['Expires']) && count($headers['Expires']) > 0) {
+ // if the Expires response header is set, use it to define cache duration
+ $expireTs = (new \DateTime($headers['Expires'][0]))->getTimestamp();
+ $nowTs = (new \DateTime())->getTimestamp();
+ $duration = $expireTs - $nowTs;
+ if ($duration > $cacheDuration) {
+ $cacheDuration = $duration;
+ }
+ }
+ $this->cache->set($cacheKey, $json, $cacheDuration);
+
+ return $json;
+ }
+ } catch (\Exception $e) {
+ $this->logger->warning($url . ' API error : ' . $e->getMessage(), ['exception' => $e]);
+ return ['error' => $e->getMessage()];
+ }
+ }
+}
diff --git a/apps/weather_status/openapi.json b/apps/weather_status/openapi.json
new file mode 100644
index 00000000000..8749de66360
--- /dev/null
+++ b/apps/weather_status/openapi.json
@@ -0,0 +1,820 @@
+{
+ "openapi": "3.0.3",
+ "info": {
+ "title": "weather_status",
+ "version": "0.0.1",
+ "description": "Weather status in your dashboard",
+ "license": {
+ "name": "agpl"
+ }
+ },
+ "components": {
+ "securitySchemes": {
+ "basic_auth": {
+ "type": "http",
+ "scheme": "basic"
+ },
+ "bearer_auth": {
+ "type": "http",
+ "scheme": "bearer"
+ }
+ },
+ "schemas": {
+ "Capabilities": {
+ "type": "object",
+ "required": [
+ "weather_status"
+ ],
+ "properties": {
+ "weather_status": {
+ "type": "object",
+ "required": [
+ "enabled"
+ ],
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "Forecast": {
+ "type": "object",
+ "required": [
+ "time",
+ "data"
+ ],
+ "properties": {
+ "time": {
+ "type": "string"
+ },
+ "data": {
+ "type": "object",
+ "required": [
+ "instant",
+ "next_12_hours",
+ "next_1_hours",
+ "next_6_hours"
+ ],
+ "properties": {
+ "instant": {
+ "type": "object",
+ "required": [
+ "details"
+ ],
+ "properties": {
+ "details": {
+ "type": "object",
+ "required": [
+ "air_pressure_at_sea_level",
+ "air_temperature",
+ "cloud_area_fraction",
+ "relative_humidity",
+ "wind_from_direction",
+ "wind_speed"
+ ],
+ "properties": {
+ "air_pressure_at_sea_level": {
+ "type": "number"
+ },
+ "air_temperature": {
+ "type": "number"
+ },
+ "cloud_area_fraction": {
+ "type": "number"
+ },
+ "relative_humidity": {
+ "type": "number"
+ },
+ "wind_from_direction": {
+ "type": "number"
+ },
+ "wind_speed": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "next_12_hours": {
+ "type": "object",
+ "required": [
+ "summary",
+ "details"
+ ],
+ "properties": {
+ "summary": {
+ "type": "object",
+ "required": [
+ "symbol_code"
+ ],
+ "properties": {
+ "symbol_code": {
+ "type": "string"
+ }
+ }
+ },
+ "details": {
+ "type": "object",
+ "properties": {
+ "precipitation_amount": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "next_1_hours": {
+ "type": "object",
+ "required": [
+ "summary",
+ "details"
+ ],
+ "properties": {
+ "summary": {
+ "type": "object",
+ "required": [
+ "symbol_code"
+ ],
+ "properties": {
+ "symbol_code": {
+ "type": "string"
+ }
+ }
+ },
+ "details": {
+ "type": "object",
+ "properties": {
+ "precipitation_amount": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ },
+ "next_6_hours": {
+ "type": "object",
+ "required": [
+ "summary",
+ "details"
+ ],
+ "properties": {
+ "summary": {
+ "type": "object",
+ "required": [
+ "symbol_code"
+ ],
+ "properties": {
+ "symbol_code": {
+ "type": "string"
+ }
+ }
+ },
+ "details": {
+ "type": "object",
+ "properties": {
+ "precipitation_amount": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "Location": {
+ "type": "object",
+ "properties": {
+ "lat": {
+ "type": "string"
+ },
+ "lon": {
+ "type": "string"
+ },
+ "address": {
+ "type": "string",
+ "nullable": true
+ }
+ }
+ },
+ "LocationWithMode": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Location"
+ },
+ {
+ "$ref": "#/components/schemas/Mode"
+ }
+ ]
+ },
+ "LocationWithSuccess": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/Location"
+ },
+ {
+ "$ref": "#/components/schemas/Success"
+ }
+ ]
+ },
+ "Mode": {
+ "type": "object",
+ "required": [
+ "mode"
+ ],
+ "properties": {
+ "mode": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "OCSMeta": {
+ "type": "object",
+ "required": [
+ "status",
+ "statuscode"
+ ],
+ "properties": {
+ "status": {
+ "type": "string"
+ },
+ "statuscode": {
+ "type": "integer"
+ },
+ "message": {
+ "type": "string"
+ },
+ "totalitems": {
+ "type": "string"
+ },
+ "itemsperpage": {
+ "type": "string"
+ }
+ }
+ },
+ "Success": {
+ "type": "object",
+ "required": [
+ "success"
+ ],
+ "properties": {
+ "success": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ },
+ "paths": {
+ "/ocs/v2.php/apps/weather_status/api/v1/mode": {
+ "put": {
+ "operationId": "weather_status-set-mode",
+ "summary": "Change the weather status mode. There are currently 2 modes: - ask the browser - use the user defined address",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "mode"
+ ],
+ "properties": {
+ "mode": {
+ "type": "integer",
+ "format": "int64",
+ "description": "New mode"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Weather status mode updated",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/Success"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/ocs/v2.php/apps/weather_status/api/v1/use-personal": {
+ "put": {
+ "operationId": "weather_status-use-personal-address",
+ "summary": "Try to use the address set in user personal settings as weather location",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Address updated",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/LocationWithSuccess"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/ocs/v2.php/apps/weather_status/api/v1/location": {
+ "get": {
+ "operationId": "weather_status-get-location",
+ "summary": "Get stored user location",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Location returned",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/LocationWithMode"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "operationId": "weather_status-set-location",
+ "summary": "Set address and resolve it to get coordinates or directly set coordinates and get address with reverse geocoding",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "requestBody": {
+ "required": false,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "nullable": true,
+ "description": "Any approximative or exact address"
+ },
+ "lat": {
+ "type": "number",
+ "format": "double",
+ "nullable": true,
+ "description": "Latitude in decimal degree format"
+ },
+ "lon": {
+ "type": "number",
+ "format": "double",
+ "nullable": true,
+ "description": "Longitude in decimal degree format"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Location updated",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/LocationWithSuccess"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/ocs/v2.php/apps/weather_status/api/v1/forecast": {
+ "get": {
+ "operationId": "weather_status-get-forecast",
+ "summary": "Get forecast for current location",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Forecast returned",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "oneOf": [
+ {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Forecast"
+ }
+ },
+ {
+ "type": "object",
+ "required": [
+ "error"
+ ],
+ "properties": {
+ "error": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Forecast not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/Success"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/ocs/v2.php/apps/weather_status/api/v1/favorites": {
+ "get": {
+ "operationId": "weather_status-get-favorites",
+ "summary": "Get favorites list",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Favorites returned",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "operationId": "weather_status-set-favorites",
+ "summary": "Set favorites list",
+ "tags": [
+ "weather_status"
+ ],
+ "security": [
+ {
+ "bearer_auth": []
+ },
+ {
+ "basic_auth": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "favorites"
+ ],
+ "properties": {
+ "favorites": {
+ "type": "array",
+ "description": "Favorite addresses",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "name": "OCS-APIRequest",
+ "in": "header",
+ "description": "Required to be true for the API request to pass",
+ "required": true,
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Favorites updated",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "ocs"
+ ],
+ "properties": {
+ "ocs": {
+ "type": "object",
+ "required": [
+ "meta",
+ "data"
+ ],
+ "properties": {
+ "meta": {
+ "$ref": "#/components/schemas/OCSMeta"
+ },
+ "data": {
+ "$ref": "#/components/schemas/Success"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": []
+}
diff --git a/apps/weather_status/openapi.json.license b/apps/weather_status/openapi.json.license
new file mode 100644
index 00000000000..83559daa9dc
--- /dev/null
+++ b/apps/weather_status/openapi.json.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+SPDX-License-Identifier: AGPL-3.0-or-later \ No newline at end of file
diff --git a/apps/weather_status/src/App.vue b/apps/weather_status/src/App.vue
new file mode 100644
index 00000000000..34dc8e90efa
--- /dev/null
+++ b/apps/weather_status/src/App.vue
@@ -0,0 +1,582 @@
+<!--
+ - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <div id="weather-status-menu-item">
+ <NcActions class="weather-status-menu-item__subheader"
+ :aria-hidden="true"
+ :aria-label="currentWeatherMessage"
+ :menu-name="currentWeatherMessage">
+ <template #icon>
+ <NcLoadingIcon v-if="loading" />
+ <img v-else
+ :src="weatherIconUrl"
+ alt=""
+ class="weather-image">
+ </template>
+ <NcActionText v-if="gotWeather"
+ :aria-hidden="true">
+ <template #icon>
+ <NcLoadingIcon v-if="loading" />
+ <div v-else class="weather-action-image-container">
+ <img :src="futureWeatherIconUrl"
+ alt=""
+ class="weather-image">
+ </div>
+ </template>
+ {{ forecastMessage }}
+ </NcActionText>
+ <NcActionLink v-if="gotWeather"
+ target="_blank"
+ :aria-hidden="true"
+ :href="weatherLinkTarget"
+ :close-after-click="true">
+ <template #icon>
+ <NcIconSvgWrapper name="MapMarker"
+ :svg="mapMarkerSvg"
+ :size="20" />
+ </template>
+ {{ locationText }}
+ </NcActionLink>
+ <NcActionButton v-if="gotWeather"
+ :aria-hidden="true"
+ @click="onAddRemoveFavoriteClick">
+ <template #icon>
+ <NcIconSvgWrapper name="Star"
+ :svg="addRemoveFavoriteSvg"
+ :size="20"
+ class="favorite-color" />
+ </template>
+ {{ addRemoveFavoriteText }}
+ </NcActionButton>
+ <NcActionSeparator v-if="address && !errorMessage" />
+ <NcActionButton :close-after-click="true"
+ :aria-hidden="true"
+ @click="onBrowserLocationClick">
+ <template #icon>
+ <NcIconSvgWrapper name="Crosshairs"
+ :svg="crosshairsSvg"
+ :size="20" />
+ </template>
+ {{ t('weather_status', 'Detect location') }}
+ </NcActionButton>
+ <NcActionInput ref="addressInput"
+ :label="t('weather_status', 'Set custom address')"
+ :disabled="false"
+ icon="icon-rename"
+ :aria-hidden="true"
+ type="text"
+ value=""
+ @submit="onAddressSubmit" />
+ <template v-if="favorites.length > 0">
+ <NcActionCaption :name="t('weather_status', 'Favorites')" />
+ <NcActionButton v-for="favorite in favorites"
+ :key="favorite"
+ :aria-hidden="true"
+ @click="onFavoriteClick($event, favorite)">
+ <template #icon>
+ <NcIconSvgWrapper name="Star"
+ :svg="starSvg"
+ :size="20"
+ :class="{'favorite-color': address === favorite}" />
+ </template>
+ {{ favorite }}
+ </NcActionButton>
+ </template>
+ </NcActions>
+ </div>
+</template>
+
+<script>
+import { showError } from '@nextcloud/dialogs'
+import moment from '@nextcloud/moment'
+import { getLocale } from '@nextcloud/l10n'
+import { imagePath } from '@nextcloud/router'
+import NcActions from '@nextcloud/vue/components/NcActions'
+import NcActionButton from '@nextcloud/vue/components/NcActionButton'
+import NcActionCaption from '@nextcloud/vue/components/NcActionCaption'
+import NcActionInput from '@nextcloud/vue/components/NcActionInput'
+import NcActionLink from '@nextcloud/vue/components/NcActionLink'
+import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
+import NcActionText from '@nextcloud/vue/components/NcActionText'
+import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
+import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'
+import * as network from './services/weatherStatusService.js'
+import crosshairsSvg from '@mdi/svg/svg/crosshairs.svg?raw'
+import mapMarkerSvg from '@mdi/svg/svg/map-marker.svg?raw'
+import starSvg from '@mdi/svg/svg/star.svg?raw'
+import starOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw'
+
+const MODE_BROWSER_LOCATION = 1
+const MODE_MANUAL_LOCATION = 2
+const weatherOptions = {
+ clearsky_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),
+ },
+ clearsky_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),
+ },
+ cloudy: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} cloudy later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} cloudy', { temperature, unit }),
+ },
+ snowandthunder: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow and thunder later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow and thunder', { temperature, unit }),
+ },
+ snowshowersandthunder_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers and thunder later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers and thunder', { temperature, unit }),
+ },
+ snowshowersandthunder_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers and thunder later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers and thunder', { temperature, unit }),
+ },
+ snowshowersandthunder_polartwilight: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers, thunder and polar twilight later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers, thunder and polar twilight', { temperature, unit }),
+ },
+ snowshowers_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers', { temperature, unit }),
+ },
+ snowshowers_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers', { temperature, unit }),
+ },
+ snowshowers_polartwilight: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow showers and polar twilight later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow showers and polar twilight', { temperature, unit }),
+ },
+ snow: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} snow later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} snow', { temperature, unit }),
+ },
+ fair_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),
+ },
+ fair_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),
+ },
+ partlycloudy_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),
+ },
+ partlycloudy_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),
+ },
+ fog: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} foggy later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} foggy', { temperature, unit }),
+ },
+ lightrain: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} light rainfall later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} light rainfall', { temperature, unit }),
+ },
+ rain: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} rainfall later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} rainfall', { temperature, unit }),
+ },
+ heavyrain: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} heavy rainfall later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} heavy rainfall', { temperature, unit }),
+ },
+ rainshowers_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),
+ },
+ rainshowers_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),
+ },
+ lightrainshowers_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),
+ },
+ lightrainshowers_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),
+ },
+ heavyrainshowers_day: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),
+ },
+ heavyrainshowers_night: {
+ text: (temperature, unit, later = false) => later
+ ? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })
+ : t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),
+ },
+}
+
+export default {
+ name: 'App',
+ components: {
+ NcActions,
+ NcActionButton,
+ NcActionCaption,
+ NcActionInput,
+ NcActionLink,
+ NcActionSeparator,
+ NcActionText,
+ NcLoadingIcon,
+ NcIconSvgWrapper,
+ },
+ data() {
+ return {
+ crosshairsSvg,
+ mapMarkerSvg,
+ starSvg,
+ starOutlineSvg,
+ locale: getLocale(),
+ loading: true,
+ errorMessage: '',
+ mode: MODE_BROWSER_LOCATION,
+ address: null,
+ lat: null,
+ lon: null,
+ // how many hours ahead do we want to see the forecast?
+ offset: 5,
+ forecasts: [],
+ loop: null,
+ favorites: [],
+ }
+ },
+ computed: {
+ useFahrenheitLocale() {
+ return ['en_US', 'en_MH', 'en_FM', 'en_PW', 'en_KY', 'en_LR'].includes(this.locale)
+ },
+ temperatureUnit() {
+ return this.useFahrenheitLocale ? '°F' : '°C'
+ },
+ locationText() {
+ return t('weather_status', 'More weather for {adr}', { adr: this.address })
+ },
+ temperature() {
+ return this.getTemperature(this.forecasts, 0)
+ },
+ futureTemperature() {
+ return this.getTemperature(this.forecasts, this.offset)
+ },
+ weatherCode() {
+ return this.getWeatherCode(this.forecasts, 0)
+ },
+ futureWeatherCode() {
+ return this.getWeatherCode(this.forecasts, this.offset)
+ },
+ weatherIconUrl() {
+ return this.getWeatherIconUrl(this.weatherCode)
+ },
+ futureWeatherIconUrl() {
+ return this.getWeatherIconUrl(this.futureWeatherCode)
+ },
+ /**
+ * The message displayed in the top right corner
+ *
+ * @return {string}
+ */
+ currentWeatherMessage() {
+ if (this.loading) {
+ return t('weather_status', 'Loading weather')
+ } else if (this.errorMessage) {
+ return this.errorMessage
+ } else if (this.gotWeather) {
+ return this.getWeatherMessage(this.weatherCode, this.temperature)
+ } else {
+ return t('weather_status', 'Set location for weather')
+ }
+ },
+ forecastMessage() {
+ if (this.loading) {
+ return t('weather_status', 'Loading weather')
+ } else if (this.gotWeather) {
+ return this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true)
+ } else {
+ return t('weather_status', 'Set location for weather')
+ }
+ },
+ weatherLinkTarget() {
+ return 'https://www.windy.com/-Rain-thunder-rain?rain,' + this.lat + ',' + this.lon + ',11'
+ },
+ gotWeather() {
+ return this.address && !this.errorMessage
+ },
+ addRemoveFavoriteSvg() {
+ return this.currentAddressIsFavorite
+ ? starSvg
+ : starOutlineSvg
+ },
+ addRemoveFavoriteText() {
+ return this.currentAddressIsFavorite
+ ? t('weather_status', 'Remove from favorites')
+ : t('weather_status', 'Add as favorite')
+ },
+ currentAddressIsFavorite() {
+ return this.favorites.find((f) => {
+ return f === this.address
+ })
+ },
+ },
+ mounted() {
+ this.initWeatherStatus()
+ },
+ methods: {
+ async initWeatherStatus() {
+ try {
+ const loc = await network.getLocation()
+ this.lat = loc.lat
+ this.lon = loc.lon
+ this.address = loc.address
+ this.mode = loc.mode
+
+ if (this.mode === MODE_BROWSER_LOCATION) {
+ this.askBrowserLocation()
+ } else if (this.mode === MODE_MANUAL_LOCATION) {
+ this.startLoop()
+ }
+ const favs = await network.getFavorites()
+ this.favorites = favs
+ } catch (err) {
+ if (err?.code === 'ECONNABORTED') {
+ console.info('The weather status request was cancelled because the user navigates.')
+ return
+ }
+ if (err.response && err.response.status === 401) {
+ showError(t('weather_status', 'You are not logged in.'))
+ } else {
+ showError(t('weather_status', 'There was an error getting the weather status information.'))
+ }
+ console.error(err)
+ }
+ },
+ startLoop() {
+ clearInterval(this.loop)
+ if (this.lat && this.lon) {
+ this.loop = setInterval(() => this.getForecast(), 60 * 1000 * 60)
+ this.getForecast()
+ } else {
+ this.loading = false
+ }
+ },
+ askBrowserLocation() {
+ this.loading = true
+ this.errorMessage = ''
+ if (navigator.geolocation && window.isSecureContext) {
+ navigator.geolocation.getCurrentPosition((position) => {
+ console.debug('browser location success')
+ this.lat = position.coords.latitude
+ this.lon = position.coords.longitude
+ this.saveMode(MODE_BROWSER_LOCATION)
+ this.mode = MODE_BROWSER_LOCATION
+ this.saveLocation(this.lat, this.lon)
+ },
+ (error) => {
+ console.debug('location permission refused')
+ console.debug(error)
+ this.saveMode(MODE_MANUAL_LOCATION)
+ this.mode = MODE_MANUAL_LOCATION
+ // fallback on what we have if possible
+ if (this.lat && this.lon) {
+ this.startLoop()
+ } else {
+ this.usePersonalAddress()
+ }
+ })
+ } else {
+ console.debug('no secure context!')
+ this.saveMode(MODE_MANUAL_LOCATION)
+ this.mode = MODE_MANUAL_LOCATION
+ this.startLoop()
+ }
+ },
+ async getForecast() {
+ try {
+ this.forecasts = await network.fetchForecast()
+ } catch (err) {
+ this.errorMessage = t('weather_status', 'No weather information found')
+ console.debug(err)
+ }
+ this.loading = false
+ },
+ async setAddress(address) {
+ this.loading = true
+ this.errorMessage = ''
+ try {
+ const loc = await network.setAddress(address)
+ if (loc.success) {
+ this.lat = loc.lat
+ this.lon = loc.lon
+ this.address = loc.address
+ this.mode = MODE_MANUAL_LOCATION
+ this.startLoop()
+ } else {
+ this.errorMessage = t('weather_status', 'Location not found')
+ this.loading = false
+ }
+ } catch (err) {
+ if (err.response && err.response.status === 401) {
+ showError(t('weather_status', 'You are not logged in.'))
+ } else {
+ showError(t('weather_status', 'There was an error setting the location address.'))
+ }
+ this.loading = false
+ }
+ },
+ async saveLocation(lat, lon) {
+ try {
+ const loc = await network.setLocation(lat, lon)
+ this.address = loc.address
+ this.startLoop()
+ } catch (err) {
+ if (err.response && err.response.status === 401) {
+ showError(t('weather_status', 'You are not logged in.'))
+ } else {
+ showError(t('weather_status', 'There was an error setting the location.'))
+ }
+ console.debug(err)
+ }
+ },
+ async saveMode(mode) {
+ try {
+ await network.setMode(mode)
+ } catch (err) {
+ if (err.response && err.response.status === 401) {
+ showError(t('weather_status', 'You are not logged in.'))
+ } else {
+ showError(t('weather_status', 'There was an error saving the mode.'))
+ }
+ console.debug(err)
+ }
+ },
+ onBrowserLocationClick() {
+ this.askBrowserLocation()
+ },
+ async usePersonalAddress() {
+ this.loading = true
+ try {
+ const loc = await network.usePersonalAddress()
+ this.lat = loc.lat
+ this.lon = loc.lon
+ this.address = loc.address
+ this.mode = MODE_MANUAL_LOCATION
+ this.startLoop()
+ } catch (err) {
+ if (err.response && err.response.status === 401) {
+ showError(t('weather_status', 'You are not logged in.'))
+ } else {
+ showError(t('weather_status', 'There was an error using personal address.'))
+ }
+ console.debug(err)
+ this.loading = false
+ }
+ },
+ onAddressSubmit() {
+ const newAddress = this.$refs.addressInput.$el.querySelector('input[type="text"]').value
+ this.setAddress(newAddress)
+ },
+ getLocalizedTemperature(celcius) {
+ return this.useFahrenheitLocale
+ ? (celcius * (9 / 5)) + 32
+ : celcius
+ },
+ onAddRemoveFavoriteClick() {
+ const currentIsFavorite = this.currentAddressIsFavorite
+ if (currentIsFavorite) {
+ const i = this.favorites.indexOf(currentIsFavorite)
+ if (i !== -1) {
+ this.favorites.splice(i, 1)
+ }
+ } else {
+ this.favorites.push(this.address)
+ }
+ network.saveFavorites(this.favorites)
+ },
+ onFavoriteClick(e, favAddress) {
+ // clicked on the icon
+ if (e.target.classList.contains('action-button__icon')) {
+ const i = this.favorites.indexOf(favAddress)
+ if (i !== -1) {
+ this.favorites.splice(i, 1)
+ }
+ network.saveFavorites(this.favorites)
+ } else if (favAddress !== this.address) {
+ // clicked on the text
+ this.setAddress(favAddress)
+ }
+ },
+ formatTime(time) {
+ return moment(time).format('LT')
+ },
+ getTemperature(forecasts, offset = 0) {
+ return forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : ''
+ },
+ getWeatherCode(forecasts, offset = 0) {
+ return forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : ''
+ },
+ getWeatherIconUrl(weatherCode) {
+ // those icons were obtained there: https://github.com/metno/weathericons/tree/main/weather/svg
+ return (weatherCode && weatherCode in weatherOptions)
+ ? imagePath('weather_status', 'met.no.icons/' + weatherCode + '.svg')
+ : imagePath('weather_status', 'met.no.icons/fair_day.svg')
+ },
+ getWeatherMessage(weatherCode, temperature, later = false) {
+ return weatherCode && weatherCode in weatherOptions
+ ? weatherOptions[weatherCode].text(
+ Math.round(this.getLocalizedTemperature(temperature)),
+ this.temperatureUnit,
+ later,
+ )
+ : t('weather_status', 'Unknown weather code')
+ },
+ },
+}
+</script>
+
+<style lang="scss">
+.weather-action-image-container {
+ width: var(--default-clickable-area);
+ height: var(--default-clickable-area);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.weather-image {
+ width: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));
+}
+
+// Set color to primary element for current / active favorite address
+.favorite-color {
+ color: var(--color-favorite);
+}
+</style>
diff --git a/apps/weather_status/src/services/weatherStatusService.js b/apps/weather_status/src/services/weatherStatusService.js
new file mode 100644
index 00000000000..3725f536d32
--- /dev/null
+++ b/apps/weather_status/src/services/weatherStatusService.js
@@ -0,0 +1,127 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import HttpClient from '@nextcloud/axios'
+import { generateOcsUrl } from '@nextcloud/router'
+
+/**
+ *
+ *
+ * @param {string} lat the latitude
+ * @param {string} lon the longitude
+ * @return {Promise<object>}
+ */
+const setLocation = async (lat, lon) => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/location')
+ const response = await HttpClient.put(url, {
+ address: '',
+ lat,
+ lon,
+ })
+
+ return response.data.ocs.data
+}
+
+/**
+ *
+ * @param {string} address The location
+ * @return {Promise<object>}
+ */
+const setAddress = async (address) => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/location')
+ const response = await HttpClient.put(url, {
+ address,
+ lat: null,
+ lon: null,
+ })
+
+ return response.data.ocs.data
+}
+
+/**
+ *
+ * @param {string} mode can be 1 browser or 2 custom
+ * @return {Promise<object>}
+ */
+const setMode = async (mode) => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/mode')
+ const response = await HttpClient.put(url, {
+ mode,
+ })
+
+ return response.data.ocs.data
+}
+
+/**
+ *
+ * @return {Promise<object>}
+ */
+const usePersonalAddress = async () => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/use-personal')
+ const response = await HttpClient.put(url)
+
+ return response.data.ocs.data
+}
+
+/**
+ * Fetches the location information for current user
+ *
+ * @return {Promise<object>}
+ */
+const getLocation = async () => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/location')
+ const response = await HttpClient.get(url)
+
+ return response.data.ocs.data
+}
+
+/**
+ * Fetches the weather forecast
+ *
+ * @return {Promise<object>}
+ */
+const fetchForecast = async () => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/forecast')
+ const response = await HttpClient.get(url)
+
+ return response.data.ocs.data
+}
+
+/**
+ * Fetches the location favorites
+ *
+ * @return {Promise<object>}
+ */
+const getFavorites = async () => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/favorites')
+ const response = await HttpClient.get(url)
+
+ return response.data.ocs.data
+}
+
+/**
+ *
+ * @param {Array} favorites List of favorite addresses
+ * @return {Promise<object>}
+ */
+const saveFavorites = async (favorites) => {
+ const url = generateOcsUrl('apps/weather_status/api/v1/favorites')
+ const response = await HttpClient.put(url, {
+ favorites,
+ })
+
+ return response.data.ocs.data
+}
+
+export {
+ usePersonalAddress,
+ setMode,
+ getLocation,
+ setLocation,
+ setAddress,
+ fetchForecast,
+ getFavorites,
+ saveFavorites,
+}
diff --git a/apps/weather_status/src/weather-status.js b/apps/weather_status/src/weather-status.js
new file mode 100644
index 00000000000..45c73b87e4a
--- /dev/null
+++ b/apps/weather_status/src/weather-status.js
@@ -0,0 +1,24 @@
+/**
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getCSPNonce } from '@nextcloud/auth'
+import Vue from 'vue'
+import App from './App.vue'
+
+// eslint-disable-next-line camelcase
+__webpack_nonce__ = getCSPNonce()
+
+Vue.prototype.t = t
+
+document.addEventListener('DOMContentLoaded', function() {
+ if (!OCA.Dashboard) {
+ return
+ }
+
+ OCA.Dashboard.registerStatus('weather', (el) => {
+ const Dashboard = Vue.extend(App)
+ return new Dashboard().$mount(el)
+ })
+})