Configuration Options
+ -Dashy version {{ appVersion }}
+{{ $t('config.app-version-note') }} {{ appVersion }}
+{{ getLanguage() }}
diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml
new file mode 100644
index 00000000..d5be4189
--- /dev/null
+++ b/.github/workflows/blank.yml
@@ -0,0 +1,21 @@
+# Lints code merged into master branch
+name: Lint Code Base
+on:
+ push:
+ pull_request:
+ branches: [master]
+jobs:
+ build:
+ name: Lint Code Base
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Lint Code Base
+ uses: github/super-linter@v4
+ env:
+ VALIDATE_ALL_CODEBASE: false
+ DEFAULT_BRANCH: master
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/cache-artifacts.yml b/.github/workflows/cache-artifacts.yml
new file mode 100644
index 00000000..498ce16e
--- /dev/null
+++ b/.github/workflows/cache-artifacts.yml
@@ -0,0 +1,13 @@
+# Caches artifacts, including NPM dependencies, to speed up build times
+name: Caching Atrifacts
+on: push
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/cache@v2
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
diff --git a/.github/workflows/dependency-updates-summary.yml b/.github/workflows/dependency-updates-summary.yml
new file mode 100644
index 00000000..145064a5
--- /dev/null
+++ b/.github/workflows/dependency-updates-summary.yml
@@ -0,0 +1,18 @@
+# Shows changes to yarn.lock in PR comment
+# Useful for easily understanding dependency changes
+name: Yarn Lock Changes
+on: [pull_request]
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Yarn Lock Changes
+ uses: Simek/yarn-lock-changes@main
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ collapsibleThreshold: '25'
+ failOnDowngrade: 'false'
+ path: 'yarn.lock'
+ updateComment: 'true'
diff --git a/.github/workflows/generate-contributors.yml b/.github/workflows/generate-contributors.yml
index f2416011..02fe2e6d 100644
--- a/.github/workflows/generate-contributors.yml
+++ b/.github/workflows/generate-contributors.yml
@@ -1,3 +1,5 @@
+# Generates an image showing profile picture of everyone who'se contributed to Dashy
+# Which is embeded in the Readme Credits section, as they deserve some recognition
name: Contributors
on:
schedule:
diff --git a/.github/workflows/get-size.yml b/.github/workflows/get-size.yml
new file mode 100644
index 00000000..2b602fd0
--- /dev/null
+++ b/.github/workflows/get-size.yml
@@ -0,0 +1,9 @@
+# Adds a comment to new PRs, showing the compressed size and size difference of new code
+name: Compressed Size
+on: [pull_request]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: preactjs/compressed-size-action@v2
diff --git a/.github/workflows/issue-translator.yml b/.github/workflows/issue-translator.yml
new file mode 100644
index 00000000..501e9ebd
--- /dev/null
+++ b/.github/workflows/issue-translator.yml
@@ -0,0 +1,18 @@
+# Will translate any issues opened in foraign language, and add the English translation as a comment
+name: 'Issue Translator'
+on:
+ issue_comment:
+ types: [created]
+ issues:
+ types: [opened]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: tomsun28/issues-translate-action@v2.5
+ with:
+ BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
+ BOT_LOGIN_NAME: liss-bot
+ IS_MODIFY_TITLE: true
+ CUSTOM_BOT_NOTE: It looks like this issue isn't in English - not a problem, here's the translation! 🇬🇧
diff --git a/.github/workflows/label-sponsors.yml b/.github/workflows/label-sponsors.yml
new file mode 100644
index 00000000..f7d129bd
--- /dev/null
+++ b/.github/workflows/label-sponsors.yml
@@ -0,0 +1,18 @@
+# Adds a label to any issues raised by a sponsor of Lissy93/Dashy
+# In order to allow their request can be prioritized
+name: Label sponsors
+on:
+ pull_request:
+ types: [opened]
+ issues:
+ types: [opened]
+jobs:
+ build:
+ name: is-sponsor-label
+ runs-on: ubuntu-latest
+ steps:
+ - uses: JasonEtco/is-sponsor-label-action@v1
+ with:
+ label: Priority Request - Sponsor 💖
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/security-scanning.yml b/.github/workflows/security-scanning.yml
new file mode 100644
index 00000000..228b2f2e
--- /dev/null
+++ b/.github/workflows/security-scanning.yml
@@ -0,0 +1,19 @@
+# Uses Snyk to check for potential vulnerabilities, then sends results to GH security tab
+name: Check for vulnerabilities with Snyk
+on: push
+jobs:
+ security:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: Run Snyk to check for vulnerabilities
+ uses: snyk/actions/node@master
+ continue-on-error: true
+ env:
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
+ with:
+ args: --sarif-file-output=snyk.sarif
+ - name: Upload result to GitHub Code Scanning
+ uses: github/codeql-action/upload-sarif@v1
+ with:
+ sarif_file: snyk.sarif
diff --git a/README.md b/README.md
index 6d279f4e..5e495cb9 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,7 @@
- Easy single-file YAML-based configuration, which can also be configured directly through the UI
- Small bundle size, fully responsive UI and PWA makes the app easy to use on any device
- Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
+- Multi-language support, with additional languages coming soon
- Plus lots more...
## Demo ⚡
@@ -304,6 +305,21 @@ From the Settings Menu in Dashy, you can download, backup, edit and rest your co
---
+## Language Switching 🌎
+
+Dashy has the ability to support multiple languages and locales. When available, you're language should be automatically detected and applied on load, based on your browser or systems settings. But you can also select a language through the UI, under Config --> Switch Language.
+
+Alternatively, set you're language in the config file, under `appConfig.language`. The language must be specified as either a 2-digit [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (such as `en`), or where available, the 2-digit code followed by a region or dialect (e.g. `en-GB`).
+
+#### Supported Languages
+- 🇬🇧 **English**: `en`
+
+#### Add your Language
+I would love for Dashy to be available and comfortable to use for all, including non-native English speakers. If you speak another language, and have a few minutes to sapir, you're help with translating it would be very much appreciated.
+There's not too much text to translate, and it's all located in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales), and you don't have to translate it all, as any missing items will just fallback to English. For more info, see the [Development Guides Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations), and feel free to reach out if you need any support.
+
+---
+
## Sections & Items 🗃️
Dashy is made up of a series of sections, each containing a series of items.
diff --git a/docs/assets/CONTRIBUTORS.svg b/docs/assets/CONTRIBUTORS.svg
index 4a3cf1a8..01a754f2 100644
--- a/docs/assets/CONTRIBUTORS.svg
+++ b/docs/assets/CONTRIBUTORS.svg
@@ -3,10 +3,13 @@

- Cloud backup and restore is an optional feature, that enables you to upload your
- config to the internet, and then restore it on any other device or instance of Dashy.
+ {{ $t('cloud-sync.intro-l1') }}
- All data is fully end-to-end encrypted with AES, using your password as the key.
+ {{ $t('cloud-sync.intro-l2') }}
- For more info, please see the
+ {{ $t('cloud-sync.intro-l3') }}
docs
{{ backupId }}
-
- This is used to restore from backups later.
- So keep it, along with your password somewhere safe.
-
+ {{ $t('cloud-sync.backup-id-note') }}
{{yaml}}
- Note: You will need to refresh the page for your changes to take effect. - Styles overides are only stored locally, so it is reccomended to make a copy of your CSS. - To remove all custom styles, delete the contents and hit Save Changes + {{ $t('config.css-note-label') }}: + {{ $t('config.css-note-l1') }} {{ $t('config.css-note-l2') }} {{ $t('config.css-note-l3') }}
- {{saveSuccess ? 'Task Complete' : 'Task Failed'}} + {{saveSuccess + ? $t('config-editor.status-success-msg') : $t('config-editor.status-fail-msg') }}
{{ responseText }}
- The app should rebuild automatically. - This may take up to a minute. - You will need to refresh the page for changes to take effect. -
-- It is recommend to backup your existing confiruration before making any changes. + {{ $t('config-editor.success-note-l1') }} + {{ $t('config-editor.success-note-l2') }} + {{ $t('config-editor.success-note-l3') }}
+{{ $t('config.backup-note') }}
- A rebuild is required for changes written to the conf.yml file to take effect.
- This should happen automatically, but if it hasn't, you can manually trigger it here.
- This is not required for modifications stored locally.
+ {{ $t('app-rebuild.rebuild-note-l1') }}
+ {{ $t('app-rebuild.rebuild-note-l2') }}
+ {{ $t('app-rebuild.rebuild-note-l3') }}
You do no have permission to trigger this action
+{{ $t('app-rebuild.error-permission') }}
✅ Build completed succesfully
-❌ Build operation failed
++ ✅ {{ $t('app-rebuild.success-msg') }} +
++ ❌ {{ $t('app-rebuild.fail-msg') }} +
{{ output || error }}
- Export Custom Variables + {{ $t('theme-maker.export-button') }}
- Reset Styles for '{{ themeToEdit }}' + {{ $t('theme-maker.reset-button') }} '{{ themeToEdit }}'
- Show All Variables + {{ $t('theme-maker.show-all-button') }}
{{ $t('language-switcher.dropdown-label') }}:
+{{ language.flag }} {{ language.name }}
++ There are not currently any additional languages supported, + but stay tuned as more are on their way! +
+