mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-10-16 17:32:43 +00:00
Compare commits
47 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
544a1381fc | ||
|
bc17ef896e | ||
|
0bcbf999fb | ||
|
0c4c44f4b6 | ||
|
486956b762 | ||
|
8d1ef5291f | ||
|
611627ca97 | ||
|
732225b781 | ||
|
58f88075c8 | ||
|
e17ef5eccf | ||
|
70c697f094 | ||
|
4b5625e0b4 | ||
|
7df48870df | ||
|
4a309c49e5 | ||
|
b45899bf90 | ||
|
5ae3c8acfe | ||
|
ef5df5f01b | ||
|
9af7451a61 | ||
|
7048c550b7 | ||
|
f035627f42 | ||
|
7659ff1f77 | ||
|
3df4062a55 | ||
|
02bbbe668b | ||
|
2b82c8fdc9 | ||
|
93abaed0c2 | ||
|
b7fff6d452 | ||
|
d09f01db90 | ||
|
e0c1a58b84 | ||
|
1b82649cca | ||
|
9317e2a36b | ||
|
51aff8ccdc | ||
|
bdd3ea45af | ||
|
3eb5c77ac4 | ||
|
ccc85784c6 | ||
|
46806e8607 | ||
|
95f914d6bd | ||
|
0f86011106 | ||
|
acdd3c0602 | ||
|
05b7237add | ||
|
51f4e9e160 | ||
|
7bbac35d6b | ||
|
d280fe457c | ||
|
b5772af4c3 | ||
|
7ab79bb76e | ||
|
00e3cc26de | ||
|
4b491c43ff | ||
|
41233a933e |
26
.github/CONTRIBUTING.md
vendored
26
.github/CONTRIBUTING.md
vendored
@@ -31,3 +31,29 @@ To run StyleLint, use `npm run stylelint`.
|
||||
We use [NU Validator](https://validator.w3.org/nu) to validate our HTML. The configuration is in the command in the package.json file.
|
||||
|
||||
To run HTML Validator, use `npm run htmlvalidator`.
|
||||
|
||||
## Submitting Issues
|
||||
|
||||
Please only submit reproducible issues.
|
||||
|
||||
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt - Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting
|
||||
|
||||
When submitting a new issue, please supply the following information:
|
||||
|
||||
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
|
||||
|
||||
**Node Version** [ 0.12.13 or later ]:
|
||||
|
||||
**MagicMirror Version** [ V1 / V2-Beta ]:
|
||||
|
||||
**Description:** Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
|
||||
|
||||
**Steps to Reproduce:** List the step by step process to reproduce the issue.
|
||||
|
||||
**Expected Results:** Describe what you expected to see.
|
||||
|
||||
**Actual Results:** Describe what you actually saw.
|
||||
|
||||
**Configuration:** What does the used config.js file look like? (Don't forget to remove any sensitive information.)
|
||||
|
||||
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)
|
||||
|
23
.github/ISSUE_TEMPLATE.md
vendored
23
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,2 +1,21 @@
|
||||
* **Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux]:
|
||||
* **Node Version** [ 0.12.13 or later ]:
|
||||
Please only submit reproducible issues.
|
||||
|
||||
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt - Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting
|
||||
|
||||
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
|
||||
|
||||
**Node Version** [ 0.12.13 or later ]:
|
||||
|
||||
**MagicMirror Version** [ V1 / V2-Beta ]:
|
||||
|
||||
**Description:** Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
|
||||
|
||||
**Steps to Reproduce:** List the step by step process to reproduce the issue.
|
||||
|
||||
**Expected Results:** Describe what you expected to see.
|
||||
|
||||
**Actual Results:** Describe what you actually saw.
|
||||
|
||||
**Configuration:** What does the used config.js file look like? (Don't forget to remove any sensitive information.)
|
||||
|
||||
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)
|
||||
|
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,5 +1,9 @@
|
||||
> Please send your PR's the develop branch.
|
||||
> Don't forget to add the change to changelog.md.
|
||||
|
||||
* Does the pull request solve a **related** issue? [yes | no]
|
||||
|
||||
* If so, can you reference the issue?
|
||||
|
||||
* What does the pull request accomplish? (please list)
|
||||
* If it includes major visual changes please add screenshots.
|
||||
|
||||
|
||||
|
37
CHANGELOG.md
Normal file
37
CHANGELOG.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# MagicMirror² Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [2.0.2] - 2016-06-05
|
||||
### Added
|
||||
- Norwegian Translations (nb and nn)
|
||||
- Portuguese Translation
|
||||
- Swedish Translation
|
||||
|
||||
### Fixed
|
||||
- Added reference to Italian Translation.
|
||||
- Added the missing NE translation to all languages. [#334](https://github.com/MichMich/MagicMirror/issues/344)
|
||||
- Added proper User-Agent string to calendar call.
|
||||
|
||||
### Changed
|
||||
- Add option to use locationID in weather modules.
|
||||
|
||||
## [2.0.1] - 2016-05-18
|
||||
### Added
|
||||
- Changelog
|
||||
- Italian Translation
|
||||
|
||||
### Changed
|
||||
- Improve the installer by fetching the latest Node.js without any 3rd party interferences.
|
||||
|
||||
## [2.0.0] - 2016-05-03
|
||||
### Initial release of MagicMirror²
|
||||
It includes (but is not limited to) the following features:
|
||||
- Modular system allowing 3rd party plugins.
|
||||
- An Node/Electron based application taking away the need for external servers or browsers.
|
||||
- A complete development API documentation.
|
||||
- Small cute fairies that kiss you while you sleep.
|
||||
|
||||
## [1.0.0] - 2014-02-16
|
||||
### Initial release of MagicMirror.
|
||||
This was part of the blogpost: http://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the
|
@@ -13,8 +13,6 @@
|
||||
|
||||
MagicMirror² focuses on a modular plugin system and uses [Electron](http://electron.atom.io/) as an application wrapper. So no more web server or browser installs necessary!
|
||||
|
||||
**NOTE:** This version is in currently in beta stage. Please use the master branch if you need a thoroughly tested version.
|
||||
|
||||
## Table Of Contents
|
||||
|
||||
- [Usage](#usage)
|
||||
@@ -33,7 +31,7 @@ Electron, the app wrapper around MagicMirror², only supports the Raspberry Pi 2
|
||||
|
||||
Execute the following command on your Raspberry Pi to install MagicMirror²:
|
||||
````
|
||||
curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/installers/raspberry.sh | bash
|
||||
curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh | bash
|
||||
````
|
||||
|
||||
#### Manual Installation
|
||||
|
@@ -41,6 +41,7 @@ var config = {
|
||||
position: 'top_right',
|
||||
config: {
|
||||
location: 'New York',
|
||||
locationID: '', //ID from bulk.openweather.org/sample/
|
||||
appid: 'YOUR_OPENWEATHER_API_KEY'
|
||||
}
|
||||
},
|
||||
@@ -50,6 +51,7 @@ var config = {
|
||||
header: 'Weather Forecast',
|
||||
config: {
|
||||
location: 'New York',
|
||||
locationID: '5128581', //ID from bulk.openweather.org/sample/
|
||||
appid: 'YOUR_OPENWEATHER_API_KEY'
|
||||
}
|
||||
},
|
||||
|
@@ -18,7 +18,7 @@ echo ' \$$$$$$ |'
|
||||
echo ' \______/'
|
||||
echo -e "\e[0m"
|
||||
|
||||
# Define the tested version of node.
|
||||
# Define the tested version of Node.js.
|
||||
NODE_TESTED="v5.1.0"
|
||||
|
||||
#Determine which Pi is running.
|
||||
@@ -39,7 +39,7 @@ function command_exists () { type "$1" &> /dev/null ;}
|
||||
echo -e "\e[96mInstalling helper tools ...\e[90m"
|
||||
sudo apt-get install curl wget git build-essential unzip || exit
|
||||
|
||||
# Check if we need to install or upgrade node.
|
||||
# Check if we need to install or upgrade Node.js.
|
||||
echo -e "\e[96mCheck current Node installation ...\e[0m"
|
||||
NODE_INSTALL=false
|
||||
if command_exists node; then
|
||||
@@ -60,63 +60,33 @@ if command_exists node; then
|
||||
fi
|
||||
|
||||
else
|
||||
echo -e "\e[92mNo Node upgrade nessecery.\e[0m"
|
||||
echo -e "\e[92mNo Node.js upgrade nessecery.\e[0m"
|
||||
fi
|
||||
|
||||
else
|
||||
echo -e "\e[93mNode is not installed.\e[0m";
|
||||
echo -e "\e[93mNode.js is not installed.\e[0m";
|
||||
NODE_INSTALL=true
|
||||
fi
|
||||
|
||||
# Install or upgare node if nessecery.
|
||||
if $NODE_INSTALL; then
|
||||
|
||||
echo -e "\e[96mInstalling Node.js ...\e[90m"
|
||||
|
||||
echo -e "\e[96mStart Node download ...\e[0m"
|
||||
|
||||
#Fetch the latest version of Node.js.
|
||||
#TODO: Is there a native way to fetch the latest node version?
|
||||
echo -e "\e[39mRetrieving latest node version."
|
||||
NODE_LATEST=$(curl -l http://api.jordidepoortere.com/nodejs-latest/ 2> /dev/null)
|
||||
|
||||
if [ "$NODE_LATEST" == "" ]; then
|
||||
echo -e "\e[91mCould not retreive latest node version."
|
||||
echo -e "\e[91mPlease try again or open an issue on GitHub."
|
||||
exit
|
||||
fi
|
||||
|
||||
echo -e "Latest node version: \e[1m$NODE_LATEST\e[0m"
|
||||
|
||||
#Construct the download URL.
|
||||
DOWNLOAD_URL="https://nodejs.org/dist/latest/node-$NODE_LATEST-linux-$ARM.tar.gz"
|
||||
|
||||
#Create Download Directory
|
||||
rm -Rf ~/.MagicMirrorNodeInstaller || exit
|
||||
mkdir ~/.MagicMirrorNodeInstaller || exit
|
||||
cd ~/.MagicMirrorNodeInstaller || exit
|
||||
|
||||
#Download Installer
|
||||
echo -e "\e[39mDownloading node ... \e[90m"
|
||||
if wget $DOWNLOAD_URL --no-verbose --show-progress; then
|
||||
echo -e "\e[39mDownload complete."
|
||||
else
|
||||
echo -e "\e[91mCould not download node."
|
||||
exit;
|
||||
fi
|
||||
|
||||
#Unpack and copy.
|
||||
echo -e "\e[96mStart Node installation ...\e[90m"
|
||||
tar xvf node-$NODE_LATEST-linux-$ARM.tar.gz || exit
|
||||
cd node* || exit
|
||||
sudo cp -R * /usr/local || exit
|
||||
|
||||
#Cleanup
|
||||
rm -Rf ~/.MagicMirrorNodeInstaller || exit
|
||||
#Fetch the latest version of Node.js from the selected branch
|
||||
#The NODE_STABLE_BRANCH variable will need to be manually adjusted when a new branch is released. (e.g. 7.x)
|
||||
#Only tested (stable) versions are recommended as newer versions could break MagicMirror.
|
||||
|
||||
NODE_STABLE_BRANCH="6.x"
|
||||
curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash -
|
||||
sudo apt-get install -y nodejs
|
||||
echo -e "\e[92mNode.js installation Done!\e[0m"
|
||||
fi
|
||||
|
||||
#Install magic mirror
|
||||
cd ~
|
||||
if [ -d "$HOME/MagicMirror" ] ; then
|
||||
echo -e "\e[93mIt seems like MagicMirror is allready installed."
|
||||
echo -e "\e[93mIt seems like MagicMirror is already installed."
|
||||
echo -e "To prevent overwriting, the installer will be aborted."
|
||||
echo -e "Please rename the \e[1m~/MagicMirror\e[0m\e[93m folder and try again.\e[0m"
|
||||
echo ""
|
||||
@@ -143,6 +113,6 @@ else
|
||||
fi
|
||||
|
||||
echo " "
|
||||
echo -e "\e[92mWe're ready! Run \e[1m\e[97mDISPLAY=:0 npm start\e[0m\e[92m from the ~/MagicMirror directory to start your MagicMirror."
|
||||
echo -e "\e[92mWe're ready! Run \e[1m\e[97mDISPLAY=:0 npm start\e[0m\e[92m from the ~/MagicMirror directory to start your MagicMirror.\e[0m"
|
||||
echo " "
|
||||
echo " "
|
||||
|
@@ -152,7 +152,7 @@ var Module = Class.extend({
|
||||
},
|
||||
|
||||
/* socket()
|
||||
* Returns a socket object. If it doesn"t exsist, it"s created.
|
||||
* Returns a socket object. If it doesn"t exist, it"s created.
|
||||
* It also registers the notification callback.
|
||||
*/
|
||||
socket: function() {
|
||||
|
@@ -298,7 +298,7 @@ If no translation is found, a fallback will be used. The fallback sequence is as
|
||||
- 4. Translation as defined in core translation file of the fallback language (the first defined core translation file).
|
||||
- 5. The key (identifier) of the translation.
|
||||
|
||||
When adding translations to your module, it's a good idea to see if an apropriate translation is already available in the [core translation files](https://github.com/MichMich/MagicMirror/tree/master/translations). This way, your module can benefit from the exsisting translations.
|
||||
When adding translations to your module, it's a good idea to see if an apropriate translation is already available in the [core translation files](https://github.com/MichMich/MagicMirror/tree/master/translations). This way, your module can benefit from the existing translations.
|
||||
|
||||
**Example:**
|
||||
````javascript
|
||||
|
@@ -49,7 +49,7 @@ Module.register("calendar",{
|
||||
getTranslations: function() {
|
||||
// The translations for the defaut modules are defined in the core translation files.
|
||||
// Therefor we can just return false. Otherwise we should have returned a dictionairy.
|
||||
// If you're trying to build yiur own module including translations, check out the documentation.
|
||||
// If you're trying to build your own module including translations, check out the documentation.
|
||||
return false;
|
||||
},
|
||||
|
||||
|
@@ -25,7 +25,12 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
|
||||
clearTimeout(reloadTimer);
|
||||
reloadTimer = null;
|
||||
|
||||
ical.fromURL(url, {}, function(err, data) {
|
||||
var opts = {
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Node.js 6.0.0) MagicMirror/v2 (https://github.com/MichMich/MagicMirror/)'
|
||||
}
|
||||
}
|
||||
ical.fromURL(url, opts, function(err, data) {
|
||||
if (err) {
|
||||
fetchFailedCallback(self, err);
|
||||
scheduleTimer();
|
||||
@@ -188,7 +193,7 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
|
||||
};
|
||||
|
||||
/* broadcastItems()
|
||||
* Broadcast the exsisting events.
|
||||
* Broadcast the existing events.
|
||||
*/
|
||||
this.broadcastEvents = function() {
|
||||
//console.log('Broadcasting ' + events.length + ' events.');
|
||||
|
@@ -30,8 +30,8 @@ module.exports = NodeHelper.create({
|
||||
},
|
||||
|
||||
/* createFetcher(url, reloadInterval)
|
||||
* Creates a fetcher for a new url if it doesn't exsist yet.
|
||||
* Otherwise it reuses the exsisting one.
|
||||
* Creates a fetcher for a new url if it doesn't exist yet.
|
||||
* Otherwise it reuses the existing one.
|
||||
*
|
||||
* attribute url string - URL of the news feed.
|
||||
* attribute reloadInterval number - Reload interval in milliseconds.
|
||||
@@ -69,7 +69,7 @@ module.exports = NodeHelper.create({
|
||||
|
||||
self.fetchers[url] = fetcher;
|
||||
} else {
|
||||
//console.log('Use exsisting news fetcher for url: ' + url);
|
||||
//console.log('Use existing news fetcher for url: ' + url);
|
||||
fetcher = self.fetchers[url];
|
||||
fetcher.broadcastEvents();
|
||||
}
|
||||
|
@@ -14,6 +14,7 @@ modules: [
|
||||
config: {
|
||||
// See 'Configuration options' for more information.
|
||||
location: 'Amsterdam,Netherlands',
|
||||
locationID: '', //Location ID from http://bulk.openweather.org/sample/
|
||||
appid: 'abcde12345abcde12345abcde12345ab' //openweathermap.org API key.
|
||||
}
|
||||
}
|
||||
@@ -34,7 +35,7 @@ The following properties can be configured:
|
||||
</tr>
|
||||
<thead>
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><code>location</code></td>
|
||||
<td>The location used for weather information.<br>
|
||||
@@ -42,6 +43,13 @@ The following properties can be configured:
|
||||
<br><b>Default value:</b> <code>New York</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>locationID</code></td>
|
||||
<td>Location ID from <a href="http://bulk.openweather.org/sample/">OpenWeather</a> <b>This will override anything you put in location.</b><br>Leave blank if you want to use location.
|
||||
<br><b>Example:</b> <code>1234567</code>
|
||||
<br><b>Default value:</b> <code></code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>appid</code></td>
|
||||
<td>The <a href="https://home.openweathermap.org" target="_blank">OpenWeatherMap</a> API key, which can be obtained by creating an OpenWeatherMap account.<br>
|
||||
|
@@ -12,6 +12,7 @@ Module.register("currentweather",{
|
||||
// Default module config.
|
||||
defaults: {
|
||||
location: "",
|
||||
locationID: "",
|
||||
appid: "",
|
||||
units: config.units,
|
||||
updateInterval: 10 * 60 * 1000, // every 10 minutes
|
||||
@@ -198,7 +199,11 @@ Module.register("currentweather",{
|
||||
*/
|
||||
getParams: function() {
|
||||
var params = "?";
|
||||
params += "q=" + this.config.location;
|
||||
if(this.config.locationID !== "") {
|
||||
params += "id=" + this.config.locationID;
|
||||
} else {
|
||||
params += "q=" + this.config.location;
|
||||
}
|
||||
params += "&units=" + this.config.units;
|
||||
params += "&lang=" + this.config.lang;
|
||||
params += "&APPID=" + this.config.appid;
|
||||
|
@@ -117,7 +117,7 @@ var Fetcher = function(url, reloadInterval, encoding) {
|
||||
};
|
||||
|
||||
/* broadcastItems()
|
||||
* Broadcast the exsisting items.
|
||||
* Broadcast the existing items.
|
||||
*/
|
||||
this.broadcastItems = function() {
|
||||
if (items.length <= 0) {
|
||||
|
@@ -25,8 +25,8 @@ module.exports = NodeHelper.create({
|
||||
},
|
||||
|
||||
/* createFetcher(url, reloadInterval)
|
||||
* Creates a fetcher for a new url if it doesn't exsist yet.
|
||||
* Otherwise it reoses the exsisting one.
|
||||
* Creates a fetcher for a new url if it doesn't exist yet.
|
||||
* Otherwise it reoses the existing one.
|
||||
*
|
||||
* attribute url string - URL of the news feed.
|
||||
* attribute reloadInterval number - Reload interval in milliseconds.
|
||||
@@ -62,7 +62,7 @@ module.exports = NodeHelper.create({
|
||||
|
||||
self.fetchers[url] = fetcher;
|
||||
} else {
|
||||
console.log("Use exsisting news fetcher for url: " + url);
|
||||
console.log("Use existing news fetcher for url: " + url);
|
||||
fetcher = self.fetchers[url];
|
||||
fetcher.setReloadInterval(reloadInterval);
|
||||
fetcher.broadcastItems();
|
||||
|
@@ -14,6 +14,7 @@ modules: [
|
||||
config: {
|
||||
// See 'Configuration options' for more information.
|
||||
location: 'Amsterdam,Netherlands',
|
||||
locationID: '', //Location ID from http://bulk.openweather.org/sample/
|
||||
appid: 'abcde12345abcde12345abcde12345ab' //openweathermap.org API key.
|
||||
}
|
||||
}
|
||||
@@ -42,6 +43,13 @@ The following properties can be configured:
|
||||
<br><b>Default value:</b> <code>New York</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>locationID</code></td>
|
||||
<td>Location ID from <a href="http://bulk.openweather.org/sample/">OpenWeather</a> <b>This will override anything you put in location.</b><br>Leave blank if you want to use location.
|
||||
<br><b>Example:</b> <code>1234567</code>
|
||||
<br><b>Default value:</b> <code></code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>appid</code></td>
|
||||
<td>The <a href="https://home.openweathermap.org" target="_blank">OpenWeatherMap</a> API key, which can be obtained by creating an OpenWeatherMap account.<br>
|
||||
|
@@ -12,6 +12,7 @@ Module.register("weatherforecast",{
|
||||
// Default module config.
|
||||
defaults: {
|
||||
location: "",
|
||||
locationID: "",
|
||||
appid: "",
|
||||
units: config.units,
|
||||
maxNumberOfDays: 7,
|
||||
@@ -195,7 +196,11 @@ Module.register("weatherforecast",{
|
||||
*/
|
||||
getParams: function() {
|
||||
var params = "?";
|
||||
params += "q=" + this.config.location;
|
||||
if(this.config.locationID !== "") {
|
||||
params += "id=" + this.config.locationID;
|
||||
} else {
|
||||
params += "q=" + this.config.location;
|
||||
}
|
||||
params += "&units=" + this.config.units;
|
||||
params += "&lang=" + this.config.lang;
|
||||
/*
|
||||
|
@@ -1,27 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Lade …",
|
||||
/* GENERAL */
|
||||
"LOADING": "Lade …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Heute",
|
||||
"TOMORROW": "Morgen",
|
||||
"RUNNING": "noch",
|
||||
"EMPTY": "Keine Termine.",
|
||||
/* CALENDAR */
|
||||
"TODAY": "Heute",
|
||||
"TOMORROW": "Morgen",
|
||||
"RUNNING": "noch",
|
||||
"EMPTY": "Keine Termine.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNO",
|
||||
"ENE": "ONO",
|
||||
"E": "O",
|
||||
"ESE": "OSO",
|
||||
"SE": "SO",
|
||||
"SSE": "SSO",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNO",
|
||||
"NE": "NO",
|
||||
"ENE": "ONO",
|
||||
"E": "O",
|
||||
"ESE": "OSO",
|
||||
"SE": "SO",
|
||||
"SSE": "SSO",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
}
|
||||
|
@@ -1,27 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Loading …",
|
||||
/* GENERAL */
|
||||
"LOADING": "Loading …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Today",
|
||||
"TOMORROW": "Tomorrow",
|
||||
"RUNNING": "Ends in",
|
||||
"EMPTY": "No upcoming events.",
|
||||
/* CALENDAR */
|
||||
"TODAY": "Today",
|
||||
"TOMORROW": "Tomorrow",
|
||||
"RUNNING": "Ends in",
|
||||
"EMPTY": "No upcoming events.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
|
@@ -1,27 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Chargement …",
|
||||
/* GENERAL */
|
||||
"LOADING": "Chargement …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Aujourd'hui",
|
||||
"TOMORROW": "Demain",
|
||||
"RUNNING": "Se termine dans",
|
||||
"EMPTY": "Aucun RDV.",
|
||||
/* CALENDAR */
|
||||
"TODAY": "Aujourd'hui",
|
||||
"TOMORROW": "Demain",
|
||||
"RUNNING": "Se termine dans",
|
||||
"EMPTY": "Aucun RDV.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSO",
|
||||
"SW": "SO",
|
||||
"WSW": "OSO",
|
||||
"W": "O",
|
||||
"WNW": "ONO",
|
||||
"NW": "NO",
|
||||
"NNW": "NNO"
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSO",
|
||||
"SW": "SO",
|
||||
"WSW": "OSO",
|
||||
"W": "O",
|
||||
"WNW": "ONO",
|
||||
"NW": "NO",
|
||||
"NNW": "NNO"
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
|
28
translations/it.json
Normal file
28
translations/it.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Caricamento in corso …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Oggi",
|
||||
"TOMORROW": "Domani",
|
||||
"RUNNING": "Termina entro",
|
||||
"EMPTY": "Nessun evento in arrivo.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
}
|
28
translations/nb.json
Normal file
28
translations/nb.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Laster …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "I dag",
|
||||
"TOMORROW": "I morgen",
|
||||
"RUNNING": "Slutter om",
|
||||
"EMPTY": "Ingen kommende arrangementer.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNØ",
|
||||
"NE": "NØ",
|
||||
"ENE": "ØNØ",
|
||||
"E": "Ø",
|
||||
"ESE": "ØSØ",
|
||||
"SE": "SØ",
|
||||
"SSE": "SSØ",
|
||||
"S": "S",
|
||||
"SSW": "SSV",
|
||||
"SW": "SV",
|
||||
"WSW": "VSV",
|
||||
"W": "V",
|
||||
"WNW": "VNV",
|
||||
"NW": "NV",
|
||||
"NNW": "NNV"
|
||||
}
|
@@ -11,6 +11,7 @@
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNO",
|
||||
"NE": "NO",
|
||||
"ENE": "ONO",
|
||||
"E": "O",
|
||||
"ESE": "OZO",
|
||||
|
28
translations/nn.json
Normal file
28
translations/nn.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Lastar …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "I dag",
|
||||
"TOMORROW": "I morgon",
|
||||
"RUNNING": "Sluttar om",
|
||||
"EMPTY": "Ingen komande hendingar.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNA",
|
||||
"NE": "NA",
|
||||
"ENE": "ANA",
|
||||
"E": "A",
|
||||
"ESE": "ASA",
|
||||
"SE": "SA",
|
||||
"SSE": "SSA",
|
||||
"S": "S",
|
||||
"SSW": "SSV",
|
||||
"SW": "SV",
|
||||
"WSW": "VSV",
|
||||
"W": "V",
|
||||
"WNW": "VNV",
|
||||
"NW": "NV",
|
||||
"NNW": "NNV"
|
||||
}
|
28
translations/pt.json
Normal file
28
translations/pt.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "A carregar …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Hoje",
|
||||
"TOMORROW": "Amanhã",
|
||||
"RUNNING": "Termina em",
|
||||
"EMPTY": "Sem eventos a chegar.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSO",
|
||||
"SW": "SO",
|
||||
"WSW": "OSO",
|
||||
"W": "O",
|
||||
"WNW": "ONO",
|
||||
"NW": "NO",
|
||||
"NNW": "NNO"
|
||||
}
|
28
translations/sv.json
Normal file
28
translations/sv.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
/* GENERAL */
|
||||
"LOADING": "Laddar …",
|
||||
|
||||
/* CALENDAR */
|
||||
"TODAY": "Idag",
|
||||
"TOMORROW": "Imorgon",
|
||||
"RUNNING": "Slutar",
|
||||
"EMPTY": "Inga kommande händelser.",
|
||||
|
||||
/* WEATHER */
|
||||
"N": "N",
|
||||
"NNE": "NNO",
|
||||
"NE": "NO",
|
||||
"ENE": "ONO",
|
||||
"E": "Ö",
|
||||
"ESE": "OSO",
|
||||
"SE": "SO",
|
||||
"SSE": "SSO",
|
||||
"S": "S",
|
||||
"SSW": "SSV",
|
||||
"SW": "SV",
|
||||
"WSW": "VSV",
|
||||
"W": "V",
|
||||
"WNW": "VNV",
|
||||
"NW": "NV",
|
||||
"NNW": "NNV"
|
||||
}
|
@@ -6,10 +6,15 @@
|
||||
*/
|
||||
|
||||
var translations = {
|
||||
"en" : "translations/en.json",
|
||||
"nl" : "translations/nl.json",
|
||||
"de" : "translations/de.json",
|
||||
"fr" : "translations/fr.json",
|
||||
"fy" : "translations/fy.json",
|
||||
"es" : "translations/es.json",
|
||||
"en" : "translations/en.json", // English
|
||||
"nl" : "translations/nl.json", // Dutch
|
||||
"de" : "translations/de.json", // German
|
||||
"fr" : "translations/fr.json", // French
|
||||
"fy" : "translations/fy.json", // Frysk
|
||||
"es" : "translations/es.json", // Spanish
|
||||
"nb" : "translations/nb.json", // Norsk bokmål
|
||||
"nn" : "translations/nn.json", // Norsk nynorsk
|
||||
"pt" : "translations/pt.json", // Português
|
||||
"sv" : "translations/sv.json", // Svenska
|
||||
"it" : "translations/it.json", // Italian
|
||||
};
|
||||
|
Reference in New Issue
Block a user