aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-09-11 07:30:56 +0530
committerLibravatar Vijay A <avijayr@protonmail.com>2021-09-11 07:30:56 +0530
commita5f3f635525d270bf2b7326fe1c3846b05f87b5d (patch)
tree403a37786e37ab59ecdd78ff74bc0629ce1d17eb
parentdocs: updated Changelog with cumulative changes for 5.6.1-beta.3 [skip ci] (diff)
parent5.6.1-nightly.56 [skip ci] (diff)
downloadferdium-app-a5f3f635525d270bf2b7326fe1c3846b05f87b5d.tar.gz
ferdium-app-a5f3f635525d270bf2b7326fe1c3846b05f87b5d.tar.zst
ferdium-app-a5f3f635525d270bf2b7326fe1c3846b05f87b5d.zip
Merge branch 'nightly' into release
-rw-r--r--.all-contributorsrc19
-rw-r--r--.devcontainer/devcontainer.json42
-rw-r--r--.dockerignore1
-rw-r--r--.eslintrc46
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md7
-rw-r--r--.github/workflows/dependency-updates.yml16
-rw-r--r--.github/workflows/ferdi-builds.yml56
-rw-r--r--.npmrc3
-rw-r--r--.nvmrc2
-rw-r--r--CHANGELOG.md603
-rw-r--r--CONTRIBUTING.md32
-rw-r--r--Dockerfile21
-rw-r--r--README.md4
-rw-r--r--docs/example-feature/index.js34
-rw-r--r--electron-builder.env1
-rw-r--r--gulpfile.babel.js40
-rw-r--r--package-lock.json1450
-rw-r--r--package.json36
-rw-r--r--packages/forms/package.json2
-rw-r--r--packages/misty.yml11
-rw-r--r--packages/theme/package.json6
-rw-r--r--packages/theme/src/themes/IStyleTypes.ts2
-rw-r--r--packages/theme/src/themes/dark/index.ts7
-rw-r--r--packages/theme/src/themes/default/index.ts9
-rw-r--r--packages/theme/test/index.test.js17
-rw-r--r--packages/theme/test/index.test.ts19
-rw-r--r--packages/theme/tsconfig.json1
-rw-r--r--packages/ui/package.json2
m---------recipes0
-rw-r--r--scripts/postinstall.js8
-rw-r--r--scripts/prepare.js6
-rw-r--r--src/actions/index.js2
-rw-r--r--src/components/AppUpdateInfoBar.js24
-rw-r--r--src/components/auth/AuthLayout.js7
-rw-r--r--src/components/auth/ChangeServer.js8
-rw-r--r--src/components/auth/Password.js9
-rw-r--r--src/components/auth/SetupAssistant.js8
-rw-r--r--src/components/layout/AppLayout.js4
-rw-r--r--src/components/layout/Sidebar.js11
-rw-r--r--src/components/services/tabs/TabItem.js13
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js7
-rw-r--r--src/components/settings/settings/EditSettingsForm.js7
-rw-r--r--src/components/ui/FullscreenLoader/index.js22
-rw-r--r--src/config.ts28
-rw-r--r--src/containers/auth/AuthLayoutContainer.js23
-rw-r--r--src/containers/layout/AppLayoutContainer.js48
-rw-r--r--src/containers/settings/EditSettingsScreen.js85
-rw-r--r--src/environment.js1
-rw-r--r--src/features/announcements/actions.js10
-rw-r--r--src/features/announcements/api.js35
-rw-r--r--src/features/announcements/components/AnnouncementScreen.js300
-rw-r--r--src/features/announcements/constants.js5
-rw-r--r--src/features/announcements/index.js29
-rw-r--r--src/features/announcements/store.js148
-rw-r--r--src/features/appearance/index.js11
-rw-r--r--src/features/basicAuth/Component.js21
-rw-r--r--src/features/nightlyBuilds/Component.js7
-rw-r--r--src/features/todos/index.js2
-rw-r--r--src/features/todos/store.js79
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js14
-rw-r--r--src/features/workspaces/constants.js2
-rw-r--r--src/features/workspaces/models/Workspace.js2
-rw-r--r--src/i18n/globalMessages.js41
-rw-r--r--src/i18n/locales/af.json23
-rw-r--r--src/i18n/locales/ar.json23
-rw-r--r--src/i18n/locales/be.json23
-rw-r--r--src/i18n/locales/bg.json11
-rw-r--r--src/i18n/locales/bs.json23
-rw-r--r--src/i18n/locales/ca.json23
-rw-r--r--src/i18n/locales/cs.json23
-rw-r--r--src/i18n/locales/da.json23
-rw-r--r--src/i18n/locales/de.json23
-rw-r--r--src/i18n/locales/defaultMessages.json1065
-rw-r--r--src/i18n/locales/el.json23
-rw-r--r--src/i18n/locales/en-US.json23
-rw-r--r--src/i18n/locales/es.json23
-rw-r--r--src/i18n/locales/et.json11
-rw-r--r--src/i18n/locales/fa.json11
-rw-r--r--src/i18n/locales/fi.json23
-rw-r--r--src/i18n/locales/fil.json11
-rw-r--r--src/i18n/locales/fr.json23
-rw-r--r--src/i18n/locales/ga.json23
-rw-r--r--src/i18n/locales/he.json23
-rw-r--r--src/i18n/locales/hi.json722
-rw-r--r--src/i18n/locales/hr.json23
-rw-r--r--src/i18n/locales/hu.json23
-rw-r--r--src/i18n/locales/id.json23
-rw-r--r--src/i18n/locales/it.json23
-rw-r--r--src/i18n/locales/ja.json23
-rw-r--r--src/i18n/locales/ka.json23
-rw-r--r--src/i18n/locales/kk.json11
-rw-r--r--src/i18n/locales/ko.json23
-rw-r--r--src/i18n/locales/ms.json11
-rw-r--r--src/i18n/locales/nb.json210
-rw-r--r--src/i18n/locales/nl-BE.json23
-rw-r--r--src/i18n/locales/nl.json23
-rw-r--r--src/i18n/locales/no.json23
-rw-r--r--src/i18n/locales/pl.json23
-rw-r--r--src/i18n/locales/pt-BR.json25
-rw-r--r--src/i18n/locales/pt.json23
-rw-r--r--src/i18n/locales/ro.json23
-rw-r--r--src/i18n/locales/ru.json23
-rw-r--r--src/i18n/locales/si.json11
-rw-r--r--src/i18n/locales/sk.json23
-rw-r--r--src/i18n/locales/sl.json23
-rw-r--r--src/i18n/locales/sq.json11
-rw-r--r--src/i18n/locales/sr.json23
-rw-r--r--src/i18n/locales/sv.json23
-rw-r--r--src/i18n/locales/te.json465
-rw-r--r--src/i18n/locales/tr.json23
-rw-r--r--src/i18n/locales/uk.json71
-rw-r--r--src/i18n/locales/vi.json23
-rw-r--r--src/i18n/locales/zh-CN.json13
-rw-r--r--src/i18n/locales/zh-HANS.json11
-rw-r--r--src/i18n/locales/zh-HANT.json23
-rw-r--r--src/i18n/locales/zh-TW.json13
-rw-r--r--src/i18n/locales/zh.json23
-rw-r--r--src/i18n/messages/src/components/AppUpdateInfoBar.json12
-rw-r--r--src/i18n/messages/src/components/auth/ChangeServer.json31
-rw-r--r--src/i18n/messages/src/components/auth/Password.json35
-rw-r--r--src/i18n/messages/src/components/auth/SetupAssistant.json16
-rw-r--r--src/i18n/messages/src/components/layout/Sidebar.json49
-rw-r--r--src/i18n/messages/src/components/services/tabs/TabItem.json63
-rw-r--r--src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json39
-rw-r--r--src/i18n/messages/src/components/settings/settings/EditSettingsForm.json149
-rw-r--r--src/i18n/messages/src/containers/settings/EditSettingsScreen.json177
-rw-r--r--src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json15
-rw-r--r--src/i18n/messages/src/features/basicAuth/Component.json15
-rw-r--r--src/i18n/messages/src/features/nightlyBuilds/Component.json23
-rw-r--r--src/i18n/messages/src/i18n/globalMessages.json130
-rw-r--r--src/i18n/messages/src/lib/Menu.json319
-rw-r--r--src/index.js25
-rw-r--r--src/internal-server/app/Controllers/Http/StaticController.js15
-rw-r--r--src/internal-server/app/Controllers/Http/UserController.js144
-rw-r--r--src/internal-server/app/Controllers/Http/WorkspaceController.js6
-rw-r--r--src/internal-server/start/routes.js17
-rw-r--r--src/jsUtils.ts3
-rw-r--r--src/lib/Menu.js552
-rw-r--r--src/lib/Tray.js24
-rw-r--r--src/models/News.ts12
-rw-r--r--src/models/RecipePreview.ts16
-rw-r--r--src/models/Service.js76
-rw-r--r--src/models/User.ts4
-rw-r--r--src/routes.js33
-rw-r--r--src/stores/AppStore.js53
-rw-r--r--src/stores/FeaturesStore.js24
-rw-r--r--src/stores/ServicesStore.js25
-rw-r--r--src/stores/SettingsStore.js2
-rw-r--r--src/stores/index.ts4
-rw-r--r--src/webview/recipe.js17
-rw-r--r--src/webview/sessionHandler.ts28
-rw-r--r--src/webview/spellchecker.ts6
152 files changed, 4634 insertions, 4575 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 78daffcdf..552b8cb93 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -966,6 +966,25 @@
966 "contributions": [ 966 "contributions": [
967 "doc" 967 "doc"
968 ] 968 ]
969 },
970 {
971 "login": "sad270",
972 "name": "Sadetdin EYILI",
973 "avatar_url": "https://avatars.githubusercontent.com/u/5607440?v=4",
974 "profile": "https://www.ekino.com",
975 "contributions": [
976 "code",
977 "bug"
978 ]
979 },
980 {
981 "login": "Tsakatac",
982 "name": "Tsakatac",
983 "avatar_url": "https://avatars.githubusercontent.com/u/89021195?v=4",
984 "profile": "https://github.com/Tsakatac",
985 "contributions": [
986 "bug"
987 ]
969 } 988 }
970 ], 989 ],
971 "contributorsPerLine": 16, 990 "contributorsPerLine": 16,
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index d7bd89bea..85a9c5a3b 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,29 +1,31 @@
1// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 1// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2// https://github.com/microsoft/vscode-dev-containers/tree/v0.174.0/containers/javascript-node 2// https://github.com/microsoft/vscode-dev-containers/tree/v0.174.0/containers/javascript-node
3{ 3{
4 "name": "Node.js", 4 "name": "Node.js",
5 "build": { 5 "build": {
6 "dockerfile": "Dockerfile", 6 "dockerfile": "Dockerfile",
7 // Update 'VARIANT' to pick a Node version: 10, 12, 14 7 // Update 'VARIANT' to pick a Node version: 10, 12, 14
8 "args": { "VARIANT": "14" } 8 "args": {
9 }, 9 "VARIANT": "14"
10 }
11 },
10 12
11 // Set *default* container specific settings.json values on container create. 13 // Set *default* container specific settings.json values on container create.
12 "settings": { 14 "settings": {
13 "terminal.integrated.defaultProfile.linux": "/bin/bash" 15 "terminal.integrated.defaultProfile.linux": "/bin/bash"
14 }, 16 },
15 17
16 // Add the IDs of extensions you want installed when the container is created. 18 // Add the IDs of extensions you want installed when the container is created.
17 "extensions": [ 19 "extensions": [
18 "dbaeumer.vscode-eslint" 20 "dbaeumer.vscode-eslint"
19 ], 21 ],
20 22
21 // Use 'forwardPorts' to make a list of ports inside the container available locally. 23 // Use 'forwardPorts' to make a list of ports inside the container available locally.
22 // "forwardPorts": [], 24 // "forwardPorts": [],
23 25
24 // Use 'postCreateCommand' to run commands after the container is created. 26 // Use 'postCreateCommand' to run commands after the container is created.
25 // "postCreateCommand": "npm install", 27 // "postCreateCommand": "npm install",
26 28
27 // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. 29 // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
28 "remoteUser": "node" 30 "remoteUser": "node"
29} 31}
diff --git a/.dockerignore b/.dockerignore
index d1ed260c9..8690fc9e9 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -16,6 +16,7 @@
16**/lerna-debug.log 16**/lerna-debug.log
17**/node_modules 17**/node_modules
18**/npm-debug.log* 18**/npm-debug.log*
19**/.pnpm-debug.log
19**/server*.log 20**/server*.log
20**/yarn-error.log 21**/yarn-error.log
21Dockerfile 22Dockerfile
diff --git a/.eslintrc b/.eslintrc
index 3aae0e438..47811e7be 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -2,20 +2,35 @@
2 "root": true, 2 "root": true,
3 "parser": "@babel/eslint-parser", 3 "parser": "@babel/eslint-parser",
4 "extends": "eslint-config-airbnb", 4 "extends": "eslint-config-airbnb",
5 "plugins": ["jest"], 5 "plugins": [
6 "jest"
7 ],
6 "overrides": [ 8 "overrides": [
7 { 9 {
8 "files": ["**/*.ts", "**/*.tsx"], 10 "files": [
9 "env": { "browser": true, "es6": true, "node": true }, 11 "**/*.ts",
10 "extends": ["airbnb-typescript"], 12 "**/*.tsx"
13 ],
14 "env": {
15 "browser": true,
16 "es6": true,
17 "node": true
18 },
19 "extends": [
20 "airbnb-typescript"
21 ],
11 "parser": "@typescript-eslint/parser", 22 "parser": "@typescript-eslint/parser",
12 "parserOptions": { 23 "parserOptions": {
13 "ecmaFeatures": { "jsx": true }, 24 "ecmaFeatures": {
25 "jsx": true
26 },
14 "ecmaVersion": 2018, 27 "ecmaVersion": 2018,
15 "sourceType": "module", 28 "sourceType": "module",
16 "project": "./tsconfig.json" 29 "project": "./tsconfig.json"
17 }, 30 },
18 "plugins": ["@typescript-eslint"], 31 "plugins": [
32 "@typescript-eslint"
33 ],
19 "rules": { 34 "rules": {
20 // eslint 35 // eslint
21 "arrow-parens": 0, 36 "arrow-parens": 0,
@@ -64,9 +79,13 @@
64 "jsx-a11y/label-has-for": [ 79 "jsx-a11y/label-has-for": [
65 2, 80 2,
66 { 81 {
67 "components": ["Label"], 82 "components": [
83 "Label"
84 ],
68 "required": { 85 "required": {
69 "every": ["id"] 86 "every": [
87 "id"
88 ]
70 }, 89 },
71 "allowChildren": false 90 "allowChildren": false
72 } 91 }
@@ -104,7 +123,15 @@
104 "function-paren-newline": 0, 123 "function-paren-newline": 0,
105 "max-len": 0, 124 "max-len": 0,
106 "no-await-in-loop": 1, 125 "no-await-in-loop": 1,
107 "no-console": [1, { "allow": ["warn", "error"] }], 126 "no-console": [
127 1,
128 {
129 "allow": [
130 "warn",
131 "error"
132 ]
133 }
134 ],
108 "no-param-reassign": 1, 135 "no-param-reassign": 1,
109 "no-restricted-syntax": 0, 136 "no-restricted-syntax": 0,
110 "no-underscore-dangle": 0, 137 "no-underscore-dangle": 0,
@@ -121,6 +148,7 @@
121 "react/destructuring-assignment": 0, 148 "react/destructuring-assignment": 0,
122 "react/jsx-curly-newline": 0, 149 "react/jsx-curly-newline": 0,
123 "react/jsx-filename-extension": 1, 150 "react/jsx-filename-extension": 1,
151 "react/jsx-one-expression-per-line": 0,
124 "react/jsx-no-bind": 1, 152 "react/jsx-no-bind": 1,
125 "react/jsx-props-no-spreading": 0, 153 "react/jsx-props-no-spreading": 0,
126 "react/prefer-stateless-function": 1, 154 "react/prefer-stateless-function": 1,
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index b2cd3a1eb..a777079a8 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,13 +5,14 @@
5 5
6#### Pre-flight Checklist 6#### Pre-flight Checklist
7 7
81. Please remember that if you are logging a bug for some service that has *stopped working* or is *working incorrectly*, please log the bug [here](https://github.com/getferdi/recipes/issues) 81. Please remember that if you are logging a bug for some service that has _stopped working_ or is _working incorrectly_, please log the bug [here](https://github.com/getferdi/recipes/issues)
92. If you are requesting support for a **new service** in Ferdi, please log it [here](https://github.com/getferdi/recipes/pulls) 92. If you are requesting support for a **new service** in Ferdi, please log it [here](https://github.com/getferdi/recipes/pulls)
103. Please remember to read the [self-help documentation](https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help) - in case it helps you unblock yourself for issues related to older versions of recipes that were installed on your machine. (These will get automatically upgraded when you upgrade to the newer versions of Ferdi, but to get new recipes between Ferdi releases, this documentation is quite useful.) 103. Please remember to read the [self-help documentation](https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help) - in case it helps you unblock yourself for issues related to older versions of recipes that were installed on your machine. (These will get automatically upgraded when you upgrade to the newer versions of Ferdi, but to get new recipes between Ferdi releases, this documentation is quite useful.)
114. Please consider supporting Ferdi! 114. Please consider supporting Ferdi!
12 👉 https://github.com/sponsors/getferdi 12 👉 https://github.com/sponsors/getferdi
13 👉 https://opencollective.com/getferdi/donate 13 👉 https://opencollective.com/getferdi/donate
145. Please ensure you've completed all of the following. 145. Please ensure you've completed all of the following.
15
15- [ ] I have read the [Contributing Guidelines](https://github.com/getferdi/ferdi/blob/develop/CONTRIBUTING.md) for this project. 16- [ ] I have read the [Contributing Guidelines](https://github.com/getferdi/ferdi/blob/develop/CONTRIBUTING.md) for this project.
16- [ ] I agree to follow the [Code of Conduct](https://github.com/getferdi/ferdi/blob/develop/CODE_OF_CONDUCT.md) that this project adheres to. 17- [ ] I agree to follow the [Code of Conduct](https://github.com/getferdi/ferdi/blob/develop/CODE_OF_CONDUCT.md) that this project adheres to.
17- [ ] I have searched the [issue tracker](https://github.com/getferdi/ferdi/issues) for a feature request that matches the one I want to file, without success. 18- [ ] I have searched the [issue tracker](https://github.com/getferdi/ferdi/issues) for a feature request that matches the one I want to file, without success.
diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml
index dafcfa4d1..d41ded354 100644
--- a/.github/workflows/dependency-updates.yml
+++ b/.github/workflows/dependency-updates.yml
@@ -22,6 +22,7 @@ jobs:
22 - name: Set env vars 22 - name: Set env vars
23 run: | 23 run: |
24 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 24 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
25 echo "PNPM_CACHE=$HOME/.pnpm-store" >> $GITHUB_ENV
25 - name: Checkout code along with submodules 26 - name: Checkout code along with submodules
26 uses: actions/checkout@v2 27 uses: actions/checkout@v2
27 with: 28 with:
@@ -40,10 +41,21 @@ jobs:
40 restore-keys: | 41 restore-keys: |
41 ${{ runner.os }}-14.17-build-${{ env.cache-name }}- 42 ${{ runner.os }}-14.17-build-${{ env.cache-name }}-
42 ${{ runner.os }}-14.17-build- 43 ${{ runner.os }}-14.17-build-
43 - name: Use Node.js 14.17.5 44 - name: Cache pnpm modules
45 uses: actions/cache@v2
46 env:
47 cache-name: cache-pnpm-store
48 with:
49 path: ${{ env.PNPM_CACHE }}
50 key: ${{ runner.os }}-14.17-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
51 - name: Use Node.js 14.17.6
44 uses: actions/setup-node@v2 52 uses: actions/setup-node@v2
45 with: 53 with:
46 node-version: 14.17.5 54 node-version: 14.17.6
55 - name: Install pnpm
56 uses: pnpm/action-setup@v2.0.1
57 with:
58 version: 6.14.7
47 - name: Uninstall locally and reinstall global npm modules 59 - name: Uninstall locally and reinstall global npm modules
48 run: | 60 run: |
49 npm uninstall node-gyp 61 npm uninstall node-gyp
diff --git a/.github/workflows/ferdi-builds.yml b/.github/workflows/ferdi-builds.yml
index ec40d267c..e3e504731 100644
--- a/.github/workflows/ferdi-builds.yml
+++ b/.github/workflows/ferdi-builds.yml
@@ -45,7 +45,7 @@ jobs:
45 with: 45 with:
46 ref: nightly 46 ref: nightly
47 submodules: recursive 47 submodules: recursive
48 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 48 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
49 - id: should_run 49 - id: should_run
50 name: Check whether there are any commits since this run was last triggered and push them and/or set the output 50 name: Check whether there are any commits since this run was last triggered and push them and/or set the output
51 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }} 51 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
@@ -88,6 +88,7 @@ jobs:
88 - name: Set env vars 88 - name: Set env vars
89 run: | 89 run: |
90 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 90 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
91 echo "PNPM_CACHE=$HOME/.pnpm-store" >> $GITHUB_ENV
91 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV 92 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
92 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV 93 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
93 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 94 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
@@ -116,6 +117,13 @@ jobs:
116 restore-keys: | 117 restore-keys: |
117 ${{ runner.os }}-14.17-build-${{ env.cache-name }}- 118 ${{ runner.os }}-14.17-build-${{ env.cache-name }}-
118 ${{ runner.os }}-14.17-build- 119 ${{ runner.os }}-14.17-build-
120 - name: Cache pnpm modules
121 uses: actions/cache@v2
122 env:
123 cache-name: cache-pnpm-store
124 with:
125 path: ${{ env.PNPM_CACHE }}
126 key: ${{ runner.os }}-14.17-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
119 - name: Cache electron modules 127 - name: Cache electron modules
120 uses: actions/cache@v2 128 uses: actions/cache@v2
121 env: 129 env:
@@ -130,14 +138,18 @@ jobs:
130 with: 138 with:
131 key: ${{ runner.os }}-${{ env.cache-name }} 139 key: ${{ runner.os }}-${{ env.cache-name }}
132 path: ${{ env.ELECTRON_BUILDER_CACHE }} 140 path: ${{ env.ELECTRON_BUILDER_CACHE }}
133 - name: Use Node.js 14.17.5 141 - name: Use Node.js 14.17.6
134 uses: actions/setup-node@v2 142 uses: actions/setup-node@v2
135 with: 143 with:
136 node-version: 14.17.5 144 node-version: 14.17.6
137 - name: Upgrade Xcode version on the macOS 10.15 default runners provided by GH Actions 145 - name: Upgrade Xcode version on the macOS 10.15 default runners provided by GH Actions
138 run: | 146 run: |
139 sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/* 147 sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
140 sudo xcode-select -s "/Applications/Xcode_12.4.app" 148 sudo xcode-select -s "/Applications/Xcode_12.4.app"
149 - name: Install pnpm
150 uses: pnpm/action-setup@v2.0.1
151 with:
152 version: 6.14.7
141 - name: Uninstall locally and reinstall global npm modules 153 - name: Uninstall locally and reinstall global npm modules
142 run: | 154 run: |
143 npm uninstall node-gyp 155 npm uninstall node-gyp
@@ -148,7 +160,7 @@ jobs:
148 - name: Install node dependencies recursively 160 - name: Install node dependencies recursively
149 run: npx lerna bootstrap 161 run: npx lerna bootstrap
150 - name: Package recipes 162 - name: Package recipes
151 run: npm i && npm run package 163 run: pnpm i && pnpm run package
152 working-directory: ./recipes 164 working-directory: ./recipes
153 - name: Run linter and tests 165 - name: Run linter and tests
154 run: npm run lint && npm run test 166 run: npm run lint && npm run test
@@ -186,6 +198,7 @@ jobs:
186 - name: Set env vars 198 - name: Set env vars
187 run: | 199 run: |
188 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 200 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
201 echo "PNPM_CACHE=$HOME/.pnpm-store" >> $GITHUB_ENV
189 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV 202 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
190 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV 203 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
191 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 204 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
@@ -214,6 +227,13 @@ jobs:
214 restore-keys: | 227 restore-keys: |
215 ${{ runner.os }}-14.17-build-${{ env.cache-name }}- 228 ${{ runner.os }}-14.17-build-${{ env.cache-name }}-
216 ${{ runner.os }}-14.17-build- 229 ${{ runner.os }}-14.17-build-
230 - name: Cache pnpm modules
231 uses: actions/cache@v2
232 env:
233 cache-name: cache-pnpm-store
234 with:
235 path: ${{ env.PNPM_CACHE }}
236 key: ${{ runner.os }}-14.17-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
217 - name: Cache electron modules 237 - name: Cache electron modules
218 uses: actions/cache@v2 238 uses: actions/cache@v2
219 env: 239 env:
@@ -228,10 +248,14 @@ jobs:
228 with: 248 with:
229 key: ${{ runner.os }}-${{ env.cache-name }} 249 key: ${{ runner.os }}-${{ env.cache-name }}
230 path: ${{ env.ELECTRON_BUILDER_CACHE }} 250 path: ${{ env.ELECTRON_BUILDER_CACHE }}
231 - name: Use Node.js 14.17.5 251 - name: Use Node.js 14.17.6
232 uses: actions/setup-node@v2 252 uses: actions/setup-node@v2
233 with: 253 with:
234 node-version: 14.17.5 254 node-version: 14.17.6
255 - name: Install pnpm
256 uses: pnpm/action-setup@v2.0.1
257 with:
258 version: 6.14.7
235 - name: Uninstall locally and reinstall global npm modules 259 - name: Uninstall locally and reinstall global npm modules
236 run: | 260 run: |
237 npm uninstall node-gyp 261 npm uninstall node-gyp
@@ -245,7 +269,7 @@ jobs:
245 run: echo "PACKAGE_VERSION=$(node -p 'require("./package.json").version')" >> $GITHUB_ENV 269 run: echo "PACKAGE_VERSION=$(node -p 'require("./package.json").version')" >> $GITHUB_ENV
246 shell: bash 270 shell: bash
247 - name: Package recipes 271 - name: Package recipes
248 run: npm i && npm run package 272 run: pnpm i && pnpm run package
249 working-directory: ./recipes 273 working-directory: ./recipes
250 - name: Run linter and tests 274 - name: Run linter and tests
251 run: npm run lint && npm run test 275 run: npm run lint && npm run test
@@ -300,6 +324,7 @@ jobs:
300 run: | 324 run: |
301 echo "HOME=$USERPROFILE" >> $GITHUB_ENV 325 echo "HOME=$USERPROFILE" >> $GITHUB_ENV
302 echo "NPM_CACHE=$USERPROFILE\.npm" >> $GITHUB_ENV 326 echo "NPM_CACHE=$USERPROFILE\.npm" >> $GITHUB_ENV
327 echo "PNPM_CACHE=$USERPROFILE\.pnpm-store" >> $GITHUB_ENV
303 echo "ELECTRON_CACHE=$USERPROFILE\.cache\electron" >> $GITHUB_ENV 328 echo "ELECTRON_CACHE=$USERPROFILE\.cache\electron" >> $GITHUB_ENV
304 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE\.cache\electron-builder" >> $GITHUB_ENV 329 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE\.cache\electron-builder" >> $GITHUB_ENV
305 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 330 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
@@ -329,6 +354,13 @@ jobs:
329 restore-keys: | 354 restore-keys: |
330 ${{ runner.os }}-14.17-build-${{ env.cache-name }}- 355 ${{ runner.os }}-14.17-build-${{ env.cache-name }}-
331 ${{ runner.os }}-14.17-build- 356 ${{ runner.os }}-14.17-build-
357 - name: Cache pnpm modules
358 uses: actions/cache@v2
359 env:
360 cache-name: cache-pnpm-store
361 with:
362 path: ${{ env.PNPM_CACHE }}
363 key: ${{ runner.os }}-14.17-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
332 - name: Cache electron modules 364 - name: Cache electron modules
333 uses: actions/cache@v2 365 uses: actions/cache@v2
334 env: 366 env:
@@ -343,10 +375,14 @@ jobs:
343 with: 375 with:
344 key: ${{ runner.os }}-${{ env.cache-name }} 376 key: ${{ runner.os }}-${{ env.cache-name }}
345 path: ${{ env.ELECTRON_BUILDER_CACHE }} 377 path: ${{ env.ELECTRON_BUILDER_CACHE }}
346 - name: Use Node.js 14.17.5 378 - name: Use Node.js 14.17.6
347 uses: actions/setup-node@v2 379 uses: actions/setup-node@v2
348 with: 380 with:
349 node-version: 14.17.5 381 node-version: 14.17.6
382 - name: Install pnpm
383 uses: pnpm/action-setup@v2.0.1
384 with:
385 version: 6.14.7
350 - name: Uninstall locally and reinstall global npm modules 386 - name: Uninstall locally and reinstall global npm modules
351 run: | 387 run: |
352 npm uninstall node-gyp 388 npm uninstall node-gyp
@@ -360,7 +396,7 @@ jobs:
360 run: npx lerna bootstrap 396 run: npx lerna bootstrap
361 shell: bash 397 shell: bash
362 - name: Package recipes 398 - name: Package recipes
363 run: npm i && npm run package 399 run: pnpm i && pnpm run package
364 working-directory: ./recipes 400 working-directory: ./recipes
365 shell: bash 401 shell: bash
366 - name: Run linter and tests 402 - name: Run linter and tests
diff --git a/.npmrc b/.npmrc
index cd7566c82..3f8ef9e64 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,3 +1,4 @@
1save-exact = true 1save-exact = true
2engine-strict = true 2engine-strict = true
3legacy-peer-deps = true 3unsafe-perm = true
4frozen-lockfile = false
diff --git a/.nvmrc b/.nvmrc
index 18711d290..5595ae1aa 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
14.17.5 14.17.6
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9dbc909f5..9b5fa9f63 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,104 @@
1# [v5.6.1-beta.4](https://github.com/getferdi/ferdi/compare/v5.6.1-beta.3...v5.6.1-beta.4) (2021-09-11)
2
3Please note that this is the same code as the `v5.6.1-nightly.56` tag.
4The cumulative changes since the previous beta release are:
5
6- Add a confirmation dialog and a preference while quitting Ferdi (#1879) 💖 @vraravam
7- Turn off the certificate-whitelisting in ms-teams since that can cause an MITM attack. 💖 @vraravam, @kris7t
8
9### Bug Fixes
10
11- Fix sidebar dimension when used in horizontal style (#1896) 💖 @CSY54
12- Partially revert the certificate-whitelisting for outlook since it caused crashes 💖 @vraravam
13- Fix macOS black screen when closing to systray in fullscreen mode (#1878) 💖 @sad270
14- Fix issue while importing exported `ferdi.data` file while switching from one laptop to another when it had workspaces (#1874) 💖 @vraravam
15- Fix for 'Support' link not working (404 error) (#1806) 💖 @kytwb
16- Fix zoom actions executed on another services (#1867) 💖 @sad270
17- Fix sidebar context menu not synced when toggling via the context menu (#1871) 💖 @sad270
18- Ferdi locking with lock feature disabled (#1866). Set & run the inactivity timeout only if lock feature is enabled, and use same condition between lock screen and locked menu 💖 @sad270
19
20### Internal
21
22- Build tooling: 'recipes' (using 'pnpm') will coexist with 'ferdi' (using 'npm') (#1905) 💖 @mhatvan, @vraravam
23- Ability for service recipe to expose known certificate hosts (#1890) 💖 @vraravam
24- Remove dependency of recipes requiring `electron` and `electron/remote` modules (#1869 & getferdi/recipes#674) 💖 @vraravam
25- Fix 'stores.app.accentColor is marked as required' console error (#1859) 💖 @sad270, @vraravam
26- Ensure stored settings conform to type-safety 💖 @vraravam
27- Use namespaces when pulling docker base images since this is reqd for podman 💖 @vraravam
28- Remove `What's New` functionality since that is superceded by the `Changelog` (#1864) 💖 @mhatvan
29- Refactoring to have consistent usage (prep for ts conversion) (#1821) 💖 @vraravam
30- Improve contribution documentation (#1865) 💖 @sad270, @vraravam
31
32# [v5.6.1-nightly.56](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.55...v5.6.1-nightly.56) (2021-09-11)
33
34- Turn off the certificate whitelisting in ms-teams since that can cause an MITM attack. 💖 @vraravam, @kris7t
35
36### Internal
37
38- Build tooling: 'recipes' (using 'pnpm') will coexist with 'ferdi' (using 'npm') (#1905) 💖 @mhatvan, @vraravam
39
40# [v5.6.1-nightly.55](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.54...v5.6.1-nightly.55) (2021-09-10)
41
42### Bug fixes
43
44- Fix sidebar dimension when used in horizontal style (#1896) 💖 @CSY54
45- Partially reverted the certificate-whitelisting for outlook since it caused crashes 💖 @vraravam
46
47# [v5.6.1-nightly.54](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.53...v5.6.1-nightly.54) (2021-09-09)
48
49### Internal
50
51- Ability for service recipe to expose known certificate hosts (#1890) 💖 @vraravam
52
53# [v5.6.1-nightly.53](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.52...v5.6.1-nightly.53) (2021-09-08)
54
55- Add a confirmation dialog and a preference while quitting Ferdi (#1879) 💖 @vraravam
56
57### Bug Fixes
58
59- Fix macOS black screen when closing to systray in fullscreen mode (#1878) 💖 @sad270
60
61# [v5.6.1-nightly.52](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.51...v5.6.1-nightly.52) (2021-09-07)
62
63### Bug Fixes
64
65- Fix issue while importing exported `ferdi.data` file while switching from one laptop to another when it had workspaces (#1874) 💖 @vraravam
66- Fix for 'Support' link not working (404 error) (#1806) 💖 @kytwb
67- Fix zoom actions executed on another services (#1867) 💖 @sad270
68
69# [v5.6.1-nightly.51](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.50...v5.6.1-nightly.51) (2021-09-06)
70
71### Bug Fixes
72
73- Fix sidebar context menu not synced when toggling via the context menu (#1871) 💖 @sad270
74
75### Internal
76
77- Remove dependency of recipes requiring `electron` and `electron/remote` modules (#1869 & getferdi/recipes#674) 💖 @vraravam
78
79# [v5.6.1-nightly.50](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.48...v5.6.1-nightly.50) (2021-09-05)
80
81### Bug Fixes
82
83- Ferdi locking with lock feature disabled (#1866). Set & run the inactivity timeout only if lock feature is enabled, and use same condition between lock screen and locked menu 💖 @sad270
84
85### Internal
86
87- Fix 'stores.app.accentColor is marked as required' console error (#1859) 💖 @sad270, @vraravam
88- Ensure stored settings conform to type-safety 💖 @vraravam
89- Use namespaces when pulling docker base images since this is reqd for podman 💖 @vraravam
90- Remove `What's New` functionality since that is superceded by the `Changelog` (#1864) 💖 @mhatvan
91- Refactoring to have consistent usage (prep for ts conversion) (#1821) 💖 @vraravam
92- Improve contribution documentation (#1865) 💖 @sad270, @vraravam
93
94# [v5.6.1-nightly.48](https://github.com/getferdi/ferdi/compare/v5.6.1-nightly.46...v5.6.1-nightly.48) (2021-09-03)
95
96- Service: Add ability to use self-hosted option for `youtrack` service (fixes getferdi/recipes#671)
97
98### Internal
99
100- Upgraded `nodejs` to `14.17.6` 💖 @vraravam
101
1# [v5.6.1-beta.3](https://github.com/getferdi/ferdi/compare/v5.6.1-beta.2...v5.6.1-beta.3) (2021-09-01) 102# [v5.6.1-beta.3](https://github.com/getferdi/ferdi/compare/v5.6.1-beta.2...v5.6.1-beta.3) (2021-09-01)
2 103
3Please note that this is the same code as the `v5.6.1-nightly.46` tag. 104Please note that this is the same code as the `v5.6.1-nightly.46` tag.
@@ -58,7 +159,7 @@ The cumulative changes since the previous beta release are:
58 159
59### Internal 160### Internal
60 161
61- Upgraded 'nodejs' to '14.17.5' 💖 @vraravam 162- Upgraded `nodejs` to `14.17.4` 💖 @vraravam
62- Remove some leftover Franz branding 💖 @vantezzen 163- Remove some leftover Franz branding 💖 @vantezzen
63- Switch from `misty` to `concurrently` (#1846) 💖 @vantezzen 164- Switch from `misty` to `concurrently` (#1846) 💖 @vantezzen
64- Services: Normalized all service recipes to be es6 compliant 💖 @vraravam 165- Services: Normalized all service recipes to be es6 compliant 💖 @vraravam
@@ -433,15 +534,15 @@ The cumulative changes since the previous beta release are:
433 534
434# [5.6.0-beta.8](https://github.com/getferdi/ferdi/compare/v5.6.0-beta.7...v5.6.0-beta.8) (2021-07-16) 535# [5.6.0-beta.8](https://github.com/getferdi/ferdi/compare/v5.6.0-beta.7...v5.6.0-beta.8) (2021-07-16)
435 536
436- Upgraded electron to '13.1.7' 💖 @vraravam 537- Upgraded `electron` to `13.1.7` 💖 @vraravam
437- Turned on other h/w architectures (arm64, armv7l) for linux builds. (#1633) 💖 @vraravam 538- Turned on other h/w architectures (arm64, armv7l) for linux builds. (#1633) 💖 @vraravam
438- chore: run security audit on node modules 💖 @mhatvan 539- chore: run security audit on node modules 💖 @mhatvan
439- Upgraded nodejs to '14.17.3' 💖 @vraravam 540- Upgraded `nodejs` to `14.17.3` 💖 @vraravam
440- Use 'useragent-generator' to generate the user-agent string 💖 @vraravam 541- Use 'useragent-generator' to generate the user-agent string 💖 @vraravam
441 542
442# [5.6.0-beta.7](https://github.com/getferdi/ferdi/compare/v5.6.0-beta.6...v5.6.0-beta.7) (2021-07-07) 543# [5.6.0-beta.7](https://github.com/getferdi/ferdi/compare/v5.6.0-beta.6...v5.6.0-beta.7) (2021-07-07)
443 544
444- Upgraded electron to '13.1.5'. 💖 @vraravam 545- Upgraded `electron` to `13.1.5`. 💖 @vraravam
445- Adjust link opening behavior 💖 @stnkl 546- Adjust link opening behavior 💖 @stnkl
446- Fix color adjustments in Settings screen 💖 @kris7t 547- Fix color adjustments in Settings screen 💖 @kris7t
447- Expose Chrome version to todos webview (fix #1211) (#1478) 💖 @kris7t 548- Expose Chrome version to todos webview (fix #1211) (#1478) 💖 @kris7t
@@ -615,7 +716,9 @@ The cumulative changes since the previous beta release are:
615- Fix setting of webview disablewebsecurity attribute (#772) 💖 @dannyqiu 716- Fix setting of webview disablewebsecurity attribute (#772) 💖 @dannyqiu
616 717
617# [5.5.0](https://github.com/getferdi/ferdi/compare/v5.4.3...v5.5.0) (2020-04-26) 718# [5.5.0](https://github.com/getferdi/ferdi/compare/v5.4.3...v5.5.0) (2020-04-26)
719
618### Features 720### Features
721
619- Merge Franz 5.5.0-beta.2 722- Merge Franz 5.5.0-beta.2
620- Add modifyRequestHeaders, enable properly setting headers for services (#639), 💖 @mahadevans87 @sampathBlam 723- Add modifyRequestHeaders, enable properly setting headers for services (#639), 💖 @mahadevans87 @sampathBlam
621- Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact 724- Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact
@@ -636,6 +739,7 @@ The cumulative changes since the previous beta release are:
636- Add setting to keep service in hibernation after startup (#577, #584) 739- Add setting to keep service in hibernation after startup (#577, #584)
637 740
638### Minor changes 741### Minor changes
742
639- Improve user onboarding (#493) 743- Improve user onboarding (#493)
640- Improve "Updates" section in settings (#506), 💖 @yourcontact 744- Improve "Updates" section in settings (#506), 💖 @yourcontact
641- Improve information about Franz Premium and Teams 745- Improve information about Franz Premium and Teams
@@ -667,6 +771,7 @@ The cumulative changes since the previous beta release are:
667- Improve cache clearing UI feedback (#620), 💖 @saruwman 771- Improve cache clearing UI feedback (#620), 💖 @saruwman
668 772
669### Bug fixes 773### Bug fixes
774
670- Fix cache clearing not working in Windows 10 (#541, #544), 💖 @Room4O4 & @mahadevans87 775- Fix cache clearing not working in Windows 10 (#541, #544), 💖 @Room4O4 & @mahadevans87
671- Fix Home button in navigation bar not correctly navigating (#571, #573), 💖 @Room4O4 & @mahadevans87 776- Fix Home button in navigation bar not correctly navigating (#571, #573), 💖 @Room4O4 & @mahadevans87
672- Fix and enhance context menu (#357) (#413) (#452) (#354) (#227) 777- Fix and enhance context menu (#357) (#413) (#452) (#354) (#227)
@@ -686,16 +791,20 @@ The cumulative changes since the previous beta release are:
686- Enable Dark Reader settings to follow the accent color (#646), 💖 @sampathBlam 791- Enable Dark Reader settings to follow the accent color (#646), 💖 @sampathBlam
687 792
688### Build changes 793### Build changes
794
689- Add retry commands to flaky build steps (#498) 795- Add retry commands to flaky build steps (#498)
690- Run utility scripts pre-commit instead of pre-push (#515) 796- Run utility scripts pre-commit instead of pre-push (#515)
691- Sign Windows binaries (#635, #633, #112) 797- Sign Windows binaries (#635, #633, #112)
692 798
693# [5.5.0-gm.2](https://github.com/getferdi/ferdi/compare/v5.5.0-gm...v5.5.0-gm.2) (2020-04-23) 799# [5.5.0-gm.2](https://github.com/getferdi/ferdi/compare/v5.5.0-gm...v5.5.0-gm.2) (2020-04-23)
800
694### Features 801### Features
802
695- Differentiate between indirect and direct notifications (#590), 💖 @Room4O4 @mahadevans87 @FeikoJoosten @sampathBlam 803- Differentiate between indirect and direct notifications (#590), 💖 @Room4O4 @mahadevans87 @FeikoJoosten @sampathBlam
696- Add setting to keep service in hibernation after startup (#577, #584) 804- Add setting to keep service in hibernation after startup (#577, #584)
697 805
698### Minor changes 806### Minor changes
807
699- Remove excess code from Franz's hibernate feature (#609) 808- Remove excess code from Franz's hibernate feature (#609)
700- Refocus Webview only for active service (#610), 💖 @Room4O4 & @mahadevans87 809- Refocus Webview only for active service (#610), 💖 @Room4O4 & @mahadevans87
701- Use GitHub notifications center and direct notifications (getferdi/recipes#133) 810- Use GitHub notifications center and direct notifications (getferdi/recipes#133)
@@ -711,10 +820,13 @@ The cumulative changes since the previous beta release are:
711- Improve cache clearing UI feedback (#620), 💖 @saruwman 820- Improve cache clearing UI feedback (#620), 💖 @saruwman
712 821
713### Bug Fixes 822### Bug Fixes
823
714- Fix DarkReader translation problem (#593) 824- Fix DarkReader translation problem (#593)
715 825
716## [5.5.0-gm](https://github.com/getferdi/ferdi/compare/v5.4.4-beta.3...v5.5.0-gm) (2020-04-19) 826## [5.5.0-gm](https://github.com/getferdi/ferdi/compare/v5.4.4-beta.3...v5.5.0-gm) (2020-04-19)
827
717### Features 828### Features
829
718- Merge Franz 5.5.0-beta.2 830- Merge Franz 5.5.0-beta.2
719- Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact 831- Add dropdown list to choose Todo service (#418, #477), 💖 @yourcontact
720- Add hotkey for darkmode (#530, #537), 💖 @Room4O4 & @mahadevans87 832- Add hotkey for darkmode (#530, #537), 💖 @Room4O4 & @mahadevans87
@@ -726,6 +838,7 @@ The cumulative changes since the previous beta release are:
726- Add support for 11 new services and improve existing ones, 💖 @rctneil @JakeSteam @sampathBlam @tpopela @RoiArthurB 838- Add support for 11 new services and improve existing ones, 💖 @rctneil @JakeSteam @sampathBlam @tpopela @RoiArthurB
727 839
728### Minor changes 840### Minor changes
841
729- Improve user onboarding (#493) 842- Improve user onboarding (#493)
730- Improve "Updates" section in settings (#506), 💖 @yourcontact 843- Improve "Updates" section in settings (#506), 💖 @yourcontact
731- Improve information about Franz Premium and Teams 844- Improve information about Franz Premium and Teams
@@ -736,18 +849,23 @@ The cumulative changes since the previous beta release are:
736- Update Electron to 8.1.1 (#480) 849- Update Electron to 8.1.1 (#480)
737 850
738### Bug fixes 851### Bug fixes
852
739- Fix cache clearing not working in Windows 10 (#541, #544), 💖 @Room4O4 & @mahadevans87 853- Fix cache clearing not working in Windows 10 (#541, #544), 💖 @Room4O4 & @mahadevans87
740- Fix Home button in navigation bar not correctly navigating (#571, #573), 💖 @Room4O4 & @mahadevans87 854- Fix Home button in navigation bar not correctly navigating (#571, #573), 💖 @Room4O4 & @mahadevans87
741 855
742### Build changes 856### Build changes
857
743- Add retry commands to flaky build steps (#498) 858- Add retry commands to flaky build steps (#498)
744- Run utility scripts pre-commit instead of pre-push (#515) 859- Run utility scripts pre-commit instead of pre-push (#515)
745 860
746# [5.4.3](https://github.com/getferdi/ferdi/compare/v5.4.0...v5.4.3) 861# [5.4.3](https://github.com/getferdi/ferdi/compare/v5.4.0...v5.4.3)
862
747### Features 863### Features
864
748- Add inactivity lock #179 865- Add inactivity lock #179
749 866
750### Minor changes 867### Minor changes
868
751- Upgrading to Electron 7 https://github.com/getferdi/ferdi/issues/170 869- Upgrading to Electron 7 https://github.com/getferdi/ferdi/issues/170
752- Review empty lock password behaviour https://github.com/getferdi/ferdi/issues/232 870- Review empty lock password behaviour https://github.com/getferdi/ferdi/issues/232
753- Several minor UI improvements 871- Several minor UI improvements
@@ -759,6 +877,7 @@ The cumulative changes since the previous beta release are:
759- Add multisize tray icon for Windows (#316) 877- Add multisize tray icon for Windows (#316)
760 878
761### Bug fixes 879### Bug fixes
880
762- Fix bypass flaw in lock feature https://github.com/getferdi/ferdi/issues/168 881- Fix bypass flaw in lock feature https://github.com/getferdi/ferdi/issues/168
763- Fix spellchecker by using setTimeout https://github.com/getferdi/ferdi/issues/220 882- Fix spellchecker by using setTimeout https://github.com/getferdi/ferdi/issues/220
764- Fix zoom +/- in services https://github.com/getferdi/ferdi/issues/143 883- Fix zoom +/- in services https://github.com/getferdi/ferdi/issues/143
@@ -766,9 +885,11 @@ The cumulative changes since the previous beta release are:
766- Fix bugs with using Ferdi without an account 885- Fix bugs with using Ferdi without an account
767 886
768### Build changes 887### Build changes
888
769- Extended Travis build time from 30 to 100 minutes 889- Extended Travis build time from 30 to 100 minutes
770 890
771# [5.4.0](https://github.com/getferdi/ferdi/compare/v5.3.4...v5.4.0) 891# [5.4.0](https://github.com/getferdi/ferdi/compare/v5.3.4...v5.4.0)
892
772- Merge Franz v5.4.0 893- Merge Franz v5.4.0
773- Add option to show a service navigation bar 894- Add option to show a service navigation bar
774- Add service hibernation 895- Add service hibernation
@@ -780,6 +901,7 @@ The cumulative changes since the previous beta release are:
780- Sorting applications in QuickSwitch by last used 901- Sorting applications in QuickSwitch by last used
781 902
782# [5.3.4](https://github.com/getferdi/ferdi/compare/v5.3.3...v5.3.4) (2019-09-25) 903# [5.3.4](https://github.com/getferdi/ferdi/compare/v5.3.3...v5.3.4) (2019-09-25)
904
783- Fix continuous releases/assets delivery on tags builds #53 905- Fix continuous releases/assets delivery on tags builds #53
784- Attempt at making menubar hiding feature cross-platform #7 (comment) 906- Attempt at making menubar hiding feature cross-platform #7 (comment)
785- Attempt at making "About Ferdi" consistent across platforms #47 (comment) 907- Attempt at making "About Ferdi" consistent across platforms #47 (comment)
@@ -789,6 +911,7 @@ The cumulative changes since the previous beta release are:
789- Add "Scheduled Do-not-Disturb" feature 911- Add "Scheduled Do-not-Disturb" feature
790 912
791# [5.3.3](https://github.com/getferdi/ferdi/compare/v5.3.2...v5.3.3) (2019-09-18) 913# [5.3.3](https://github.com/getferdi/ferdi/compare/v5.3.2...v5.3.3) (2019-09-18)
914
792- Merged Franz v5.3.3 into Ferdi 915- Merged Franz v5.3.3 into Ferdi
793- Allow hiding menubar (#7) 916- Allow hiding menubar (#7)
794- Add "back" and "forward" options for browsing history inside services (#39) 917- Add "back" and "forward" options for browsing history inside services (#39)
@@ -796,9 +919,11 @@ The cumulative changes since the previous beta release are:
796- Add keep workspace loaded option per workspace (#37) 919- Add keep workspace loaded option per workspace (#37)
797 920
798# [5.3.2](https://github.com/getferdi/ferdi/compare/v5.3.1...v5.3.2) (2019-09-13) 921# [5.3.2](https://github.com/getferdi/ferdi/compare/v5.3.1...v5.3.2) (2019-09-13)
922
799Merged Franz v5.3.2 into Ferdi 923Merged Franz v5.3.2 into Ferdi
800 924
801## [5.3.1](https://github.com/getferdi/ferdi/compare/v5.3.0...v5.3.1) (2019-09-09) 925## [5.3.1](https://github.com/getferdi/ferdi/compare/v5.3.0...v5.3.1) (2019-09-09)
926
802Merge Franz v5.3.1 into Ferdi. 927Merge Franz v5.3.1 into Ferdi.
803 928
804- Enable todos for all users 929- Enable todos for all users
@@ -806,16 +931,15 @@ Merge Franz v5.3.1 into Ferdi.
806 931
807### Bug Fixes 932### Bug Fixes
808 933
809* **Windows:** Fix app size in fullscreen ([e210701](https://github.com/getferdi/ferdi/commit/e210701)) 934- **Windows:** Fix app size in fullscreen ([e210701](https://github.com/getferdi/ferdi/commit/e210701))
810* **Windows:** Fix app to be cropped at the bottom on Windows ([42f97b4](https://github.com/getferdi/ferdi/commit/42f97b4)) 935- **Windows:** Fix app to be cropped at the bottom on Windows ([42f97b4](https://github.com/getferdi/ferdi/commit/42f97b4))
811
812 936
813### Features 937### Features
814 938
815* **Todos:** Add option to disable todos ([5d03b91](https://github.com/getferdi/ferdi/commit/5d03b91)) 939- **Todos:** Add option to disable todos ([5d03b91](https://github.com/getferdi/ferdi/commit/5d03b91))
816
817 940
818## [5.3.0](https://github.com/getferdi/ferdi/compare/v5.2.1-beta.1...v5.3.0) (2019-09-06) 941## [5.3.0](https://github.com/getferdi/ferdi/compare/v5.2.1-beta.1...v5.3.0) (2019-09-06)
942
819- Removes pages begging you to donate after registration 943- Removes pages begging you to donate after registration
820- Makes all users Premium by default 944- Makes all users Premium by default
821- [Add option to change server to a custom](https://github.com/getferdi/ferdi#servers) [ferdi-server](https://github.com/getferdi/server) 945- [Add option to change server to a custom](https://github.com/getferdi/ferdi#servers) [ferdi-server](https://github.com/getferdi/server)
@@ -827,119 +951,107 @@ Merge Franz v5.3.1 into Ferdi.
827 951
828### Features 952### Features
829 953
830* **App:** Add second confirmation step for the free 14 day trial. 954- **App:** Add second confirmation step for the free 14 day trial.
831* **Todos:** Add option to disable todos ([5d03b91](https://github.com/meetfranz/franz/commit/5d03b91)) 955- **Todos:** Add option to disable todos ([5d03b91](https://github.com/meetfranz/franz/commit/5d03b91))
832 956
833# [5.3.0](https://github.com/meetfranz/franz/compare/v5.2.1-beta.1...v5.3.0) (2019-09-06) 957# [5.3.0](https://github.com/meetfranz/franz/compare/v5.2.1-beta.1...v5.3.0) (2019-09-06)
834 958
835### Features 959### Features
836 960
837* **Todos:** 🥳🥳🥳 Manage your daily tasks with **Franz Todos** 🥳🥳🥳 961- **Todos:** 🥳🥳🥳 Manage your daily tasks with **Franz Todos** 🥳🥳🥳
838* **App:** Add option to copy debug information via the help menu ([4666e85](https://github.com/meetfranz/franz/commit/4666e85)) 962- **App:** Add option to copy debug information via the help menu ([4666e85](https://github.com/meetfranz/franz/commit/4666e85))
839* **App:** Updated Pricing, more infos can be found on ([meetfranz.com/pricing](https://meetfranz.com/pricing)) 963- **App:** Updated Pricing, more infos can be found on ([meetfranz.com/pricing](https://meetfranz.com/pricing))
840* **App:** Improved Settings UX 964- **App:** Improved Settings UX
841* **3rd Party Services:** Added option to open custom recipes folder 965- **3rd Party Services:** Added option to open custom recipes folder
842
843 966
844### Bug Fixes 967### Bug Fixes
845 968
846* **Windows:** Fix app size in fullscreen ([e210701](https://github.com/meetfranz/franz/commit/e210701)) 969- **Windows:** Fix app size in fullscreen ([e210701](https://github.com/meetfranz/franz/commit/e210701))
847* **Windows:** Fix app to be cropped at the bottom on Windows ([42f97b4](https://github.com/meetfranz/franz/commit/42f97b4)) 970- **Windows:** Fix app to be cropped at the bottom on Windows ([42f97b4](https://github.com/meetfranz/franz/commit/42f97b4))
848* **Notifications:** Fix issue that blocked notifications from e.g. Slack ([44c413b](https://github.com/meetfranz/franz/commit/44c413b)) 971- **Notifications:** Fix issue that blocked notifications from e.g. Slack ([44c413b](https://github.com/meetfranz/franz/commit/44c413b))
849* **App:** A ton of various bugfixes and improvements 972- **App:** A ton of various bugfixes and improvements
850 973
851### General 974### General
852 975
853* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 976- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
854
855 977
856# [5.2.0](https://github.com/meetfranz/franz/compare/v5.2.0-beta.4...v5.2.0) (2019-07-19) 978# [5.2.0](https://github.com/meetfranz/franz/compare/v5.2.0-beta.4...v5.2.0) (2019-07-19)
857 979
858### Features 980### Features
859* **Service:** You can now add any custom website 🥳 981
982- **Service:** You can now add any custom website 🥳
860 983
861### Bug Fixes 984### Bug Fixes
862 985
863* **Notifications:** Don't show notification badges when app is muted ([e844a64](https://github.com/meetfranz/franz/commit/e844a64)) 986- **Notifications:** Don't show notification badges when app is muted ([e844a64](https://github.com/meetfranz/franz/commit/e844a64))
864* **Settings:** Fix position of settings window 987- **Settings:** Fix position of settings window
865* **Recipes:** Fix recipe install when directly accessing recipe e.g. via url ([eba50bc](https://github.com/meetfranz/franz/commit/eba50bc)) 988- **Recipes:** Fix recipe install when directly accessing recipe e.g. via url ([eba50bc](https://github.com/meetfranz/franz/commit/eba50bc))
866* **Proxy:** Fix issue with service proxy authentication ([b9e5b23](https://github.com/meetfranz/franz/commit/b9e5b23)) 989- **Proxy:** Fix issue with service proxy authentication ([b9e5b23](https://github.com/meetfranz/franz/commit/b9e5b23))
867* **Announcements:** Fix issue with rendering announcements in workspaces ([1e38ec5](https://github.com/meetfranz/franz/commit/1e38ec5)) 990- **Announcements:** Fix issue with rendering announcements in workspaces ([1e38ec5](https://github.com/meetfranz/franz/commit/1e38ec5))
868* **Windows:** Add Workspaces menu & fix Window menu ([92a61d4](https://github.com/meetfranz/franz/commit/92a61d4)) 991- **Windows:** Add Workspaces menu & fix Window menu ([92a61d4](https://github.com/meetfranz/franz/commit/92a61d4))
869* **Windows:** Replace tray icon with high-res version ([a5eb399](https://github.com/meetfranz/franz/commit/a5eb399)) 992- **Windows:** Replace tray icon with high-res version ([a5eb399](https://github.com/meetfranz/franz/commit/a5eb399))
870* **Workspaces:** Fix service reordering within workspaces ([17f3a22](https://github.com/meetfranz/franz/commit/17f3a22)) 993- **Workspaces:** Fix service reordering within workspaces ([17f3a22](https://github.com/meetfranz/franz/commit/17f3a22))
871* **Workspaces:** Fix issue with service visibility after downgrade ([05294](https://github.com/meetfranz/franz/commit/05294)) 994- **Workspaces:** Fix issue with service visibility after downgrade ([05294](https://github.com/meetfranz/franz/commit/05294))
872 995
873### General 996### General
874* **App:** Improved email validation ([dd8ddcc](https://github.com/meetfranz/franz/commit/dd8ddcc)) ([@Snuggle](https://github.com/Snuggle))
875* **App:** Update electron to 4.2.4 ([404c87a](https://github.com/meetfranz/franz/commit/404c87a))
876* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
877 997
998- **App:** Improved email validation ([dd8ddcc](https://github.com/meetfranz/franz/commit/dd8ddcc)) ([@Snuggle](https://github.com/Snuggle))
999- **App:** Update electron to 4.2.4 ([404c87a](https://github.com/meetfranz/franz/commit/404c87a))
1000- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
878 1001
879# [5.2.0-beta.4](https://github.com/meetfranz/franz/compare/v5.2.0-beta.3...v5.2.0-beta.4) (2019-07-01) 1002# [5.2.0-beta.4](https://github.com/meetfranz/franz/compare/v5.2.0-beta.3...v5.2.0-beta.4) (2019-07-01)
880 1003
881
882### Bug Fixes 1004### Bug Fixes
883 1005
884* **Notifications:** Don't show notification badges when app is muted ([e844a64](https://github.com/meetfranz/franz/commit/e844a64)) 1006- **Notifications:** Don't show notification badges when app is muted ([e844a64](https://github.com/meetfranz/franz/commit/e844a64))
885* **Settings:** Fix position of settings window 1007- **Settings:** Fix position of settings window
886 1008
887### General 1009### General
888 1010
889* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1011- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
890
891 1012
892# [5.2.0-beta.3](https://github.com/meetfranz/franz/compare/v5.2.0-beta.2...v5.2.0-beta.3) (2019-06-24) 1013# [5.2.0-beta.3](https://github.com/meetfranz/franz/compare/v5.2.0-beta.2...v5.2.0-beta.3) (2019-06-24)
893 1014
894### General 1015### General
895 1016
896* **App:** Downgraded electron to 4.2.4 ([404c87a](https://github.com/meetfranz/franz/commit/404c87a)) 1017- **App:** Downgraded electron to 4.2.4 ([404c87a](https://github.com/meetfranz/franz/commit/404c87a))
897
898 1018
899# [5.2.0-beta.2](https://github.com/meetfranz/franz/compare/v5.2.0-beta.1...v5.2.0-beta.2) (2019-06-12) 1019# [5.2.0-beta.2](https://github.com/meetfranz/franz/compare/v5.2.0-beta.1...v5.2.0-beta.2) (2019-06-12)
900 1020
901
902### Bug Fixes 1021### Bug Fixes
903 1022
904* **Recipes:** Fix recipe install when directly accessing recipe ([eba50bc](https://github.com/meetfranz/franz/commit/eba50bc)) 1023- **Recipes:** Fix recipe install when directly accessing recipe ([eba50bc](https://github.com/meetfranz/franz/commit/eba50bc))
905
906
907 1024
908# [5.2.0-beta.1](https://github.com/meetfranz/franz/compare/v5.1.0...v5.2.0-beta.1) (2019-06-11) 1025# [5.2.0-beta.1](https://github.com/meetfranz/franz/compare/v5.1.0...v5.2.0-beta.1) (2019-06-11)
909 1026
910
911### Bug Fixes 1027### Bug Fixes
912 1028
913* **Workspaces:** Service reordering within workspaces ([17f3a22](https://github.com/meetfranz/franz/commit/17f3a22)) 1029- **Workspaces:** Service reordering within workspaces ([17f3a22](https://github.com/meetfranz/franz/commit/17f3a22))
914* **Proxy:** Fix issue with proxy authentication ([b9e5b23](https://github.com/meetfranz/franz/commit/b9e5b23)) 1030- **Proxy:** Fix issue with proxy authentication ([b9e5b23](https://github.com/meetfranz/franz/commit/b9e5b23))
915* **Announcements:** Fixes issue with rendering announcements in workspaces ([1e38ec5](https://github.com/meetfranz/franz/commit/1e38ec5)) 1031- **Announcements:** Fixes issue with rendering announcements in workspaces ([1e38ec5](https://github.com/meetfranz/franz/commit/1e38ec5))
916* **Windows:** Add Workspaces menu & fix Window menu ([92a61d4](https://github.com/meetfranz/franz/commit/92a61d4)) 1032- **Windows:** Add Workspaces menu & fix Window menu ([92a61d4](https://github.com/meetfranz/franz/commit/92a61d4))
917* **Windows:** Replace tray icon with high-res version ([a5eb399](https://github.com/meetfranz/franz/commit/a5eb399)) 1033- **Windows:** Replace tray icon with high-res version ([a5eb399](https://github.com/meetfranz/franz/commit/a5eb399))
918* **App:** Improved email validation ([dd8ddcc](https://github.com/meetfranz/franz/commit/dd8ddcc)) ([@Snuggle](https://github.com/Snuggle)) 1034- **App:** Improved email validation ([dd8ddcc](https://github.com/meetfranz/franz/commit/dd8ddcc)) ([@Snuggle](https://github.com/Snuggle))
919
920 1035
921### General 1036### General
922 1037
923* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1038- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
924* **App:** Update electron to 5.0.2 ([5828062](https://github.com/meetfranz/franz/commit/5828062)) 1039- **App:** Update electron to 5.0.2 ([5828062](https://github.com/meetfranz/franz/commit/5828062))
925
926
927 1040
928# [5.1.0](https://github.com/meetfranz/franz/compare/v5.1.0...v5.1.0-beta.1) (2019-04-16) 1041# [5.1.0](https://github.com/meetfranz/franz/compare/v5.1.0...v5.1.0-beta.1) (2019-04-16)
929 1042
930### Features 1043### Features
931 1044
932* **App:** Added Workspaces for all your daily routines 🎉 ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99)) 1045- **App:** Added Workspaces for all your daily routines 🎉 ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99))
933* **App:** Added [Team Management](https://meetfranz.com/user/team) 🎉 ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99)) 1046- **App:** Added [Team Management](https://meetfranz.com/user/team) 🎉 ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99))
934* **App:** Added Kerberos Support via Command Line Switches ([#1331](https://github.com/meetfranz/franz/issues/1331)) ([@frumania](https://github.com/frumania)) ([a1950d7](https://github.com/meetfranz/franz/commit/a1950d7)) 1047- **App:** Added Kerberos Support via Command Line Switches ([#1331](https://github.com/meetfranz/franz/issues/1331)) ([@frumania](https://github.com/frumania)) ([a1950d7](https://github.com/meetfranz/franz/commit/a1950d7))
935* **App:** Open changelog in app 1048- **App:** Open changelog in app
936* **App:** Various small fixes and improvements 1049- **App:** Various small fixes and improvements
937 1050
938### General 1051### General
939 1052
940* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1053- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
941* **App:** Update electron to 4.1.4 ([2604914](https://github.com/meetfranz/franz/commit/2604914)) 1054- **App:** Update electron to 4.1.4 ([2604914](https://github.com/meetfranz/franz/commit/2604914))
942
943 1055
944# [5.1.0-beta.1](https://github.com/meetfranz/franz/compare/v5.0.1-beta.1...v5.1.0-beta.1) (2019-04-16) 1056# [5.1.0-beta.1](https://github.com/meetfranz/franz/compare/v5.0.1-beta.1...v5.1.0-beta.1) (2019-04-16)
945 1057
@@ -949,25 +1061,24 @@ Merge Franz v5.3.1 into Ferdi.
949 1061
950### Features 1062### Features
951 1063
952* **App:** Add security checks for external URLs ([6e5531a](https://github.com/meetfranz/franz/commit/6e5531a)) 1064- **App:** Add security checks for external URLs ([6e5531a](https://github.com/meetfranz/franz/commit/6e5531a))
953* **Linux:** Add auto updater for Linux AppImage builds ([d641b4e](https://github.com/meetfranz/franz/commit/d641b4e)) 1065- **Linux:** Add auto updater for Linux AppImage builds ([d641b4e](https://github.com/meetfranz/franz/commit/d641b4e))
954* **Spell check:** Add British English as spell check language ([#1306](https://github.com/meetfranz/franz/issues/1306)) ([67fa325](https://github.com/meetfranz/franz/commit/67fa325)) 1066- **Spell check:** Add British English as spell check language ([#1306](https://github.com/meetfranz/franz/issues/1306)) ([67fa325](https://github.com/meetfranz/franz/commit/67fa325))
955* **Windows:** Add option to quit Ferdi from Taskbar icon ([952fc8b](https://github.com/meetfranz/franz/commit/952fc8b)) 1067- **Windows:** Add option to quit Ferdi from Taskbar icon ([952fc8b](https://github.com/meetfranz/franz/commit/952fc8b))
956 1068
957### Bug Fixes 1069### Bug Fixes
958 1070
959* **Linux:** Fix minimized window focusing ([#1304](https://github.com/meetfranz/franz/issues/1304)) ([@skoruppa](https://github.com/skoruppa)) ([5b02c4d](https://github.com/meetfranz/franz/commit/5b02c4d)) 1071- **Linux:** Fix minimized window focusing ([#1304](https://github.com/meetfranz/franz/issues/1304)) ([@skoruppa](https://github.com/skoruppa)) ([5b02c4d](https://github.com/meetfranz/franz/commit/5b02c4d))
960* **Notifications:** Fix notifications & notification click when icon is blob ([03589f6](https://github.com/meetfranz/franz/commit/03589f6)) 1072- **Notifications:** Fix notifications & notification click when icon is blob ([03589f6](https://github.com/meetfranz/franz/commit/03589f6))
961* **Service:** Fix service zoom (cmd/ctrl+ & cmd/ctrl-) ([91a0f59](https://github.com/meetfranz/franz/commit/91a0f59)) 1073- **Service:** Fix service zoom (cmd/ctrl+ & cmd/ctrl-) ([91a0f59](https://github.com/meetfranz/franz/commit/91a0f59))
962* **Service:** Fix shortcut for (un)muting notifications & audio ([1df3342](https://github.com/meetfranz/franz/commit/1df3342)) 1074- **Service:** Fix shortcut for (un)muting notifications & audio ([1df3342](https://github.com/meetfranz/franz/commit/1df3342))
963* **Windows:** Fix copy & paste in service context menus ([e66fcaa](https://github.com/meetfranz/franz/commit/e66fcaa)), closes [#1316](https://github.com/meetfranz/franz/issues/1316) 1075- **Windows:** Fix copy & paste in service context menus ([e66fcaa](https://github.com/meetfranz/franz/commit/e66fcaa)), closes [#1316](https://github.com/meetfranz/franz/issues/1316)
964* **Windows:** Fix losing window when "Keep Ferdi in background" is enabled ([78a3722](https://github.com/meetfranz/franz/commit/78a3722)) 1076- **Windows:** Fix losing window when "Keep Ferdi in background" is enabled ([78a3722](https://github.com/meetfranz/franz/commit/78a3722))
965 1077
966### General 1078### General
967 1079
968* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1080- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
969* **App:** Update electron to 4.0.8 ([8336d17](https://github.com/meetfranz/franz/commit/8336d17)) 1081- **App:** Update electron to 4.0.8 ([8336d17](https://github.com/meetfranz/franz/commit/8336d17))
970
971 1082
972# [5.0.1-beta.1](https://github.com/meetfranz/franz/compare/v5.0.0...v5.0.1-beta.1) (2019-03-18) 1083# [5.0.1-beta.1](https://github.com/meetfranz/franz/compare/v5.0.0...v5.0.1-beta.1) (2019-03-18)
973 1084
@@ -977,318 +1088,304 @@ Merge Franz v5.3.1 into Ferdi.
977 1088
978### Features 1089### Features
979 1090
980* **Spellchecker:** Add automatic spellcheck language detection ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171)) 1091- **Spellchecker:** Add automatic spellcheck language detection ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171))
981* **Windows:** Add option to quit Ferdi from Taskbar ([8808601](https://github.com/meetfranz/franz/commit/8808601)) 1092- **Windows:** Add option to quit Ferdi from Taskbar ([8808601](https://github.com/meetfranz/franz/commit/8808601))
982 1093
983### Bug Fixes 1094### Bug Fixes
984 1095
985* **App:** Various bugfixes and improvements 1096- **App:** Various bugfixes and improvements
986 1097
987### General 1098### General
988 1099
989* **App:** Updated electron to 4.0.4 1100- **App:** Updated electron to 4.0.4
990
991
992 1101
993# [5.0.0-beta.24](https://github.com/meetfranz/franz/compare/v5.0.0-beta.23...v5.0.0-beta.24) (2019-02-03) 1102# [5.0.0-beta.24](https://github.com/meetfranz/franz/compare/v5.0.0-beta.23...v5.0.0-beta.24) (2019-02-03)
994 1103
995
996### Bug Fixes 1104### Bug Fixes
997 1105
998* **Service:** Fix unnecessary webview resize / Slack scroll issue ([4b7d3e2](https://github.com/meetfranz/franz/commit/4b7d3e2)) 1106- **Service:** Fix unnecessary webview resize / Slack scroll issue ([4b7d3e2](https://github.com/meetfranz/franz/commit/4b7d3e2))
999* **Service:** Improve focus when switching services ([d130f26](https://github.com/meetfranz/franz/commit/d130f26)), closes [#1255](https://github.com/meetfranz/franz/issues/1255) 1107- **Service:** Improve focus when switching services ([d130f26](https://github.com/meetfranz/franz/commit/d130f26)), closes [#1255](https://github.com/meetfranz/franz/issues/1255)
1000* **Service:** Fix dark mode in services ([d529410](https://github.com/meetfranz/franz/commit/d529410)) 1108- **Service:** Fix dark mode in services ([d529410](https://github.com/meetfranz/franz/commit/d529410))
1001
1002
1003 1109
1004# [5.0.0-beta.23](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.23) (2019-02-01) 1110# [5.0.0-beta.23](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.23) (2019-02-01)
1005 1111
1006### General 1112### General
1007 1113
1008* **App:** Updated electron to 4.0.2 / Chromium 69 1114- **App:** Updated electron to 4.0.2 / Chromium 69
1009 1115
1010### Features 1116### Features
1011 1117
1012* **Service:** Add error screen for services that failed to load ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171)) 1118- **Service:** Add error screen for services that failed to load ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171))
1013* **Service:** Add option to change spellchecking language by service ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60)) 1119- **Service:** Add option to change spellchecking language by service ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60))
1014 1120
1015### Bug Fixes 1121### Bug Fixes
1016 1122
1017* **App:** Fixed disable notification sounds 🔇 1123- **App:** Fixed disable notification sounds 🔇
1018* **App:** Fix app delay for Premium Supporters ([08c40f0](https://github.com/meetfranz/franz/commit/08c40f0)) 1124- **App:** Fix app delay for Premium Supporters ([08c40f0](https://github.com/meetfranz/franz/commit/08c40f0))
1019* **i18n:** Fix "greek" spellchecker name ([89c2eeb](https://github.com/meetfranz/franz/commit/89c2eeb)) 1125- **i18n:** Fix "greek" spellchecker name ([89c2eeb](https://github.com/meetfranz/franz/commit/89c2eeb))
1020* **Spellchecker:** Dictionaries are now part of app instead of dynamic download ([0cdc165](https://github.com/meetfranz/franz/commit/0cdc165)) 1126- **Spellchecker:** Dictionaries are now part of app instead of dynamic download ([0cdc165](https://github.com/meetfranz/franz/commit/0cdc165))
1021
1022 1127
1023<a name="5.0.0-beta.22"></a> 1128<a name="5.0.0-beta.22"></a>
1024# [5.0.0-beta.22](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.22) (2018-12-13)
1025 1129
1130# [5.0.0-beta.22](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.22) (2018-12-13)
1026 1131
1027### Bug Fixes 1132### Bug Fixes
1028 1133
1029* **Windows:** Package spellchecker dictionaries 1134- **Windows:** Package spellchecker dictionaries
1030
1031 1135
1032<a name="5.0.0-beta.21"></a> 1136<a name="5.0.0-beta.21"></a>
1137
1033# [5.0.0-beta.21](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.21) (2018-12-11) 1138# [5.0.0-beta.21](https://github.com/meetfranz/franz/compare/5.0.0-beta.20...5.0.0-beta.21) (2018-12-11)
1034 1139
1035### General 1140### General
1036 1141
1037* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1142- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
1038 1143
1039### Features 1144### Features
1040 1145
1041* **Service:** Add option to change spellchecking language by service ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60)) 1146- **Service:** Add option to change spellchecking language by service ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60))
1042* **Context Menu:** Quickly change the spellchecker language for the active service 1147- **Context Menu:** Quickly change the spellchecker language for the active service
1043* **Service:** Add error screen for services that failed to load ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171)) 1148- **Service:** Add error screen for services that failed to load ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171))
1044* **Service:** Add port option for proxy configuration ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60)) 1149- **Service:** Add port option for proxy configuration ([baf7d60](https://github.com/meetfranz/franz/commit/baf7d60))
1045
1046 1150
1047### Bug Fixes 1151### Bug Fixes
1048 1152
1049* **Spellchecker:** Fix issue with dictionary download ([0cdc165](https://github.com/meetfranz/franz/commit/0cdc165)) 1153- **Spellchecker:** Fix issue with dictionary download ([0cdc165](https://github.com/meetfranz/franz/commit/0cdc165))
1050 1154
1051### Improvements 1155### Improvements
1052 1156
1053* **Dark Mode:** Dark Mode polishing 1157- **Dark Mode:** Dark Mode polishing
1054* **App:** Updated a ton of dependencies 1158- **App:** Updated a ton of dependencies
1055
1056 1159
1057<a name="5.0.0-beta.20"></a> 1160<a name="5.0.0-beta.20"></a>
1058# [5.0.0-beta.20](https://github.com/meetfranz/franz/compare/v5.0.0-beta.19...v5.0.0-beta.20) (2018-12-05)
1059 1161
1162# [5.0.0-beta.20](https://github.com/meetfranz/franz/compare/v5.0.0-beta.19...v5.0.0-beta.20) (2018-12-05)
1060 1163
1061### Features 1164### Features
1062 1165
1063* **Windows:** Add taskbar action to reset Ferdi window ([08fa75a](https://github.com/meetfranz/franz/commit/08fa75a)) 1166- **Windows:** Add taskbar action to reset Ferdi window ([08fa75a](https://github.com/meetfranz/franz/commit/08fa75a))
1064* **Context Menu:** Add "Go Back" and "Go Forward" ([5c18595](https://github.com/meetfranz/franz/commit/5c18595)) 1167- **Context Menu:** Add "Go Back" and "Go Forward" ([5c18595](https://github.com/meetfranz/franz/commit/5c18595))
1065* **Context Menu:** Add Lookup, Search Google for ([5d5aa0c](https://github.com/meetfranz/franz/commit/5d5aa0c)) 1168- **Context Menu:** Add Lookup, Search Google for ([5d5aa0c](https://github.com/meetfranz/franz/commit/5d5aa0c))
1066* **App:** Add `--devtools` command line arg to automatically open Dev Tools ([84fc3a0](https://github.com/meetfranz/franz/commit/84fc3a0)) 1169- **App:** Add `--devtools` command line arg to automatically open Dev Tools ([84fc3a0](https://github.com/meetfranz/franz/commit/84fc3a0))
1067 1170
1068### Bug Fixes 1171### Bug Fixes
1069 1172
1070* **App:** Use system proxy for services ([8ddae4a](https://github.com/meetfranz/franz/commit/8ddae4a)) 1173- **App:** Use system proxy for services ([8ddae4a](https://github.com/meetfranz/franz/commit/8ddae4a))
1071* **App:** Fix service request url ([7751c17](https://github.com/meetfranz/franz/commit/7751c17)) 1174- **App:** Fix service request url ([7751c17](https://github.com/meetfranz/franz/commit/7751c17))
1072* **App:** Do not install App updates without user confirmation ([72fcaef](https://github.com/meetfranz/franz/commit/72fcaef)) 1175- **App:** Do not install App updates without user confirmation ([72fcaef](https://github.com/meetfranz/franz/commit/72fcaef))
1073* **Windows:** Fix quit app, really! ([ca1d618](https://github.com/meetfranz/franz/commit/ca1d618)) 1176- **Windows:** Fix quit app, really! ([ca1d618](https://github.com/meetfranz/franz/commit/ca1d618))
1074* **Context Menu:** Fix empty context menu item ([18040d4](https://github.com/meetfranz/franz/commit/18040d4)) 1177- **Context Menu:** Fix empty context menu item ([18040d4](https://github.com/meetfranz/franz/commit/18040d4))
1075
1076 1178
1077<a name="5.0.0-beta.19"></a> 1179<a name="5.0.0-beta.19"></a>
1180
1078# [5.0.0-beta.19](https://github.com/meetfranz/franz/compare/v5.0.0-beta.18...v5.0.0-beta.19) (2018-12-02) 1181# [5.0.0-beta.19](https://github.com/meetfranz/franz/compare/v5.0.0-beta.18...v5.0.0-beta.19) (2018-12-02)
1079 1182
1080### General 1183### General
1081 1184
1082* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1185- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
1083 1186
1084### Features 1187### Features
1085 1188
1086* **App:** 👉 Dark Mode 👈 ([fd7954f](https://github.com/meetfranz/franz/commit/fd7954f)) 🙌 [@guillecura](https://github.com/guillecura) 1189- **App:** 👉 Dark Mode 👈 ([fd7954f](https://github.com/meetfranz/franz/commit/fd7954f)) 🙌 [@guillecura](https://github.com/guillecura)
1087* **App:** Add proxy support for services ([6297274](https://github.com/meetfranz/franz/commit/6297274)) 1190- **App:** Add proxy support for services ([6297274](https://github.com/meetfranz/franz/commit/6297274))
1088* **App:** New spell checker ([3d87c0e](https://github.com/meetfranz/franz/commit/3d87c0e)) 1191- **App:** New spell checker ([3d87c0e](https://github.com/meetfranz/franz/commit/3d87c0e))
1089* **App:** New context menu ([3d87c0e](https://github.com/meetfranz/franz/commit/3d87c0e)) 1192- **App:** New context menu ([3d87c0e](https://github.com/meetfranz/franz/commit/3d87c0e))
1090* **App:** Lay groundwork for general themeing support ([4ea044a](https://github.com/meetfranz/franz/commit/4ea044a)) 1193- **App:** Lay groundwork for general themeing support ([4ea044a](https://github.com/meetfranz/franz/commit/4ea044a))
1091* **App:** Add option to enable dark mode for supported services ([fd7954f](https://github.com/meetfranz/franz/commit/fd7954f)) 1194- **App:** Add option to enable dark mode for supported services ([fd7954f](https://github.com/meetfranz/franz/commit/fd7954f))
1092 1195
1093### Bug Fixes 1196### Bug Fixes
1094 1197
1095* **App:** App menu was not initialized on app launch. Resolving copy & paste issues for login. ([72d4164](https://github.com/meetfranz/franz/commit/72d4164)) 1198- **App:** App menu was not initialized on app launch. Resolving copy & paste issues for login. ([72d4164](https://github.com/meetfranz/franz/commit/72d4164))
1096* **General:** Convert many links from http to https ([#967](https://github.com/meetfranz/franz/issues/967)) 🙌 [@Stanzilla](https://github.com/Stanzilla) ([04a23b7](https://github.com/meetfranz/franz/commit/04a23b7)) 1199- **General:** Convert many links from http to https ([#967](https://github.com/meetfranz/franz/issues/967)) 🙌 [@Stanzilla](https://github.com/Stanzilla) ([04a23b7](https://github.com/meetfranz/franz/commit/04a23b7))
1097* **Menu:** Fix File -> Quit menu entry ([#888](https://github.com/meetfranz/franz/issues/888)) 🙌 [@dabalroman](https://github.com/dabalroman) ([4115b27](https://github.com/meetfranz/franz/commit/4115b27)) 1200- **Menu:** Fix File -> Quit menu entry ([#888](https://github.com/meetfranz/franz/issues/888)) 🙌 [@dabalroman](https://github.com/dabalroman) ([4115b27](https://github.com/meetfranz/franz/commit/4115b27))
1098* **Windows:** Fix impossible Ctrl+10 Shortcut ([0db7c12](https://github.com/meetfranz/franz/commit/0db7c12)) 1201- **Windows:** Fix impossible Ctrl+10 Shortcut ([0db7c12](https://github.com/meetfranz/franz/commit/0db7c12))
1099* **Windows:** Remove minimize setting check on close event ([#1038](https://github.com/meetfranz/franz/issues/1038)) 🙌 [@imaginarny](https://github.com/imaginarny) ([af9d356](https://github.com/meetfranz/franz/commit/af9d356)) 1202- **Windows:** Remove minimize setting check on close event ([#1038](https://github.com/meetfranz/franz/issues/1038)) 🙌 [@imaginarny](https://github.com/imaginarny) ([af9d356](https://github.com/meetfranz/franz/commit/af9d356))
1100
1101 1203
1102<a name="5.0.0-beta.18"></a> 1204<a name="5.0.0-beta.18"></a>
1205
1103# [5.0.0-beta.18](https://github.com/meetfranz/franz/compare/v5.0.0-beta.16...v5.0.0-beta.18) (2018-04-03) 1206# [5.0.0-beta.18](https://github.com/meetfranz/franz/compare/v5.0.0-beta.16...v5.0.0-beta.18) (2018-04-03)
1104 1207
1105### General 1208### General
1106* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1209
1210- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
1107 1211
1108### Features 1212### Features
1109 1213
1110* **App:** Add option to enable/disable hardware acceleration ([f720d30](https://github.com/meetfranz/franz/commit/f720d30)) 1214- **App:** Add option to enable/disable hardware acceleration ([f720d30](https://github.com/meetfranz/franz/commit/f720d30))
1111 1215
1112### Bug Fixes 1216### Bug Fixes
1113 1217
1114* **Windows:** Fix shortcuts for closing, minimizing, quitting and toggling fullscreen ([f720d30](https://github.com/meetfranz/franz/commit/f720d30)) 1218- **Windows:** Fix shortcuts for closing, minimizing, quitting and toggling fullscreen ([f720d30](https://github.com/meetfranz/franz/commit/f720d30))
1115* **Windows:** Hide title bar when in fullscreen ([655a6ed](https://github.com/meetfranz/franz/commit/655a6ed)) 1219- **Windows:** Hide title bar when in fullscreen ([655a6ed](https://github.com/meetfranz/franz/commit/655a6ed))
1116
1117 1220
1118<a name="5.0.0-beta.17"></a> 1221<a name="5.0.0-beta.17"></a>
1222
1119# [5.0.0-beta.17](https://github.com/meetfranz/franz/compare/v5.0.0-beta.16...v5.0.0-beta.17) (2018-03-20) 1223# [5.0.0-beta.17](https://github.com/meetfranz/franz/compare/v5.0.0-beta.16...v5.0.0-beta.17) (2018-03-20)
1120 1224
1121### General 1225### General
1122 1226
1123* **App:** Various performance improvements 1227- **App:** Various performance improvements
1124* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1228- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
1125
1126 1229
1127### Features 1230### Features
1128 1231
1129* **Windows:** Replace window frame with custom menu bar ([9af5fd0](https://github.com/meetfranz/franz/commit/9af5fd0)) 1232- **Windows:** Replace window frame with custom menu bar ([9af5fd0](https://github.com/meetfranz/franz/commit/9af5fd0))
1130* **Electron:** Update electron to 1.8.4 ([b9c6616](https://github.com/meetfranz/franz/commit/b9c6616)) 1233- **Electron:** Update electron to 1.8.4 ([b9c6616](https://github.com/meetfranz/franz/commit/b9c6616))
1131* **Mac:** Add dock bounce when new update is available ([47885bb](https://github.com/meetfranz/franz/commit/47885bb)) 1234- **Mac:** Add dock bounce when new update is available ([47885bb](https://github.com/meetfranz/franz/commit/47885bb))
1132* **Services:** Improve performance when reordering services ([82e832c](https://github.com/meetfranz/franz/commit/82e832c)) 1235- **Services:** Improve performance when reordering services ([82e832c](https://github.com/meetfranz/franz/commit/82e832c))
1133* **Translations:** Add option to translate error messages and system menus ([82e832c](https://github.com/meetfranz/franz/commit/82e832c)) 1236- **Translations:** Add option to translate error messages and system menus ([82e832c](https://github.com/meetfranz/franz/commit/82e832c))
1134 1237
1135### Bug Fixes 1238### Bug Fixes
1136 1239
1137* **App:** Fix app reload when coming back from sleep ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447)) 1240- **App:** Fix app reload when coming back from sleep ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447))
1138* **App:** Fix issue with app not showing services when recipe has invalid version (e.g. mailbox.org) ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447)) 1241- **App:** Fix issue with app not showing services when recipe has invalid version (e.g. mailbox.org) ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447))
1139* **Linux:** Fix missing/flickering ubuntu tray icon ([592f00a](https://github.com/meetfranz/franz/commit/592f00a)) 1242- **Linux:** Fix missing/flickering ubuntu tray icon ([592f00a](https://github.com/meetfranz/franz/commit/592f00a))
1140* **Service Tabs:** Remove "delete service" context menu when not in development mode ([3a5c3f0](https://github.com/meetfranz/franz/commit/3a5c3f0)) 1243- **Service Tabs:** Remove "delete service" context menu when not in development mode ([3a5c3f0](https://github.com/meetfranz/franz/commit/3a5c3f0))
1141* **Windows:** Improve app window handling ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447)) 1244- **Windows:** Improve app window handling ([dd9f447](https://github.com/meetfranz/franz/commit/dd9f447))
1142
1143 1245
1144<a name="5.0.0-beta.16"></a> 1246<a name="5.0.0-beta.16"></a>
1247
1145# [5.0.0-beta.16](https://github.com/meetfranz/franz/compare/v5.0.0-beta.15...v5.0.0-beta.16) (2018-02-23) 1248# [5.0.0-beta.16](https://github.com/meetfranz/franz/compare/v5.0.0-beta.15...v5.0.0-beta.16) (2018-02-23)
1146 1249
1147### General 1250### General
1148* **App:** Update Electron version to 1.7.12 (fixes critical security vulnerability CVE-2018–1000006 ) ([c67d7d1](https://github.com/meetfranz/franz/commit/c67d7d1))
1149* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](https://i18n.meetfranz.com/)**
1150 1251
1151### Features 1252- **App:** Update Electron version to 1.7.12 (fixes critical security vulnerability CVE-2018–1000006 ) ([c67d7d1](https://github.com/meetfranz/franz/commit/c67d7d1))
1152* **App:** Invite Friends in Settings ([ab33c44](https://github.com/meetfranz/franz/commit/ab33c44)) 1253- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](https://i18n.meetfranz.com/)**
1153 1254
1154### Bug Fixes 1255### Features
1155 1256
1156* **App:** Fix memory leak in recipe polling loop ([c99848f](https://github.com/meetfranz/franz/commit/c99848f)) 1257- **App:** Invite Friends in Settings ([ab33c44](https://github.com/meetfranz/franz/commit/ab33c44))
1157* **App:** Fix validation for side-by-side teamId & customURL ([bd51150](https://github.com/meetfranz/franz/commit/bd51150))
1158* **App:** Reload Ferdi instead of all services one by one on sleep resume ([4e5f7af](https://github.com/meetfranz/franz/commit/4e5f7af))
1159* **App:** Fix toggle buttons shown during import ([1220e2c](https://github.com/meetfranz/franz/commit/1220e2c))
1160fix(App): Bugfix Fix memory leak in recipe polling loop
1161* **App:** Fix invite screen [object Object] values ([81c4e99](https://github.com/meetfranz/franz/commit/81c4e99))
1162* **App:** Fix Franz-wide form validation ([7618f51](https://github.com/meetfranz/franz/commit/7618f51))
1163* **App:** Fix service tooltips not initialized properly ([8765b8f](https://github.com/meetfranz/franz/commit/8765b8f))
1164* **Linux:** Invert tray icon color & add border for bright UI's ([0de9c60](https://github.com/meetfranz/franz/commit/0de9c60))
1165 1258
1259### Bug Fixes
1166 1260
1261- **App:** Fix memory leak in recipe polling loop ([c99848f](https://github.com/meetfranz/franz/commit/c99848f))
1262- **App:** Fix validation for side-by-side teamId & customURL ([bd51150](https://github.com/meetfranz/franz/commit/bd51150))
1263- **App:** Reload Ferdi instead of all services one by one on sleep resume ([4e5f7af](https://github.com/meetfranz/franz/commit/4e5f7af))
1264- **App:** Fix toggle buttons shown during import ([1220e2c](https://github.com/meetfranz/franz/commit/1220e2c))
1265 fix(App): Bugfix Fix memory leak in recipe polling loop
1266- **App:** Fix invite screen [object Object] values ([81c4e99](https://github.com/meetfranz/franz/commit/81c4e99))
1267- **App:** Fix Franz-wide form validation ([7618f51](https://github.com/meetfranz/franz/commit/7618f51))
1268- **App:** Fix service tooltips not initialized properly ([8765b8f](https://github.com/meetfranz/franz/commit/8765b8f))
1269- **Linux:** Invert tray icon color & add border for bright UI's ([0de9c60](https://github.com/meetfranz/franz/commit/0de9c60))
1167 1270
1168<a name="5.0.0-beta.15"></a> 1271<a name="5.0.0-beta.15"></a>
1272
1169# [5.0.0-beta.15](https://github.com/meetfranz/franz/compare/v5.0.0-beta.14...v5.0.0-beta.15) (2018-01-10) 1273# [5.0.0-beta.15](https://github.com/meetfranz/franz/compare/v5.0.0-beta.14...v5.0.0-beta.15) (2018-01-10)
1170 1274
1171### General 1275### General
1172 1276
1173* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** 1277- **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
1174 1278
1175### Features 1279### Features
1176 1280
1177* **App:** Add option to clear app cache ([@dannyqiu](https://github.com/dannyqiu)) ([be801ff](https://github.com/meetfranz/franz/commit/be801ff)) 1281- **App:** Add option to clear app cache ([@dannyqiu](https://github.com/dannyqiu)) ([be801ff](https://github.com/meetfranz/franz/commit/be801ff))
1178* **App:** Add option to show/hide notification badges for muted ([893a9f6](https://github.com/meetfranz/franz/commit/893a9f6)) 1282- **App:** Add option to show/hide notification badges for muted ([893a9f6](https://github.com/meetfranz/franz/commit/893a9f6))
1179* **Recipes:** Add semver version validation ([5826dc3](https://github.com/meetfranz/franz/commit/5826dc3)) 1283- **Recipes:** Add semver version validation ([5826dc3](https://github.com/meetfranz/franz/commit/5826dc3))
1180* **Recipes:** Add `hasHostedOption` to enable hosted & self hosted services ([03610f2](https://github.com/meetfranz/franz/commit/03610f2)) 1284- **Recipes:** Add `hasHostedOption` to enable hosted & self hosted services ([03610f2](https://github.com/meetfranz/franz/commit/03610f2))
1181* **Services:** Add custom service icon upload ([6b97e42](https://github.com/meetfranz/franz/commit/6b97e42)) 1285- **Services:** Add custom service icon upload ([6b97e42](https://github.com/meetfranz/franz/commit/6b97e42))
1182* **Services:** Add option to completely disable message badges ([cea7a5c](https://github.com/meetfranz/franz/commit/cea7a5c)) 1286- **Services:** Add option to completely disable message badges ([cea7a5c](https://github.com/meetfranz/franz/commit/cea7a5c))
1183* **Services:** Improve handling of external links ([e2d6edf](https://github.com/meetfranz/franz/commit/e2d6edf)) 1287- **Services:** Improve handling of external links ([e2d6edf](https://github.com/meetfranz/franz/commit/e2d6edf))
1184* **Services:** Improve user experience of service search ([7e784c6](https://github.com/meetfranz/franz/commit/7e784c6)) 1288- **Services:** Improve user experience of service search ([7e784c6](https://github.com/meetfranz/franz/commit/7e784c6))
1185* **Account:** Enable a user to delete their own account ([1f3df73](https://github.com/meetfranz/franz/commit/1f3df73)) 1289- **Account:** Enable a user to delete their own account ([1f3df73](https://github.com/meetfranz/franz/commit/1f3df73))
1186
1187
1188 1290
1189### Bug Fixes 1291### Bug Fixes
1190 1292
1191* **App:** Allow to turn on notifications when system dnd is enabled ([3045b47](https://github.com/meetfranz/franz/commit/3045b47)) 1293- **App:** Allow to turn on notifications when system dnd is enabled ([3045b47](https://github.com/meetfranz/franz/commit/3045b47))
1192* **App:** App mute now disables notifications as well ([0fa1caf](https://github.com/meetfranz/franz/commit/0fa1caf)) 1294- **App:** App mute now disables notifications as well ([0fa1caf](https://github.com/meetfranz/franz/commit/0fa1caf))
1193* **App:** Fix service reload after waking machine up ([531531e](https://github.com/meetfranz/franz/commit/531531e)) 1295- **App:** Fix service reload after waking machine up ([531531e](https://github.com/meetfranz/franz/commit/531531e))
1194* **App:** Fix "add services manually" message ([ac417dc](https://github.com/meetfranz/franz/commit/ac417dc)) 1296- **App:** Fix "add services manually" message ([ac417dc](https://github.com/meetfranz/franz/commit/ac417dc))
1195* **i18n:** Fallback to system language or english ([9733eaf](https://github.com/meetfranz/franz/commit/9733eaf)) 1297- **i18n:** Fallback to system language or english ([9733eaf](https://github.com/meetfranz/franz/commit/9733eaf))
1196* **Notification:** Remove notification sound when app is muted ([53fde0c](https://github.com/meetfranz/franz/commit/53fde0c)) 1298- **Notification:** Remove notification sound when app is muted ([53fde0c](https://github.com/meetfranz/franz/commit/53fde0c))
1197* **Recipes:** Enable `urlInputPrefix` for team and customURL ([873957d](https://github.com/meetfranz/franz/commit/873957d)) 1299- **Recipes:** Enable `urlInputPrefix` for team and customURL ([873957d](https://github.com/meetfranz/franz/commit/873957d))
1198* **Services:** Ctrl/Cmd+R now navigates back to the service root ([7293492](https://github.com/meetfranz/franz/commit/7293492)) 1300- **Services:** Ctrl/Cmd+R now navigates back to the service root ([7293492](https://github.com/meetfranz/franz/commit/7293492))
1199* **Services:** Fix transparent service background ([ed0098f](https://github.com/meetfranz/franz/commit/ed0098f)) 1301- **Services:** Fix transparent service background ([ed0098f](https://github.com/meetfranz/franz/commit/ed0098f))
1200* **Shortcuts:** Fixed settings shortcut inconsistency ([ca74846](https://github.com/meetfranz/franz/commit/ca74846)) 1302- **Shortcuts:** Fixed settings shortcut inconsistency ([ca74846](https://github.com/meetfranz/franz/commit/ca74846))
1201* **Spell checker:** Fixed issues with spell checker ([965fdf2](https://github.com/meetfranz/franz/commit/965fdf2)) 1303- **Spell checker:** Fixed issues with spell checker ([965fdf2](https://github.com/meetfranz/franz/commit/965fdf2))
1202* **Translations:** Re-add Spanish to available languages. ([ad936f2](https://github.com/meetfranz/franz/commit/ad936f2)) 1304- **Translations:** Re-add Spanish to available languages. ([ad936f2](https://github.com/meetfranz/franz/commit/ad936f2))
1203* **Windows:** Open window when clicking on toast notification ([b82bbc8](https://github.com/meetfranz/franz/commit/b82bbc8)) 1305- **Windows:** Open window when clicking on toast notification ([b82bbc8](https://github.com/meetfranz/franz/commit/b82bbc8))
1204
1205 1306
1206<a name="5.0.0-beta.14"></a> 1307<a name="5.0.0-beta.14"></a>
1207# [5.0.0-beta.14](https://github.com/meetfranz/franz/compare/v5.0.0-beta.13...v5.0.0-beta.14) (2017-11-23)
1208 1308
1309# [5.0.0-beta.14](https://github.com/meetfranz/franz/compare/v5.0.0-beta.13...v5.0.0-beta.14) (2017-11-23)
1209 1310
1210### Features 1311### Features
1211 1312
1212* **App:** Add link to changelog in app update notification ([2cbd938](https://github.com/meetfranz/franz/commit/2cbd938)) 1313- **App:** Add link to changelog in app update notification ([2cbd938](https://github.com/meetfranz/franz/commit/2cbd938))
1213* **App:** Add option to enable/disable spell checker ([dcab45a](https://github.com/meetfranz/franz/commit/dcab45a)) 1314- **App:** Add option to enable/disable spell checker ([dcab45a](https://github.com/meetfranz/franz/commit/dcab45a))
1214* **App:** Add option to mute all services in sidebar ([f5a9aa2](https://github.com/meetfranz/franz/commit/f5a9aa2)) 1315- **App:** Add option to mute all services in sidebar ([f5a9aa2](https://github.com/meetfranz/franz/commit/f5a9aa2))
1215* **App:** Decrease minimum window size to 600px width ([2521621](https://github.com/meetfranz/franz/commit/2521621)) 1316- **App:** Decrease minimum window size to 600px width ([2521621](https://github.com/meetfranz/franz/commit/2521621))
1216* **App:** Respect System DoNotDisturb mode for service audio ([7d41227](https://github.com/meetfranz/franz/commit/7d41227)) 1317- **App:** Respect System DoNotDisturb mode for service audio ([7d41227](https://github.com/meetfranz/franz/commit/7d41227))
1217* **Service:** Add option to display disabled services in tabs ([1839eff](https://github.com/meetfranz/franz/commit/1839eff)) 1318- **Service:** Add option to display disabled services in tabs ([1839eff](https://github.com/meetfranz/franz/commit/1839eff))
1218* **Service:** Add option to mute service ([b405ba1](https://github.com/meetfranz/franz/commit/b405ba1)) 1319- **Service:** Add option to mute service ([b405ba1](https://github.com/meetfranz/franz/commit/b405ba1))
1219* **Service:** Add dialog to reload crashed services ([259d40c](https://github.com/meetfranz/franz/commit/259d40c)) ([dannyqiu](https://github.com/dannyqiu)) 1320- **Service:** Add dialog to reload crashed services ([259d40c](https://github.com/meetfranz/franz/commit/259d40c)) ([dannyqiu](https://github.com/dannyqiu))
1220* **Translations:** Added new translations and improved existing ones. **[A million thanks to the amazing community.](https://i18n.meetfranz.com/)** 1321- **Translations:** Added new translations and improved existing ones. **[A million thanks to the amazing community.](https://i18n.meetfranz.com/)**
1221
1222 1322
1223### Bug Fixes 1323### Bug Fixes
1224 1324
1225* **Windows:** Fix notifications on Windows 10 (Fall Creators Update) ([eea4801](https://github.com/meetfranz/franz/commit/eea4801)) 1325- **Windows:** Fix notifications on Windows 10 (Fall Creators Update) ([eea4801](https://github.com/meetfranz/franz/commit/eea4801))
1226* **macOS:** Fix TouchBar related crash on macOS 10.12.1 and lower ([9e9a2ed](https://github.com/meetfranz/franz/commit/9e9a2ed)) 1326- **macOS:** Fix TouchBar related crash on macOS 10.12.1 and lower ([9e9a2ed](https://github.com/meetfranz/franz/commit/9e9a2ed))
1227* **App:** Add fallback to service menu when service name is empty ([42ed24d](https://github.com/meetfranz/franz/commit/42ed24d)) 1327- **App:** Add fallback to service menu when service name is empty ([42ed24d](https://github.com/meetfranz/franz/commit/42ed24d))
1228* **App:** Prevent app from redirecting when dropping link ([811a527](https://github.com/meetfranz/franz/commit/811a527)) ([dannyqiu](https://github.com/dannyqiu)) 1328- **App:** Prevent app from redirecting when dropping link ([811a527](https://github.com/meetfranz/franz/commit/811a527)) ([dannyqiu](https://github.com/dannyqiu))
1229* **Support with CPU:** Reduce maximum CPU usage ([64ad918](https://github.com/meetfranz/franz/commit/64ad918)) 1329- **Support with CPU:** Reduce maximum CPU usage ([64ad918](https://github.com/meetfranz/franz/commit/64ad918))
1230* **Hosted Services:** Do not strip www from custom service Url ([a764321](https://github.com/meetfranz/franz/commit/a764321)) ([BeneStem](https://github.com/BeneStem)) 1330- **Hosted Services:** Do not strip www from custom service Url ([a764321](https://github.com/meetfranz/franz/commit/a764321)) ([BeneStem](https://github.com/BeneStem))
1231* **Services:** Fix onNotify in service API ([b15421b](https://github.com/meetfranz/franz/commit/b15421b)) ([dannyqiu](https://github.com/dannyqiu)) 1331- **Services:** Fix onNotify in service API ([b15421b](https://github.com/meetfranz/franz/commit/b15421b)) ([dannyqiu](https://github.com/dannyqiu))
1232* **Sidebar:** Fix tabs reordering ([86413ba](https://github.com/meetfranz/franz/commit/86413ba)) ([josescgar](https://github.com/josescgar)) 1332- **Sidebar:** Fix tabs reordering ([86413ba](https://github.com/meetfranz/franz/commit/86413ba)) ([josescgar](https://github.com/josescgar))
1233
1234
1235 1333
1236<a name="5.0.0-beta.13"></a> 1334<a name="5.0.0-beta.13"></a>
1335
1237# [5.0.0-beta.13](https://github.com/meetfranz/franz/compare/v5.0.0-beta.12...v5.0.0-beta.13) (2017-11-06) 1336# [5.0.0-beta.13](https://github.com/meetfranz/franz/compare/v5.0.0-beta.12...v5.0.0-beta.13) (2017-11-06)
1238 1337
1239### Bug Fixes 1338### Bug Fixes
1240 1339
1241* **Windows:** Fix issue with multiple close handlers that prevent the app from quitting ([eea593e](https://github.com/meetfranz/franz/commit/eea593e)) 1340- **Windows:** Fix issue with multiple close handlers that prevent the app from quitting ([eea593e](https://github.com/meetfranz/franz/commit/eea593e))
1242
1243 1341
1244<a name="5.0.0-beta.12"></a> 1342<a name="5.0.0-beta.12"></a>
1343
1245# [5.0.0-beta.12](https://github.com/meetfranz/franz/compare/v5.0.0-beta.11...v5.0.0-beta.12) (2017-11-05) 1344# [5.0.0-beta.12](https://github.com/meetfranz/franz/compare/v5.0.0-beta.11...v5.0.0-beta.12) (2017-11-05)
1246 1345
1247### Features 1346### Features
1248 1347
1249* **Menu:** Add "About Ferdi" Menu item to Windows/Linux ([a21b770](https://github.com/meetfranz/franz/commit/a21b770)) 1348- **Menu:** Add "About Ferdi" Menu item to Windows/Linux ([a21b770](https://github.com/meetfranz/franz/commit/a21b770))
1250* **Menu:** Add menu item to toggle (service) dev tools ([e8da383](https://github.com/meetfranz/franz/commit/e8da383)) 1349- **Menu:** Add menu item to toggle (service) dev tools ([e8da383](https://github.com/meetfranz/franz/commit/e8da383))
1251* **Translation:** Add italian translation ([ab348cc](https://github.com/meetfranz/franz/commit/ab348cc)) ([dnlup](https://github.com/dnlup)) 1350- **Translation:** Add italian translation ([ab348cc](https://github.com/meetfranz/franz/commit/ab348cc)) ([dnlup](https://github.com/dnlup))
1252
1253 1351
1254### Bug Fixes 1352### Bug Fixes
1255 1353
1256* **App:** Add checks to service url validation to prevent app freeze ([db8515f](https://github.com/meetfranz/franz/commit/db8515f)) 1354- **App:** Add checks to service url validation to prevent app freeze ([db8515f](https://github.com/meetfranz/franz/commit/db8515f))
1257* **macOS:** Fix disable launch Ferdi on start ([34bba09](https://github.com/meetfranz/franz/commit/34bba09)) 1355- **macOS:** Fix disable launch Ferdi on start ([34bba09](https://github.com/meetfranz/franz/commit/34bba09))
1258* **Windows:** Launch Ferdi on start when selected ([34bba09](https://github.com/meetfranz/franz/commit/34bba09)) 1356- **Windows:** Launch Ferdi on start when selected ([34bba09](https://github.com/meetfranz/franz/commit/34bba09))
1259* **Onboarding:** Fix issue with import of on-premise services ([7c7d27d](https://github.com/meetfranz/franz/commit/7c7d27d)) 1357- **Onboarding:** Fix issue with import of on-premise services ([7c7d27d](https://github.com/meetfranz/franz/commit/7c7d27d))
1260* **Shortcuts:** Flip shortcut to navigate to next/previous service ([37d5923](https://github.com/meetfranz/franz/commit/37d5923)) 1358- **Shortcuts:** Flip shortcut to navigate to next/previous service ([37d5923](https://github.com/meetfranz/franz/commit/37d5923))
1261* **Windows:** Open Window when app is pinned to taskbar and minimized to system tray ([777814a](https://github.com/meetfranz/franz/commit/777814a)) 1359- **Windows:** Open Window when app is pinned to taskbar and minimized to system tray ([777814a](https://github.com/meetfranz/franz/commit/777814a))
1262* **Recipes:** Recipe developers don't need Premium Supporter Account for debugging ([7a9947a](https://github.com/meetfranz/franz/commit/7a9947a)) 1360- **Recipes:** Recipe developers don't need Premium Supporter Account for debugging ([7a9947a](https://github.com/meetfranz/franz/commit/7a9947a))
1263
1264
1265 1361
1266<a name="5.0.0-beta.11"></a> 1362<a name="5.0.0-beta.11"></a>
1363
1267# [5.0.0-beta.11](https://github.com/meetfranz/franz/compare/v5.0.0-beta.10...v5.0.0-beta.11) (2017-10-24) 1364# [5.0.0-beta.11](https://github.com/meetfranz/franz/compare/v5.0.0-beta.10...v5.0.0-beta.11) (2017-10-24)
1268 1365
1269### Features 1366### Features
1270 1367
1271* **Settings:** Add option to disable system tray icon ([c62f3fc](https://github.com/meetfranz/franz/commit/c62f3fc)) 1368- **Settings:** Add option to disable system tray icon ([c62f3fc](https://github.com/meetfranz/franz/commit/c62f3fc))
1272* **Service:** Display URL of hyperlinks ([a0cec4d](https://github.com/meetfranz/franz/commit/a0cec4d)) ([GustavoKatel](https://github.com/GustavoKatel)) 1369- **Service:** Display URL of hyperlinks ([a0cec4d](https://github.com/meetfranz/franz/commit/a0cec4d)) ([GustavoKatel](https://github.com/GustavoKatel))
1273* **App:** Add tab cycling with ctrl[+shift]+tab or ctrl+[pageup|pagedown] ([e58f558](https://github.com/meetfranz/franz/commit/ 1370- **App:** Add tab cycling with ctrl[+shift]+tab or ctrl+[pageup|pagedown] ([e58f558](https://github.com/meetfranz/franz/commit/
1274e58f558)) ([GustavoKatel](https://github.com/GustavoKatel)) 1371 e58f558)) ([GustavoKatel](https://github.com/GustavoKatel))
1275* **Translation:** Add Brazilian Portuguese ([phmigotto](https://github.com/phmigotto)) 1372- **Translation:** Add Brazilian Portuguese ([phmigotto](https://github.com/phmigotto))
1276* **Translation:** Add Dutch ([cpeetersburg](https://github.com/cpeetersburg), [Blizzke](https://github.com/Blizzke)) 1373- **Translation:** Add Dutch ([cpeetersburg](https://github.com/cpeetersburg), [Blizzke](https://github.com/Blizzke))
1277* **Translation:** Add Flemish ([Blizzke](https://github.com/Blizzke), [mroeling](https://github.com/mroeling)) 1374- **Translation:** Add Flemish ([Blizzke](https://github.com/Blizzke), [mroeling](https://github.com/mroeling))
1278* **Translation:** Add German ([rherwig](https://github.com/rherwig), [berndstelzl](https://github.com/berndstelzl)) 1375- **Translation:** Add German ([rherwig](https://github.com/rherwig), [berndstelzl](https://github.com/berndstelzl))
1279* **Translation:** Add Greek ([apo-mak](https://github.com/apo-mak)) 1376- **Translation:** Add Greek ([apo-mak](https://github.com/apo-mak))
1280* **Translation:** Add French ([Shadorc](https://github.com/Shadorc), [ShiiFu](https://github.com/ShiiFu)) 1377- **Translation:** Add French ([Shadorc](https://github.com/Shadorc), [ShiiFu](https://github.com/ShiiFu))
1281* **Translation:** Add Japanese ([koma-private](https://github.com/koma-private)) 1378- **Translation:** Add Japanese ([koma-private](https://github.com/koma-private))
1282* **Translation:** Add Polish ([grzeswol](https://github.com/grzeswol)) 1379- **Translation:** Add Polish ([grzeswol](https://github.com/grzeswol))
1283* **Translation:** Add Russian ([vaseker](https://github.com/vaseker)) 1380- **Translation:** Add Russian ([vaseker](https://github.com/vaseker))
1284* **Translation:** Add Ukrainian ([Kietzmann](https://github.com/Kietzmann)) 1381- **Translation:** Add Ukrainian ([Kietzmann](https://github.com/Kietzmann))
1285 1382
1286### Bug Fixes 1383### Bug Fixes
1287 1384
1288* **App:** Force Ferdi to use single window ([2ae409e](https://github.com/meetfranz/franz/commit/2ae409e)) 1385- **App:** Force Ferdi to use single window ([2ae409e](https://github.com/meetfranz/franz/commit/2ae409e))
1289* **Onboarding:** Fix enable/disable service import toggle ([23174f9](https://github.com/meetfranz/franz/commit/23174f9)) 1386- **Onboarding:** Fix enable/disable service import toggle ([23174f9](https://github.com/meetfranz/franz/commit/23174f9))
1290* **Onboarding:** Fix service import ([99d1c01](https://github.com/meetfranz/franz/commit/99d1c01)) 1387- **Onboarding:** Fix service import ([99d1c01](https://github.com/meetfranz/franz/commit/99d1c01))
1291* **Payment:** Fix payment window when name contains special character ([a854614](https://github.com/meetfranz/franz/commit/a854614)) 1388- **Payment:** Fix payment window when name contains special character ([a854614](https://github.com/meetfranz/franz/commit/a854614))
1292* **macOS:** Add macOS dark theme system tray icon ([55805f1](https://github.com/meetfranz/franz/commit/55805f1)) 1389- **macOS:** Add macOS dark theme system tray icon ([55805f1](https://github.com/meetfranz/franz/commit/55805f1))
1293* **Windows:** Fix enable/disable autostart on login ([eca7f3b](https://github.com/meetfranz/franz/commit/eca7f3b)) 1390- **Windows:** Fix enable/disable autostart on login ([eca7f3b](https://github.com/meetfranz/franz/commit/eca7f3b))
1294* **Windows:** Fix multiple system tray icons when opening/closing Ferdi ([5b9b0c7](https://github.com/meetfranz/franz/commit/5b9b0c7)) 1391- **Windows:** Fix multiple system tray icons when opening/closing Ferdi ([5b9b0c7](https://github.com/meetfranz/franz/commit/5b9b0c7))
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b79432d43..5c49a977c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -33,6 +33,10 @@
33 - [Javascript Coding style-checker](#javascript-coding-style-checker) 33 - [Javascript Coding style-checker](#javascript-coding-style-checker)
34 - [Packaging](#packaging) 34 - [Packaging](#packaging)
35 - [Release](#release) 35 - [Release](#release)
36 - [Update](#update)
37 - [Update the code](#update-the-code)
38 - [Update Node.js and npm](#update-nodejs-and-npm)
39 - [Update dependences](#update-dependences)
36 40
37<!-- /TOC --> 41<!-- /TOC -->
38 42
@@ -60,11 +64,13 @@ Currently, these are the combinations of system dependencies that work for MacOS
60 64
61```bash 65```bash
62node -v 66node -v
63v14.17.5 67v14.17.6
64npm -v 68npm -v
656.14.13 696.14.13
66``` 70```
67 71
72_Note:_ You can choose any package manager to manage multiple versions of `node` and `npm`. For eg, [nvm](https://github.com/nvm-sh/nvm) or [asdf](https://github.com/asdf-vm/asdf).
73
68#### Git 74#### Git
69 75
70The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure. 76The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure.
@@ -132,12 +138,12 @@ Run the following command to install all dependencies, and link sibling modules
132npx lerna bootstrap 138npx lerna bootstrap
133``` 139```
134 140
135If you previously ran `npm install`, it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. If you encounter the `gyp: No Xcode or CLT version` error on macOS at this step, please have a look [here](https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d). 141If you previously ran `npm install`, it is sometimes necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. If you encounter the `gyp: No Xcode or CLT version` error on macOS at this step, please have a look [here](https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d).
136 142
137### Fix native modules to match current electron node version 143### Fix native modules to match current electron node version
138 144
139```bash 145```bash
140npm run rebuild 146npm run build
141``` 147```
142 148
143### Package recipe repository 149### Package recipe repository
@@ -145,7 +151,7 @@ npm run rebuild
145Ferdi requires its recipes to be packaged before it can use it. When running Ferdi as a development instance, you'll need to package the local recipes before you can create any services inside Ferdi. 151Ferdi requires its recipes to be packaged before it can use it. When running Ferdi as a development instance, you'll need to package the local recipes before you can create any services inside Ferdi.
146 152
147```bash 153```bash
148cd recipes && npm i && npm run package 154cd recipes && pnpm i && pnpm run package
149``` 155```
150 156
151### Using Docker to build a linux-targetted packaged app 157### Using Docker to build a linux-targetted packaged app
@@ -235,3 +241,21 @@ git push
235``` 241```
236 242
237This will automatically trigger the build, as part of which, a new, draft release will be created [here](https://github.com/getferdi/ferdi/releases/). Once all the assets are uploaded (19 assets in total), publish the release (you will need elevated permissions in GitHub for doing this). The last commit of the `release` branch will be tagged. 243This will automatically trigger the build, as part of which, a new, draft release will be created [here](https://github.com/getferdi/ferdi/releases/). Once all the assets are uploaded (19 assets in total), publish the release (you will need elevated permissions in GitHub for doing this). The last commit of the `release` branch will be tagged.
244
245## Update
246
247### Update the code
248
249```bash
250git pull
251```
252
253### Update Node.js and npm
254
255If node.js and/or npm version have changed, don't forget to update them by running the appropriate command of your chosen package manager.
256
257### Update dependences
258
259```bash
260npx lerna bootstrap
261```
diff --git a/Dockerfile b/Dockerfile
index e69babe2b..d3589005b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,6 @@
1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture 1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture
2 2
3FROM node:14.17.5-buster as builder 3FROM docker.io/library/node:14.17.6-buster as builder
4
5# TODO: Need to setup a non-root user for security purposes
6 4
7ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share" 5ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share"
8 6
@@ -18,7 +16,8 @@ RUN apt-get update -y \
18 16
19WORKDIR /usr/src/ferdi 17WORKDIR /usr/src/ferdi
20 18
21RUN npm i -g node-gyp@8.1.0 \ 19RUN npm i -g pnpm@6.14.7 \
20 && npm i -g node-gyp@8.1.0 \
22 && npm i -g lerna@4.0.0 21 && npm i -g lerna@4.0.0
23 22
24COPY . . 23COPY . .
@@ -26,18 +25,18 @@ COPY . .
26# Note: Ideally this needs to be done before the COPY step - BUT moving this here resolves the issue with `preval-build-info-cli` not being found 25# Note: Ideally this needs to be done before the COPY step - BUT moving this here resolves the issue with `preval-build-info-cli` not being found
27RUN npx lerna bootstrap 26RUN npx lerna bootstrap
28 27
29RUN cd recipes \ 28WORKDIR /usr/src/ferdi/recipes
30 && npm i \ 29
31 && npm run package \ 30RUN pnpm i \
32 && cd .. 31 && pnpm run package
32
33WORKDIR /usr/src/ferdi
33 34
34RUN npm run build 35RUN npm run build
35 36
36# -------------------------------------------------------------------------------------------- 37# --------------------------------------------------------------------------------------------
37 38
38FROM busybox 39FROM docker.io/library/busybox:latest
39
40# TODO: Need to setup a non-root user for security purposes
41 40
42WORKDIR /ferdi 41WORKDIR /ferdi
43 42
diff --git a/README.md b/README.md
index 1824a0894..d101347d9 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
14<p align="center"> 14<p align="center">
15<img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=Downloads&logo=iCloud&logoColor=%23FFFFFF"> 15<img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=Downloads&logo=iCloud&logoColor=%23FFFFFF">
16<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> 16<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
17<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-97-default.svg?logo=github' alt='Contributors'/></a> 17<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-99-default.svg?logo=github' alt='Contributors'/></a>
18<!-- ALL-CONTRIBUTORS-BADGE:END --> 18<!-- ALL-CONTRIBUTORS-BADGE:END -->
19<a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a> 19<a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a>
20<a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a> 20<a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a>
@@ -386,6 +386,8 @@ Thanks goes to these awesome people:
386 </tr> 386 </tr>
387 <tr> 387 <tr>
388 <td align="center"><a href='https://github.com/graves501' title='graves501: doc'><img src='https://avatars.githubusercontent.com/u/11211125?v=4' alt='graves501' style='border-radius:42px;width:42px;height:42px;'/></a></td> 388 <td align="center"><a href='https://github.com/graves501' title='graves501: doc'><img src='https://avatars.githubusercontent.com/u/11211125?v=4' alt='graves501' style='border-radius:42px;width:42px;height:42px;'/></a></td>
389 <td align="center"><a href='https://www.ekino.com' title='Sadetdin EYILI: code, bug'><img src='https://avatars.githubusercontent.com/u/5607440?v=4' alt='sad270' style='border-radius:42px;width:42px;height:42px;'/></a></td>
390 <td align="center"><a href='https://github.com/Tsakatac' title='Tsakatac: bug'><img src='https://avatars.githubusercontent.com/u/89021195?v=4' alt='Tsakatac' style='border-radius:42px;width:42px;height:42px;'/></a></td>
389 </tr> 391 </tr>
390</table> 392</table>
391 393
diff --git a/docs/example-feature/index.js b/docs/example-feature/index.js
deleted file mode 100644
index 0ce068e26..000000000
--- a/docs/example-feature/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
1import { reaction, runInAction } from 'mobx';
2import { ExampleFeatureStore } from './store';
3import state, { resetState } from './state';
4import api from './api';
5
6const debug = require('debug')('Ferdi:feature:EXAMPLE_FEATURE');
7
8let store = null;
9
10export default function initAnnouncements(stores, actions) {
11 const { features } = stores;
12
13 // Toggle workspace feature
14 reaction(
15 () => (
16 features.features.isExampleFeatureEnabled
17 ),
18 (isEnabled) => {
19 if (isEnabled) {
20 debug('Initializing `EXAMPLE_FEATURE` feature');
21 store = new ExampleFeatureStore(stores, api, actions, state);
22 store.initialize();
23 runInAction(() => { state.isFeatureActive = true; });
24 } else if (store) {
25 debug('Disabling `EXAMPLE_FEATURE` feature');
26 runInAction(() => { state.isFeatureActive = false; });
27 store.teardown();
28 store = null;
29 resetState(); // Reset state to default
30 }
31 },
32 { fireImmediately: true },
33 );
34}
diff --git a/electron-builder.env b/electron-builder.env
new file mode 100644
index 000000000..b034f3fb7
--- /dev/null
+++ b/electron-builder.env
@@ -0,0 +1 @@
BUNDLING=true
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index f87958a77..21b2e3d3b 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -149,6 +149,12 @@ export function mvLernaPackages() {
149 return gulp.src(['packages/**']).pipe(gulp.dest(`${paths.dest}/packages`)); 149 return gulp.src(['packages/**']).pipe(gulp.dest(`${paths.dest}/packages`));
150} 150}
151 151
152export function mvPostinstallScript() {
153 return gulp
154 .src(['./scripts/postinstall.js'])
155 .pipe(gulp.dest(`${paths.dest}/scripts`));
156}
157
152export function exportBuildInfo() { 158export function exportBuildInfo() {
153 const buildInfoData = { 159 const buildInfoData = {
154 timestamp: buildInfo.timestamp, 160 timestamp: buildInfo.timestamp,
@@ -208,12 +214,7 @@ export function styles() {
208 214
209export function processJavascripts() { 215export function processJavascripts() {
210 return gulp 216 return gulp
211 .src( 217 .src([paths.javascripts.src], { since: gulp.lastRun(processJavascripts) })
212 [
213 paths.javascripts.src,
214 ],
215 { since: gulp.lastRun(processJavascripts) },
216 )
217 .pipe( 218 .pipe(
218 babel({ 219 babel({
219 comments: false, 220 comments: false,
@@ -226,15 +227,9 @@ export function processJavascripts() {
226 227
227export function processTypescripts() { 228export function processTypescripts() {
228 return gulp 229 return gulp
229 .src( 230 .src([paths.typescripts.src], { since: gulp.lastRun(processTypescripts) })
230 [
231 paths.typescripts.src,
232 ],
233 { since: gulp.lastRun(processTypescripts) },
234 )
235 .pipe(tsProject()) 231 .pipe(tsProject())
236 .js 232 .js.pipe(
237 .pipe(
238 babel({ 233 babel({
239 comments: false, 234 comments: false,
240 }), 235 }),
@@ -275,8 +270,21 @@ export function recipeInfo() {
275 270
276const build = gulp.series( 271const build = gulp.series(
277 clean, 272 clean,
278 gulp.parallel(mvSrc, mvPackageJson, mvLernaPackages, exportBuildInfo), 273 gulp.parallel(
279 gulp.parallel(html, processJavascripts, processTypescripts, styles, recipes, recipeInfo), 274 mvSrc,
275 mvPackageJson,
276 mvLernaPackages,
277 mvPostinstallScript,
278 exportBuildInfo,
279 ),
280 gulp.parallel(
281 html,
282 processJavascripts,
283 processTypescripts,
284 styles,
285 recipes,
286 recipeInfo,
287 ),
280); 288);
281export { build }; 289export { build };
282 290
diff --git a/package-lock.json b/package-lock.json
index 4e7b9fa7d..5151f81df 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
1{ 1{
2 "name": "ferdi", 2 "name": "ferdi",
3 "version": "5.6.1-beta.3", 3 "version": "5.6.1-nightly.56",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
@@ -10,164 +10,6 @@
10 "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", 10 "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==",
11 "dev": true 11 "dev": true
12 }, 12 },
13 "@adlk/misty": {
14 "version": "0.2.0",
15 "resolved": "https://registry.npmjs.org/@adlk/misty/-/misty-0.2.0.tgz",
16 "integrity": "sha512-ZOXsEtUBVH64z590QKFS3pyI+0OT9cNjhlKIc6ppBGiWHvL+lffhmNYva9j62xylKj8OSHEpHdqZzb3wKbRxUQ==",
17 "dev": true,
18 "requires": {
19 "chalk": "^2.4.1",
20 "chokidar": "^2.0.4",
21 "concurrently": "^4.0.1",
22 "js-yaml": "^3.12.0",
23 "lodash": "^4.17.10",
24 "minimist": "^1.2.0",
25 "wait-on": "^3.0.1"
26 },
27 "dependencies": {
28 "argparse": {
29 "version": "1.0.10",
30 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
31 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
32 "dev": true,
33 "requires": {
34 "sprintf-js": "~1.0.2"
35 }
36 },
37 "chalk": {
38 "version": "2.4.2",
39 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
40 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
41 "dev": true,
42 "requires": {
43 "ansi-styles": "^3.2.1",
44 "escape-string-regexp": "^1.0.5",
45 "supports-color": "^5.3.0"
46 }
47 },
48 "cliui": {
49 "version": "4.1.0",
50 "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
51 "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
52 "dev": true,
53 "requires": {
54 "string-width": "^2.1.1",
55 "strip-ansi": "^4.0.0",
56 "wrap-ansi": "^2.0.0"
57 }
58 },
59 "concurrently": {
60 "version": "4.1.2",
61 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.2.tgz",
62 "integrity": "sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==",
63 "dev": true,
64 "requires": {
65 "chalk": "^2.4.2",
66 "date-fns": "^1.30.1",
67 "lodash": "^4.17.15",
68 "read-pkg": "^4.0.1",
69 "rxjs": "^6.5.2",
70 "spawn-command": "^0.0.2-1",
71 "supports-color": "^4.5.0",
72 "tree-kill": "^1.2.1",
73 "yargs": "^12.0.5"
74 },
75 "dependencies": {
76 "supports-color": {
77 "version": "4.5.0",
78 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
79 "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
80 "dev": true,
81 "requires": {
82 "has-flag": "^2.0.0"
83 }
84 }
85 }
86 },
87 "date-fns": {
88 "version": "1.30.1",
89 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
90 "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
91 "dev": true
92 },
93 "has-flag": {
94 "version": "2.0.0",
95 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
96 "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
97 "dev": true
98 },
99 "js-yaml": {
100 "version": "3.14.1",
101 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
102 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
103 "dev": true,
104 "requires": {
105 "argparse": "^1.0.7",
106 "esprima": "^4.0.0"
107 }
108 },
109 "pify": {
110 "version": "3.0.0",
111 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
112 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
113 "dev": true
114 },
115 "read-pkg": {
116 "version": "4.0.1",
117 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
118 "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
119 "dev": true,
120 "requires": {
121 "normalize-package-data": "^2.3.2",
122 "parse-json": "^4.0.0",
123 "pify": "^3.0.0"
124 }
125 },
126 "wait-on": {
127 "version": "3.3.0",
128 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.3.0.tgz",
129 "integrity": "sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ==",
130 "dev": true,
131 "requires": {
132 "@hapi/joi": "^15.0.3",
133 "core-js": "^2.6.5",
134 "minimist": "^1.2.0",
135 "request": "^2.88.0",
136 "rx": "^4.1.0"
137 }
138 },
139 "yargs": {
140 "version": "12.0.5",
141 "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
142 "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
143 "dev": true,
144 "requires": {
145 "cliui": "^4.0.0",
146 "decamelize": "^1.2.0",
147 "find-up": "^3.0.0",
148 "get-caller-file": "^1.0.1",
149 "os-locale": "^3.0.0",
150 "require-directory": "^2.1.1",
151 "require-main-filename": "^1.0.1",
152 "set-blocking": "^2.0.0",
153 "string-width": "^2.0.0",
154 "which-module": "^2.0.0",
155 "y18n": "^3.2.1 || ^4.0.0",
156 "yargs-parser": "^11.1.1"
157 }
158 },
159 "yargs-parser": {
160 "version": "11.1.1",
161 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
162 "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
163 "dev": true,
164 "requires": {
165 "camelcase": "^5.0.0",
166 "decamelize": "^1.2.0"
167 }
168 }
169 }
170 },
171 "@adonisjs/ace": { 13 "@adonisjs/ace": {
172 "version": "5.0.8", 14 "version": "5.0.8",
173 "resolved": "https://registry.npmjs.org/@adonisjs/ace/-/ace-5.0.8.tgz", 15 "resolved": "https://registry.npmjs.org/@adonisjs/ace/-/ace-5.0.8.tgz",
@@ -2646,53 +2488,12 @@
2646 } 2488 }
2647 } 2489 }
2648 }, 2490 },
2649 "@hapi/address": {
2650 "version": "2.1.4",
2651 "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
2652 "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
2653 "dev": true
2654 },
2655 "@hapi/bourne": {
2656 "version": "1.3.2",
2657 "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
2658 "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
2659 "dev": true
2660 },
2661 "@hapi/hoek": { 2491 "@hapi/hoek": {
2662 "version": "9.2.0", 2492 "version": "9.2.0",
2663 "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", 2493 "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz",
2664 "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==", 2494 "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==",
2665 "dev": true 2495 "dev": true
2666 }, 2496 },
2667 "@hapi/joi": {
2668 "version": "15.1.1",
2669 "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
2670 "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
2671 "dev": true,
2672 "requires": {
2673 "@hapi/address": "2.x.x",
2674 "@hapi/bourne": "1.x.x",
2675 "@hapi/hoek": "8.x.x",
2676 "@hapi/topo": "3.x.x"
2677 },
2678 "dependencies": {
2679 "@hapi/hoek": {
2680 "version": "8.5.1",
2681 "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
2682 "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
2683 "dev": true
2684 },
2685 "@hapi/topo": {
2686 "version": "3.1.6",
2687 "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
2688 "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
2689 "dev": true,
2690 "requires": {
2691 "@hapi/hoek": "^8.3.0"
2692 }
2693 }
2694 }
2695 },
2696 "@hapi/topo": { 2497 "@hapi/topo": {
2697 "version": "5.1.0", 2498 "version": "5.1.0",
2698 "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", 2499 "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
@@ -2800,16 +2601,16 @@
2800 "dev": true 2601 "dev": true
2801 }, 2602 },
2802 "@jest/console": { 2603 "@jest/console": {
2803 "version": "27.0.6", 2604 "version": "27.1.0",
2804 "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", 2605 "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz",
2805 "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", 2606 "integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==",
2806 "dev": true, 2607 "dev": true,
2807 "requires": { 2608 "requires": {
2808 "@jest/types": "^27.0.6", 2609 "@jest/types": "^27.1.0",
2809 "@types/node": "*", 2610 "@types/node": "*",
2810 "chalk": "^4.0.0", 2611 "chalk": "^4.0.0",
2811 "jest-message-util": "^27.0.6", 2612 "jest-message-util": "^27.1.0",
2812 "jest-util": "^27.0.6", 2613 "jest-util": "^27.1.0",
2813 "slash": "^3.0.0" 2614 "slash": "^3.0.0"
2814 }, 2615 },
2815 "dependencies": { 2616 "dependencies": {
@@ -2871,35 +2672,35 @@
2871 } 2672 }
2872 }, 2673 },
2873 "@jest/core": { 2674 "@jest/core": {
2874 "version": "27.0.6", 2675 "version": "27.1.0",
2875 "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", 2676 "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz",
2876 "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", 2677 "integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==",
2877 "dev": true, 2678 "dev": true,
2878 "requires": { 2679 "requires": {
2879 "@jest/console": "^27.0.6", 2680 "@jest/console": "^27.1.0",
2880 "@jest/reporters": "^27.0.6", 2681 "@jest/reporters": "^27.1.0",
2881 "@jest/test-result": "^27.0.6", 2682 "@jest/test-result": "^27.1.0",
2882 "@jest/transform": "^27.0.6", 2683 "@jest/transform": "^27.1.0",
2883 "@jest/types": "^27.0.6", 2684 "@jest/types": "^27.1.0",
2884 "@types/node": "*", 2685 "@types/node": "*",
2885 "ansi-escapes": "^4.2.1", 2686 "ansi-escapes": "^4.2.1",
2886 "chalk": "^4.0.0", 2687 "chalk": "^4.0.0",
2887 "emittery": "^0.8.1", 2688 "emittery": "^0.8.1",
2888 "exit": "^0.1.2", 2689 "exit": "^0.1.2",
2889 "graceful-fs": "^4.2.4", 2690 "graceful-fs": "^4.2.4",
2890 "jest-changed-files": "^27.0.6", 2691 "jest-changed-files": "^27.1.0",
2891 "jest-config": "^27.0.6", 2692 "jest-config": "^27.1.0",
2892 "jest-haste-map": "^27.0.6", 2693 "jest-haste-map": "^27.1.0",
2893 "jest-message-util": "^27.0.6", 2694 "jest-message-util": "^27.1.0",
2894 "jest-regex-util": "^27.0.6", 2695 "jest-regex-util": "^27.0.6",
2895 "jest-resolve": "^27.0.6", 2696 "jest-resolve": "^27.1.0",
2896 "jest-resolve-dependencies": "^27.0.6", 2697 "jest-resolve-dependencies": "^27.1.0",
2897 "jest-runner": "^27.0.6", 2698 "jest-runner": "^27.1.0",
2898 "jest-runtime": "^27.0.6", 2699 "jest-runtime": "^27.1.0",
2899 "jest-snapshot": "^27.0.6", 2700 "jest-snapshot": "^27.1.0",
2900 "jest-util": "^27.0.6", 2701 "jest-util": "^27.1.0",
2901 "jest-validate": "^27.0.6", 2702 "jest-validate": "^27.1.0",
2902 "jest-watcher": "^27.0.6", 2703 "jest-watcher": "^27.1.0",
2903 "micromatch": "^4.0.4", 2704 "micromatch": "^4.0.4",
2904 "p-each-series": "^2.1.0", 2705 "p-each-series": "^2.1.0",
2905 "rimraf": "^3.0.0", 2706 "rimraf": "^3.0.0",
@@ -3046,53 +2847,53 @@
3046 } 2847 }
3047 }, 2848 },
3048 "@jest/environment": { 2849 "@jest/environment": {
3049 "version": "27.0.6", 2850 "version": "27.1.0",
3050 "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", 2851 "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz",
3051 "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", 2852 "integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==",
3052 "dev": true, 2853 "dev": true,
3053 "requires": { 2854 "requires": {
3054 "@jest/fake-timers": "^27.0.6", 2855 "@jest/fake-timers": "^27.1.0",
3055 "@jest/types": "^27.0.6", 2856 "@jest/types": "^27.1.0",
3056 "@types/node": "*", 2857 "@types/node": "*",
3057 "jest-mock": "^27.0.6" 2858 "jest-mock": "^27.1.0"
3058 } 2859 }
3059 }, 2860 },
3060 "@jest/fake-timers": { 2861 "@jest/fake-timers": {
3061 "version": "27.0.6", 2862 "version": "27.1.0",
3062 "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", 2863 "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz",
3063 "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", 2864 "integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==",
3064 "dev": true, 2865 "dev": true,
3065 "requires": { 2866 "requires": {
3066 "@jest/types": "^27.0.6", 2867 "@jest/types": "^27.1.0",
3067 "@sinonjs/fake-timers": "^7.0.2", 2868 "@sinonjs/fake-timers": "^7.0.2",
3068 "@types/node": "*", 2869 "@types/node": "*",
3069 "jest-message-util": "^27.0.6", 2870 "jest-message-util": "^27.1.0",
3070 "jest-mock": "^27.0.6", 2871 "jest-mock": "^27.1.0",
3071 "jest-util": "^27.0.6" 2872 "jest-util": "^27.1.0"
3072 } 2873 }
3073 }, 2874 },
3074 "@jest/globals": { 2875 "@jest/globals": {
3075 "version": "27.0.6", 2876 "version": "27.1.0",
3076 "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", 2877 "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz",
3077 "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", 2878 "integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==",
3078 "dev": true, 2879 "dev": true,
3079 "requires": { 2880 "requires": {
3080 "@jest/environment": "^27.0.6", 2881 "@jest/environment": "^27.1.0",
3081 "@jest/types": "^27.0.6", 2882 "@jest/types": "^27.1.0",
3082 "expect": "^27.0.6" 2883 "expect": "^27.1.0"
3083 } 2884 }
3084 }, 2885 },
3085 "@jest/reporters": { 2886 "@jest/reporters": {
3086 "version": "27.0.6", 2887 "version": "27.1.0",
3087 "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", 2888 "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz",
3088 "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", 2889 "integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==",
3089 "dev": true, 2890 "dev": true,
3090 "requires": { 2891 "requires": {
3091 "@bcoe/v8-coverage": "^0.2.3", 2892 "@bcoe/v8-coverage": "^0.2.3",
3092 "@jest/console": "^27.0.6", 2893 "@jest/console": "^27.1.0",
3093 "@jest/test-result": "^27.0.6", 2894 "@jest/test-result": "^27.1.0",
3094 "@jest/transform": "^27.0.6", 2895 "@jest/transform": "^27.1.0",
3095 "@jest/types": "^27.0.6", 2896 "@jest/types": "^27.1.0",
3096 "chalk": "^4.0.0", 2897 "chalk": "^4.0.0",
3097 "collect-v8-coverage": "^1.0.0", 2898 "collect-v8-coverage": "^1.0.0",
3098 "exit": "^0.1.2", 2899 "exit": "^0.1.2",
@@ -3103,10 +2904,10 @@
3103 "istanbul-lib-report": "^3.0.0", 2904 "istanbul-lib-report": "^3.0.0",
3104 "istanbul-lib-source-maps": "^4.0.0", 2905 "istanbul-lib-source-maps": "^4.0.0",
3105 "istanbul-reports": "^3.0.2", 2906 "istanbul-reports": "^3.0.2",
3106 "jest-haste-map": "^27.0.6", 2907 "jest-haste-map": "^27.1.0",
3107 "jest-resolve": "^27.0.6", 2908 "jest-resolve": "^27.1.0",
3108 "jest-util": "^27.0.6", 2909 "jest-util": "^27.1.0",
3109 "jest-worker": "^27.0.6", 2910 "jest-worker": "^27.1.0",
3110 "slash": "^3.0.0", 2911 "slash": "^3.0.0",
3111 "source-map": "^0.6.0", 2912 "source-map": "^0.6.0",
3112 "string-length": "^4.0.1", 2913 "string-length": "^4.0.1",
@@ -3217,45 +3018,45 @@
3217 } 3018 }
3218 }, 3019 },
3219 "@jest/test-result": { 3020 "@jest/test-result": {
3220 "version": "27.0.6", 3021 "version": "27.1.0",
3221 "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", 3022 "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz",
3222 "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", 3023 "integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==",
3223 "dev": true, 3024 "dev": true,
3224 "requires": { 3025 "requires": {
3225 "@jest/console": "^27.0.6", 3026 "@jest/console": "^27.1.0",
3226 "@jest/types": "^27.0.6", 3027 "@jest/types": "^27.1.0",
3227 "@types/istanbul-lib-coverage": "^2.0.0", 3028 "@types/istanbul-lib-coverage": "^2.0.0",
3228 "collect-v8-coverage": "^1.0.0" 3029 "collect-v8-coverage": "^1.0.0"
3229 } 3030 }
3230 }, 3031 },
3231 "@jest/test-sequencer": { 3032 "@jest/test-sequencer": {
3232 "version": "27.0.6", 3033 "version": "27.1.0",
3233 "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", 3034 "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz",
3234 "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", 3035 "integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==",
3235 "dev": true, 3036 "dev": true,
3236 "requires": { 3037 "requires": {
3237 "@jest/test-result": "^27.0.6", 3038 "@jest/test-result": "^27.1.0",
3238 "graceful-fs": "^4.2.4", 3039 "graceful-fs": "^4.2.4",
3239 "jest-haste-map": "^27.0.6", 3040 "jest-haste-map": "^27.1.0",
3240 "jest-runtime": "^27.0.6" 3041 "jest-runtime": "^27.1.0"
3241 } 3042 }
3242 }, 3043 },
3243 "@jest/transform": { 3044 "@jest/transform": {
3244 "version": "27.0.6", 3045 "version": "27.1.0",
3245 "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", 3046 "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz",
3246 "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", 3047 "integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==",
3247 "dev": true, 3048 "dev": true,
3248 "requires": { 3049 "requires": {
3249 "@babel/core": "^7.1.0", 3050 "@babel/core": "^7.1.0",
3250 "@jest/types": "^27.0.6", 3051 "@jest/types": "^27.1.0",
3251 "babel-plugin-istanbul": "^6.0.0", 3052 "babel-plugin-istanbul": "^6.0.0",
3252 "chalk": "^4.0.0", 3053 "chalk": "^4.0.0",
3253 "convert-source-map": "^1.4.0", 3054 "convert-source-map": "^1.4.0",
3254 "fast-json-stable-stringify": "^2.0.0", 3055 "fast-json-stable-stringify": "^2.0.0",
3255 "graceful-fs": "^4.2.4", 3056 "graceful-fs": "^4.2.4",
3256 "jest-haste-map": "^27.0.6", 3057 "jest-haste-map": "^27.1.0",
3257 "jest-regex-util": "^27.0.6", 3058 "jest-regex-util": "^27.0.6",
3258 "jest-util": "^27.0.6", 3059 "jest-util": "^27.1.0",
3259 "micromatch": "^4.0.4", 3060 "micromatch": "^4.0.4",
3260 "pirates": "^4.0.1", 3061 "pirates": "^4.0.1",
3261 "slash": "^3.0.0", 3062 "slash": "^3.0.0",
@@ -3370,9 +3171,9 @@
3370 } 3171 }
3371 }, 3172 },
3372 "@jest/types": { 3173 "@jest/types": {
3373 "version": "27.0.6", 3174 "version": "27.1.0",
3374 "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", 3175 "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz",
3375 "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", 3176 "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==",
3376 "dev": true, 3177 "dev": true,
3377 "requires": { 3178 "requires": {
3378 "@types/istanbul-lib-coverage": "^2.0.0", 3179 "@types/istanbul-lib-coverage": "^2.0.0",
@@ -5845,17 +5646,32 @@
5845 "@meetfranz/theme": { 5646 "@meetfranz/theme": {
5846 "version": "file:packages/theme", 5647 "version": "file:packages/theme",
5847 "requires": { 5648 "requires": {
5848 "color": "3.1.2" 5649 "color": "4.0.1"
5849 }, 5650 },
5850 "dependencies": { 5651 "dependencies": {
5851 "color": { 5652 "color": {
5852 "version": "3.1.2", 5653 "version": "4.0.1",
5853 "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", 5654 "resolved": "https://registry.npmjs.org/color/-/color-4.0.1.tgz",
5854 "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", 5655 "integrity": "sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA==",
5855 "requires": { 5656 "requires": {
5856 "color-convert": "^1.9.1", 5657 "color-convert": "^2.0.1",
5857 "color-string": "^1.5.2" 5658 "color-string": "^1.6.0"
5659 },
5660 "dependencies": {
5661 "color-convert": {
5662 "version": "2.0.1",
5663 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
5664 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
5665 "requires": {
5666 "color-name": "~1.1.4"
5667 }
5668 }
5858 } 5669 }
5670 },
5671 "color-name": {
5672 "version": "1.1.4",
5673 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
5674 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
5859 } 5675 }
5860 } 5676 }
5861 }, 5677 },
@@ -6377,9 +6193,9 @@
6377 } 6193 }
6378 }, 6194 },
6379 "@sentry/electron": { 6195 "@sentry/electron": {
6380 "version": "2.5.1", 6196 "version": "2.5.3",
6381 "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-2.5.1.tgz", 6197 "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-2.5.3.tgz",
6382 "integrity": "sha512-1rVE1IgGZTAy2qlLQxDsuhv7/0sT88oHYyD4f6ZTDzge3lsReeMu4xA32M4ldo4yRlRQM5gpdSS/D7Q/4huH0A==", 6198 "integrity": "sha512-WxfLd8Q9ddk38TUTscahh594MugHNBsN5/82gBhIdPwjKnd4JtuD+BAeZfz0ihe7xhP07SNSkkAszmFOIGnTcg==",
6383 "requires": { 6199 "requires": {
6384 "@sentry/browser": "6.7.1", 6200 "@sentry/browser": "6.7.1",
6385 "@sentry/core": "6.7.1", 6201 "@sentry/core": "6.7.1",
@@ -6651,9 +6467,15 @@
6651 } 6467 }
6652 }, 6468 },
6653 "@types/du": { 6469 "@types/du": {
6654 "version": "1.0.0", 6470 "version": "1.0.1",
6655 "resolved": "https://registry.npmjs.org/@types/du/-/du-1.0.0.tgz", 6471 "resolved": "https://registry.npmjs.org/@types/du/-/du-1.0.1.tgz",
6656 "integrity": "sha512-gyG+2sBzYwIcwaj2zyRZ75qOwvhFeD6XytT16jBTyqiS9nH9tYy39Ln1oRcECxBfDCJmUmOEyjQoTHJeMFM91w==", 6472 "integrity": "sha512-vwNP+pzkI1ipznek2fCA4xj1kQyL9EJcfdBezD9eToe9eP2IgT3WLEBrVqiXal34LOyiAs8xCQKwugEYOKcMkw==",
6473 "dev": true
6474 },
6475 "@types/expect.js": {
6476 "version": "0.3.29",
6477 "resolved": "https://registry.npmjs.org/@types/expect.js/-/expect.js-0.3.29.tgz",
6478 "integrity": "sha1-KN01kVW4S47LCUr8P0t0wyItyjs=",
6657 "dev": true 6479 "dev": true
6658 }, 6480 },
6659 "@types/fs-extra": { 6481 "@types/fs-extra": {
@@ -6720,6 +6542,12 @@
6720 "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", 6542 "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
6721 "dev": true 6543 "dev": true
6722 }, 6544 },
6545 "@types/json5": {
6546 "version": "0.0.29",
6547 "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
6548 "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
6549 "dev": true
6550 },
6723 "@types/lodash": { 6551 "@types/lodash": {
6724 "version": "4.14.172", 6552 "version": "4.14.172",
6725 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.172.tgz", 6553 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.172.tgz",
@@ -6747,6 +6575,12 @@
6747 "@types/node": "*" 6575 "@types/node": "*"
6748 } 6576 }
6749 }, 6577 },
6578 "@types/mocha": {
6579 "version": "9.0.0",
6580 "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz",
6581 "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==",
6582 "dev": true
6583 },
6750 "@types/ms": { 6584 "@types/ms": {
6751 "version": "0.7.31", 6585 "version": "0.7.31",
6752 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", 6586 "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
@@ -6961,13 +6795,13 @@
6961 "dev": true 6795 "dev": true
6962 }, 6796 },
6963 "@typescript-eslint/eslint-plugin": { 6797 "@typescript-eslint/eslint-plugin": {
6964 "version": "4.29.1", 6798 "version": "4.30.0",
6965 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.1.tgz", 6799 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.30.0.tgz",
6966 "integrity": "sha512-AHqIU+SqZZgBEiWOrtN94ldR3ZUABV5dUG94j8Nms9rQnHFc8fvDOue/58K4CFz6r8OtDDc35Pw9NQPWo0Ayrw==", 6800 "integrity": "sha512-NgAnqk55RQ/SD+tZFD9aPwNSeHmDHHe5rtUyhIq0ZeCWZEvo4DK9rYz7v9HDuQZFvn320Ot+AikaCKMFKLlD0g==",
6967 "dev": true, 6801 "dev": true,
6968 "requires": { 6802 "requires": {
6969 "@typescript-eslint/experimental-utils": "4.29.1", 6803 "@typescript-eslint/experimental-utils": "4.30.0",
6970 "@typescript-eslint/scope-manager": "4.29.1", 6804 "@typescript-eslint/scope-manager": "4.30.0",
6971 "debug": "^4.3.1", 6805 "debug": "^4.3.1",
6972 "functional-red-black-tree": "^1.0.1", 6806 "functional-red-black-tree": "^1.0.1",
6973 "regexpp": "^3.1.0", 6807 "regexpp": "^3.1.0",
@@ -6976,43 +6810,43 @@
6976 }, 6810 },
6977 "dependencies": { 6811 "dependencies": {
6978 "@typescript-eslint/experimental-utils": { 6812 "@typescript-eslint/experimental-utils": {
6979 "version": "4.29.1", 6813 "version": "4.30.0",
6980 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.1.tgz", 6814 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.30.0.tgz",
6981 "integrity": "sha512-kl6QG6qpzZthfd2bzPNSJB2YcZpNOrP6r9jueXupcZHnL74WiuSjaft7WSu17J9+ae9zTlk0KJMXPUj0daBxMw==", 6815 "integrity": "sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw==",
6982 "dev": true, 6816 "dev": true,
6983 "requires": { 6817 "requires": {
6984 "@types/json-schema": "^7.0.7", 6818 "@types/json-schema": "^7.0.7",
6985 "@typescript-eslint/scope-manager": "4.29.1", 6819 "@typescript-eslint/scope-manager": "4.30.0",
6986 "@typescript-eslint/types": "4.29.1", 6820 "@typescript-eslint/types": "4.30.0",
6987 "@typescript-eslint/typescript-estree": "4.29.1", 6821 "@typescript-eslint/typescript-estree": "4.30.0",
6988 "eslint-scope": "^5.1.1", 6822 "eslint-scope": "^5.1.1",
6989 "eslint-utils": "^3.0.0" 6823 "eslint-utils": "^3.0.0"
6990 } 6824 }
6991 }, 6825 },
6992 "@typescript-eslint/scope-manager": { 6826 "@typescript-eslint/scope-manager": {
6993 "version": "4.29.1", 6827 "version": "4.30.0",
6994 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz", 6828 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz",
6995 "integrity": "sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A==", 6829 "integrity": "sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A==",
6996 "dev": true, 6830 "dev": true,
6997 "requires": { 6831 "requires": {
6998 "@typescript-eslint/types": "4.29.1", 6832 "@typescript-eslint/types": "4.30.0",
6999 "@typescript-eslint/visitor-keys": "4.29.1" 6833 "@typescript-eslint/visitor-keys": "4.30.0"
7000 } 6834 }
7001 }, 6835 },
7002 "@typescript-eslint/types": { 6836 "@typescript-eslint/types": {
7003 "version": "4.29.1", 6837 "version": "4.30.0",
7004 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.1.tgz", 6838 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.30.0.tgz",
7005 "integrity": "sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==", 6839 "integrity": "sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw==",
7006 "dev": true 6840 "dev": true
7007 }, 6841 },
7008 "@typescript-eslint/typescript-estree": { 6842 "@typescript-eslint/typescript-estree": {
7009 "version": "4.29.1", 6843 "version": "4.30.0",
7010 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz", 6844 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz",
7011 "integrity": "sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw==", 6845 "integrity": "sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg==",
7012 "dev": true, 6846 "dev": true,
7013 "requires": { 6847 "requires": {
7014 "@typescript-eslint/types": "4.29.1", 6848 "@typescript-eslint/types": "4.30.0",
7015 "@typescript-eslint/visitor-keys": "4.29.1", 6849 "@typescript-eslint/visitor-keys": "4.30.0",
7016 "debug": "^4.3.1", 6850 "debug": "^4.3.1",
7017 "globby": "^11.0.3", 6851 "globby": "^11.0.3",
7018 "is-glob": "^4.0.1", 6852 "is-glob": "^4.0.1",
@@ -7021,12 +6855,12 @@
7021 } 6855 }
7022 }, 6856 },
7023 "@typescript-eslint/visitor-keys": { 6857 "@typescript-eslint/visitor-keys": {
7024 "version": "4.29.1", 6858 "version": "4.30.0",
7025 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz", 6859 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz",
7026 "integrity": "sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==", 6860 "integrity": "sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw==",
7027 "dev": true, 6861 "dev": true,
7028 "requires": { 6862 "requires": {
7029 "@typescript-eslint/types": "4.29.1", 6863 "@typescript-eslint/types": "4.30.0",
7030 "eslint-visitor-keys": "^2.0.0" 6864 "eslint-visitor-keys": "^2.0.0"
7031 } 6865 }
7032 }, 6866 },
@@ -8628,13 +8462,13 @@
8628 "dev": true 8462 "dev": true
8629 }, 8463 },
8630 "babel-jest": { 8464 "babel-jest": {
8631 "version": "27.0.6", 8465 "version": "27.1.0",
8632 "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", 8466 "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz",
8633 "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", 8467 "integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==",
8634 "dev": true, 8468 "dev": true,
8635 "requires": { 8469 "requires": {
8636 "@jest/transform": "^27.0.6", 8470 "@jest/transform": "^27.1.0",
8637 "@jest/types": "^27.0.6", 8471 "@jest/types": "^27.1.0",
8638 "@types/babel__core": "^7.1.14", 8472 "@types/babel__core": "^7.1.14",
8639 "babel-plugin-istanbul": "^6.0.0", 8473 "babel-plugin-istanbul": "^6.0.0",
8640 "babel-preset-jest": "^27.0.6", 8474 "babel-preset-jest": "^27.0.6",
@@ -9864,9 +9698,9 @@
9864 } 9698 }
9865 }, 9699 },
9866 "caniuse-lite": { 9700 "caniuse-lite": {
9867 "version": "1.0.30001252", 9701 "version": "1.0.30001256",
9868 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz", 9702 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001256.tgz",
9869 "integrity": "sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw==", 9703 "integrity": "sha512-QirrvMLmB4txNnxiaG/xbm6FSzv9LqOZ3Jp9VtCYb3oPIfCHpr/oGn38pFq0udwlkctvXQgPthaXqJ76DaYGnA==",
9870 "dev": true 9704 "dev": true
9871 }, 9705 },
9872 "caseless": { 9706 "caseless": {
@@ -12842,9 +12676,9 @@
12842 } 12676 }
12843 }, 12677 },
12844 "electron-fetch": { 12678 "electron-fetch": {
12845 "version": "1.7.3", 12679 "version": "1.7.4",
12846 "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.3.tgz", 12680 "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz",
12847 "integrity": "sha512-1AVMaxrHXTTMqd7EK0MGWusdqNr07Rpj8Th6bG4at0oNgIi/1LBwa9CjT/0Zy+M0k/tSJPS04nFxHj0SXDVgVw==", 12681 "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==",
12848 "requires": { 12682 "requires": {
12849 "encoding": "^0.1.13" 12683 "encoding": "^0.1.13"
12850 } 12684 }
@@ -13053,9 +12887,9 @@
13053 } 12887 }
13054 }, 12888 },
13055 "electron-util": { 12889 "electron-util": {
13056 "version": "0.17.0", 12890 "version": "0.17.2",
13057 "resolved": "https://registry.npmjs.org/electron-util/-/electron-util-0.17.0.tgz", 12891 "resolved": "https://registry.npmjs.org/electron-util/-/electron-util-0.17.2.tgz",
13058 "integrity": "sha512-61+NEPdIN68EBC9XDPNAKs14HlPdc7HsL6lfQ+QTiya+3BMzayBqUsvN1LrT7IoGpPuuZns+iaCKf1N78dEF+w==", 12892 "integrity": "sha512-4Kg/aZxJ2BZklgyfH86px/D2GyROPyIcnAZar+7KiNmKI2I5l09pwQTP7V95zM3FVhgDQwV9iuJta5dyEvuWAw==",
13059 "requires": { 12893 "requires": {
13060 "electron-is-dev": "^1.1.0", 12894 "electron-is-dev": "^1.1.0",
13061 "new-github-issue-url": "^0.2.1" 12895 "new-github-issue-url": "^0.2.1"
@@ -13737,9 +13571,9 @@
13737 "dev": true 13571 "dev": true
13738 }, 13572 },
13739 "eslint-import-resolver-node": { 13573 "eslint-import-resolver-node": {
13740 "version": "0.3.5", 13574 "version": "0.3.6",
13741 "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz", 13575 "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
13742 "integrity": "sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==", 13576 "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
13743 "dev": true, 13577 "dev": true,
13744 "requires": { 13578 "requires": {
13745 "debug": "^3.2.7", 13579 "debug": "^3.2.7",
@@ -13837,26 +13671,26 @@
13837 } 13671 }
13838 }, 13672 },
13839 "eslint-plugin-import": { 13673 "eslint-plugin-import": {
13840 "version": "2.24.0", 13674 "version": "2.24.2",
13841 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz", 13675 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz",
13842 "integrity": "sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==", 13676 "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==",
13843 "dev": true, 13677 "dev": true,
13844 "requires": { 13678 "requires": {
13845 "array-includes": "^3.1.3", 13679 "array-includes": "^3.1.3",
13846 "array.prototype.flat": "^1.2.4", 13680 "array.prototype.flat": "^1.2.4",
13847 "debug": "^2.6.9", 13681 "debug": "^2.6.9",
13848 "doctrine": "^2.1.0", 13682 "doctrine": "^2.1.0",
13849 "eslint-import-resolver-node": "^0.3.5", 13683 "eslint-import-resolver-node": "^0.3.6",
13850 "eslint-module-utils": "^2.6.2", 13684 "eslint-module-utils": "^2.6.2",
13851 "find-up": "^2.0.0", 13685 "find-up": "^2.0.0",
13852 "has": "^1.0.3", 13686 "has": "^1.0.3",
13853 "is-core-module": "^2.4.0", 13687 "is-core-module": "^2.6.0",
13854 "minimatch": "^3.0.4", 13688 "minimatch": "^3.0.4",
13855 "object.values": "^1.1.3", 13689 "object.values": "^1.1.4",
13856 "pkg-up": "^2.0.0", 13690 "pkg-up": "^2.0.0",
13857 "read-pkg-up": "^3.0.0", 13691 "read-pkg-up": "^3.0.0",
13858 "resolve": "^1.20.0", 13692 "resolve": "^1.20.0",
13859 "tsconfig-paths": "^3.9.0" 13693 "tsconfig-paths": "^3.11.0"
13860 }, 13694 },
13861 "dependencies": { 13695 "dependencies": {
13862 "debug": { 13696 "debug": {
@@ -13886,6 +13720,15 @@
13886 "locate-path": "^2.0.0" 13720 "locate-path": "^2.0.0"
13887 } 13721 }
13888 }, 13722 },
13723 "is-core-module": {
13724 "version": "2.6.0",
13725 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
13726 "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
13727 "dev": true,
13728 "requires": {
13729 "has": "^1.0.3"
13730 }
13731 },
13889 "locate-path": { 13732 "locate-path": {
13890 "version": "2.0.0", 13733 "version": "2.0.0",
13891 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 13734 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
@@ -14016,14 +13859,15 @@
14016 } 13859 }
14017 }, 13860 },
14018 "eslint-plugin-react": { 13861 "eslint-plugin-react": {
14019 "version": "7.24.0", 13862 "version": "7.25.1",
14020 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", 13863 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz",
14021 "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", 13864 "integrity": "sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==",
14022 "dev": true, 13865 "dev": true,
14023 "requires": { 13866 "requires": {
14024 "array-includes": "^3.1.3", 13867 "array-includes": "^3.1.3",
14025 "array.prototype.flatmap": "^1.2.4", 13868 "array.prototype.flatmap": "^1.2.4",
14026 "doctrine": "^2.1.0", 13869 "doctrine": "^2.1.0",
13870 "estraverse": "^5.2.0",
14027 "has": "^1.0.3", 13871 "has": "^1.0.3",
14028 "jsx-ast-utils": "^2.4.1 || ^3.0.0", 13872 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
14029 "minimatch": "^3.0.4", 13873 "minimatch": "^3.0.4",
@@ -14044,16 +13888,11 @@
14044 "esutils": "^2.0.2" 13888 "esutils": "^2.0.2"
14045 } 13889 }
14046 }, 13890 },
14047 "prop-types": { 13891 "estraverse": {
14048 "version": "15.7.2", 13892 "version": "5.2.0",
14049 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 13893 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
14050 "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 13894 "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
14051 "dev": true, 13895 "dev": true
14052 "requires": {
14053 "loose-envify": "^1.4.0",
14054 "object-assign": "^4.1.1",
14055 "react-is": "^16.8.1"
14056 }
14057 }, 13896 },
14058 "resolve": { 13897 "resolve": {
14059 "version": "2.0.0-next.3", 13898 "version": "2.0.0-next.3",
@@ -14393,16 +14232,16 @@
14393 } 14232 }
14394 }, 14233 },
14395 "expect": { 14234 "expect": {
14396 "version": "27.0.6", 14235 "version": "27.1.0",
14397 "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", 14236 "resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz",
14398 "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", 14237 "integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==",
14399 "dev": true, 14238 "dev": true,
14400 "requires": { 14239 "requires": {
14401 "@jest/types": "^27.0.6", 14240 "@jest/types": "^27.1.0",
14402 "ansi-styles": "^5.0.0", 14241 "ansi-styles": "^5.0.0",
14403 "jest-get-type": "^27.0.6", 14242 "jest-get-type": "^27.0.6",
14404 "jest-matcher-utils": "^27.0.6", 14243 "jest-matcher-utils": "^27.1.0",
14405 "jest-message-util": "^27.0.6", 14244 "jest-message-util": "^27.1.0",
14406 "jest-regex-util": "^27.0.6" 14245 "jest-regex-util": "^27.0.6"
14407 }, 14246 },
14408 "dependencies": { 14247 "dependencies": {
@@ -16971,9 +16810,9 @@
16971 } 16810 }
16972 }, 16811 },
16973 "husky": { 16812 "husky": {
16974 "version": "7.0.1", 16813 "version": "7.0.2",
16975 "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.1.tgz", 16814 "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz",
16976 "integrity": "sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA==", 16815 "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==",
16977 "dev": true 16816 "dev": true
16978 }, 16817 },
16979 "hyphenate-style-name": { 16818 "hyphenate-style-name": {
@@ -17409,12 +17248,6 @@
17409 "loose-envify": "^1.0.0" 17248 "loose-envify": "^1.0.0"
17410 } 17249 }
17411 }, 17250 },
17412 "invert-kv": {
17413 "version": "2.0.0",
17414 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
17415 "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
17416 "dev": true
17417 },
17418 "ip": { 17251 "ip": {
17419 "version": "1.1.5", 17252 "version": "1.1.5",
17420 "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", 17253 "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -18002,22 +17835,16 @@
18002 } 17835 }
18003 }, 17836 },
18004 "jest": { 17837 "jest": {
18005 "version": "27.0.6", 17838 "version": "27.1.0",
18006 "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", 17839 "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz",
18007 "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", 17840 "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==",
18008 "dev": true, 17841 "dev": true,
18009 "requires": { 17842 "requires": {
18010 "@jest/core": "^27.0.6", 17843 "@jest/core": "^27.1.0",
18011 "import-local": "^3.0.2", 17844 "import-local": "^3.0.2",
18012 "jest-cli": "^27.0.6" 17845 "jest-cli": "^27.1.0"
18013 }, 17846 },
18014 "dependencies": { 17847 "dependencies": {
18015 "ansi-regex": {
18016 "version": "5.0.0",
18017 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
18018 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
18019 "dev": true
18020 },
18021 "ansi-styles": { 17848 "ansi-styles": {
18022 "version": "4.3.0", 17849 "version": "4.3.0",
18023 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 17850 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -18037,17 +17864,6 @@
18037 "supports-color": "^7.1.0" 17864 "supports-color": "^7.1.0"
18038 } 17865 }
18039 }, 17866 },
18040 "cliui": {
18041 "version": "7.0.4",
18042 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
18043 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
18044 "dev": true,
18045 "requires": {
18046 "string-width": "^4.2.0",
18047 "strip-ansi": "^6.0.0",
18048 "wrap-ansi": "^7.0.0"
18049 }
18050 },
18051 "color-convert": { 17867 "color-convert": {
18052 "version": "2.0.1", 17868 "version": "2.0.1",
18053 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 17869 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -18063,64 +17879,32 @@
18063 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 17879 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
18064 "dev": true 17880 "dev": true
18065 }, 17881 },
18066 "get-caller-file": {
18067 "version": "2.0.5",
18068 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
18069 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
18070 "dev": true
18071 },
18072 "has-flag": { 17882 "has-flag": {
18073 "version": "4.0.0", 17883 "version": "4.0.0",
18074 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 17884 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
18075 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 17885 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
18076 "dev": true 17886 "dev": true
18077 }, 17887 },
18078 "is-fullwidth-code-point": {
18079 "version": "3.0.0",
18080 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
18081 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
18082 "dev": true
18083 },
18084 "jest-cli": { 17888 "jest-cli": {
18085 "version": "27.0.6", 17889 "version": "27.1.0",
18086 "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", 17890 "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz",
18087 "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", 17891 "integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==",
18088 "dev": true, 17892 "dev": true,
18089 "requires": { 17893 "requires": {
18090 "@jest/core": "^27.0.6", 17894 "@jest/core": "^27.1.0",
18091 "@jest/test-result": "^27.0.6", 17895 "@jest/test-result": "^27.1.0",
18092 "@jest/types": "^27.0.6", 17896 "@jest/types": "^27.1.0",
18093 "chalk": "^4.0.0", 17897 "chalk": "^4.0.0",
18094 "exit": "^0.1.2", 17898 "exit": "^0.1.2",
18095 "graceful-fs": "^4.2.4", 17899 "graceful-fs": "^4.2.4",
18096 "import-local": "^3.0.2", 17900 "import-local": "^3.0.2",
18097 "jest-config": "^27.0.6", 17901 "jest-config": "^27.1.0",
18098 "jest-util": "^27.0.6", 17902 "jest-util": "^27.1.0",
18099 "jest-validate": "^27.0.6", 17903 "jest-validate": "^27.1.0",
18100 "prompts": "^2.0.1", 17904 "prompts": "^2.0.1",
18101 "yargs": "^16.0.3" 17905 "yargs": "^16.0.3"
18102 } 17906 }
18103 }, 17907 },
18104 "string-width": {
18105 "version": "4.2.2",
18106 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
18107 "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
18108 "dev": true,
18109 "requires": {
18110 "emoji-regex": "^8.0.0",
18111 "is-fullwidth-code-point": "^3.0.0",
18112 "strip-ansi": "^6.0.0"
18113 }
18114 },
18115 "strip-ansi": {
18116 "version": "6.0.0",
18117 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
18118 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
18119 "dev": true,
18120 "requires": {
18121 "ansi-regex": "^5.0.0"
18122 }
18123 },
18124 "supports-color": { 17908 "supports-color": {
18125 "version": "7.2.0", 17909 "version": "7.2.0",
18126 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 17910 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -18129,54 +17913,16 @@
18129 "requires": { 17913 "requires": {
18130 "has-flag": "^4.0.0" 17914 "has-flag": "^4.0.0"
18131 } 17915 }
18132 },
18133 "wrap-ansi": {
18134 "version": "7.0.0",
18135 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
18136 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
18137 "dev": true,
18138 "requires": {
18139 "ansi-styles": "^4.0.0",
18140 "string-width": "^4.1.0",
18141 "strip-ansi": "^6.0.0"
18142 }
18143 },
18144 "y18n": {
18145 "version": "5.0.8",
18146 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
18147 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
18148 "dev": true
18149 },
18150 "yargs": {
18151 "version": "16.2.0",
18152 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
18153 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
18154 "dev": true,
18155 "requires": {
18156 "cliui": "^7.0.2",
18157 "escalade": "^3.1.1",
18158 "get-caller-file": "^2.0.5",
18159 "require-directory": "^2.1.1",
18160 "string-width": "^4.2.0",
18161 "y18n": "^5.0.5",
18162 "yargs-parser": "^20.2.2"
18163 }
18164 },
18165 "yargs-parser": {
18166 "version": "20.2.9",
18167 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
18168 "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
18169 "dev": true
18170 } 17916 }
18171 } 17917 }
18172 }, 17918 },
18173 "jest-changed-files": { 17919 "jest-changed-files": {
18174 "version": "27.0.6", 17920 "version": "27.1.0",
18175 "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", 17921 "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz",
18176 "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", 17922 "integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==",
18177 "dev": true, 17923 "dev": true,
18178 "requires": { 17924 "requires": {
18179 "@jest/types": "^27.0.6", 17925 "@jest/types": "^27.1.0",
18180 "execa": "^5.0.0", 17926 "execa": "^5.0.0",
18181 "throat": "^6.0.1" 17927 "throat": "^6.0.1"
18182 }, 17928 },
@@ -18254,27 +18000,27 @@
18254 } 18000 }
18255 }, 18001 },
18256 "jest-circus": { 18002 "jest-circus": {
18257 "version": "27.0.6", 18003 "version": "27.1.0",
18258 "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", 18004 "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz",
18259 "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", 18005 "integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==",
18260 "dev": true, 18006 "dev": true,
18261 "requires": { 18007 "requires": {
18262 "@jest/environment": "^27.0.6", 18008 "@jest/environment": "^27.1.0",
18263 "@jest/test-result": "^27.0.6", 18009 "@jest/test-result": "^27.1.0",
18264 "@jest/types": "^27.0.6", 18010 "@jest/types": "^27.1.0",
18265 "@types/node": "*", 18011 "@types/node": "*",
18266 "chalk": "^4.0.0", 18012 "chalk": "^4.0.0",
18267 "co": "^4.6.0", 18013 "co": "^4.6.0",
18268 "dedent": "^0.7.0", 18014 "dedent": "^0.7.0",
18269 "expect": "^27.0.6", 18015 "expect": "^27.1.0",
18270 "is-generator-fn": "^2.0.0", 18016 "is-generator-fn": "^2.0.0",
18271 "jest-each": "^27.0.6", 18017 "jest-each": "^27.1.0",
18272 "jest-matcher-utils": "^27.0.6", 18018 "jest-matcher-utils": "^27.1.0",
18273 "jest-message-util": "^27.0.6", 18019 "jest-message-util": "^27.1.0",
18274 "jest-runtime": "^27.0.6", 18020 "jest-runtime": "^27.1.0",
18275 "jest-snapshot": "^27.0.6", 18021 "jest-snapshot": "^27.1.0",
18276 "jest-util": "^27.0.6", 18022 "jest-util": "^27.1.0",
18277 "pretty-format": "^27.0.6", 18023 "pretty-format": "^27.1.0",
18278 "slash": "^3.0.0", 18024 "slash": "^3.0.0",
18279 "stack-utils": "^2.0.3", 18025 "stack-utils": "^2.0.3",
18280 "throat": "^6.0.1" 18026 "throat": "^6.0.1"
@@ -18338,32 +18084,32 @@
18338 } 18084 }
18339 }, 18085 },
18340 "jest-config": { 18086 "jest-config": {
18341 "version": "27.0.6", 18087 "version": "27.1.0",
18342 "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", 18088 "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz",
18343 "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", 18089 "integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==",
18344 "dev": true, 18090 "dev": true,
18345 "requires": { 18091 "requires": {
18346 "@babel/core": "^7.1.0", 18092 "@babel/core": "^7.1.0",
18347 "@jest/test-sequencer": "^27.0.6", 18093 "@jest/test-sequencer": "^27.1.0",
18348 "@jest/types": "^27.0.6", 18094 "@jest/types": "^27.1.0",
18349 "babel-jest": "^27.0.6", 18095 "babel-jest": "^27.1.0",
18350 "chalk": "^4.0.0", 18096 "chalk": "^4.0.0",
18351 "deepmerge": "^4.2.2", 18097 "deepmerge": "^4.2.2",
18352 "glob": "^7.1.1", 18098 "glob": "^7.1.1",
18353 "graceful-fs": "^4.2.4", 18099 "graceful-fs": "^4.2.4",
18354 "is-ci": "^3.0.0", 18100 "is-ci": "^3.0.0",
18355 "jest-circus": "^27.0.6", 18101 "jest-circus": "^27.1.0",
18356 "jest-environment-jsdom": "^27.0.6", 18102 "jest-environment-jsdom": "^27.1.0",
18357 "jest-environment-node": "^27.0.6", 18103 "jest-environment-node": "^27.1.0",
18358 "jest-get-type": "^27.0.6", 18104 "jest-get-type": "^27.0.6",
18359 "jest-jasmine2": "^27.0.6", 18105 "jest-jasmine2": "^27.1.0",
18360 "jest-regex-util": "^27.0.6", 18106 "jest-regex-util": "^27.0.6",
18361 "jest-resolve": "^27.0.6", 18107 "jest-resolve": "^27.1.0",
18362 "jest-runner": "^27.0.6", 18108 "jest-runner": "^27.1.0",
18363 "jest-util": "^27.0.6", 18109 "jest-util": "^27.1.0",
18364 "jest-validate": "^27.0.6", 18110 "jest-validate": "^27.1.0",
18365 "micromatch": "^4.0.4", 18111 "micromatch": "^4.0.4",
18366 "pretty-format": "^27.0.6" 18112 "pretty-format": "^27.1.0"
18367 }, 18113 },
18368 "dependencies": { 18114 "dependencies": {
18369 "ansi-styles": { 18115 "ansi-styles": {
@@ -18475,15 +18221,15 @@
18475 } 18221 }
18476 }, 18222 },
18477 "jest-diff": { 18223 "jest-diff": {
18478 "version": "27.0.6", 18224 "version": "27.1.0",
18479 "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", 18225 "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz",
18480 "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", 18226 "integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==",
18481 "dev": true, 18227 "dev": true,
18482 "requires": { 18228 "requires": {
18483 "chalk": "^4.0.0", 18229 "chalk": "^4.0.0",
18484 "diff-sequences": "^27.0.6", 18230 "diff-sequences": "^27.0.6",
18485 "jest-get-type": "^27.0.6", 18231 "jest-get-type": "^27.0.6",
18486 "pretty-format": "^27.0.6" 18232 "pretty-format": "^27.1.0"
18487 }, 18233 },
18488 "dependencies": { 18234 "dependencies": {
18489 "ansi-styles": { 18235 "ansi-styles": {
@@ -18547,16 +18293,16 @@
18547 } 18293 }
18548 }, 18294 },
18549 "jest-each": { 18295 "jest-each": {
18550 "version": "27.0.6", 18296 "version": "27.1.0",
18551 "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", 18297 "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz",
18552 "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", 18298 "integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==",
18553 "dev": true, 18299 "dev": true,
18554 "requires": { 18300 "requires": {
18555 "@jest/types": "^27.0.6", 18301 "@jest/types": "^27.1.0",
18556 "chalk": "^4.0.0", 18302 "chalk": "^4.0.0",
18557 "jest-get-type": "^27.0.6", 18303 "jest-get-type": "^27.0.6",
18558 "jest-util": "^27.0.6", 18304 "jest-util": "^27.1.0",
18559 "pretty-format": "^27.0.6" 18305 "pretty-format": "^27.1.0"
18560 }, 18306 },
18561 "dependencies": { 18307 "dependencies": {
18562 "ansi-styles": { 18308 "ansi-styles": {
@@ -18611,32 +18357,32 @@
18611 } 18357 }
18612 }, 18358 },
18613 "jest-environment-jsdom": { 18359 "jest-environment-jsdom": {
18614 "version": "27.0.6", 18360 "version": "27.1.0",
18615 "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", 18361 "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz",
18616 "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", 18362 "integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==",
18617 "dev": true, 18363 "dev": true,
18618 "requires": { 18364 "requires": {
18619 "@jest/environment": "^27.0.6", 18365 "@jest/environment": "^27.1.0",
18620 "@jest/fake-timers": "^27.0.6", 18366 "@jest/fake-timers": "^27.1.0",
18621 "@jest/types": "^27.0.6", 18367 "@jest/types": "^27.1.0",
18622 "@types/node": "*", 18368 "@types/node": "*",
18623 "jest-mock": "^27.0.6", 18369 "jest-mock": "^27.1.0",
18624 "jest-util": "^27.0.6", 18370 "jest-util": "^27.1.0",
18625 "jsdom": "^16.6.0" 18371 "jsdom": "^16.6.0"
18626 } 18372 }
18627 }, 18373 },
18628 "jest-environment-node": { 18374 "jest-environment-node": {
18629 "version": "27.0.6", 18375 "version": "27.1.0",
18630 "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", 18376 "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz",
18631 "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", 18377 "integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==",
18632 "dev": true, 18378 "dev": true,
18633 "requires": { 18379 "requires": {
18634 "@jest/environment": "^27.0.6", 18380 "@jest/environment": "^27.1.0",
18635 "@jest/fake-timers": "^27.0.6", 18381 "@jest/fake-timers": "^27.1.0",
18636 "@jest/types": "^27.0.6", 18382 "@jest/types": "^27.1.0",
18637 "@types/node": "*", 18383 "@types/node": "*",
18638 "jest-mock": "^27.0.6", 18384 "jest-mock": "^27.1.0",
18639 "jest-util": "^27.0.6" 18385 "jest-util": "^27.1.0"
18640 } 18386 }
18641 }, 18387 },
18642 "jest-get-type": { 18388 "jest-get-type": {
@@ -18646,12 +18392,12 @@
18646 "dev": true 18392 "dev": true
18647 }, 18393 },
18648 "jest-haste-map": { 18394 "jest-haste-map": {
18649 "version": "27.0.6", 18395 "version": "27.1.0",
18650 "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", 18396 "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz",
18651 "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", 18397 "integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==",
18652 "dev": true, 18398 "dev": true,
18653 "requires": { 18399 "requires": {
18654 "@jest/types": "^27.0.6", 18400 "@jest/types": "^27.1.0",
18655 "@types/graceful-fs": "^4.1.2", 18401 "@types/graceful-fs": "^4.1.2",
18656 "@types/node": "*", 18402 "@types/node": "*",
18657 "anymatch": "^3.0.3", 18403 "anymatch": "^3.0.3",
@@ -18660,8 +18406,8 @@
18660 "graceful-fs": "^4.2.4", 18406 "graceful-fs": "^4.2.4",
18661 "jest-regex-util": "^27.0.6", 18407 "jest-regex-util": "^27.0.6",
18662 "jest-serializer": "^27.0.6", 18408 "jest-serializer": "^27.0.6",
18663 "jest-util": "^27.0.6", 18409 "jest-util": "^27.1.0",
18664 "jest-worker": "^27.0.6", 18410 "jest-worker": "^27.1.0",
18665 "micromatch": "^4.0.4", 18411 "micromatch": "^4.0.4",
18666 "walker": "^1.0.7" 18412 "walker": "^1.0.7"
18667 }, 18413 },
@@ -18729,28 +18475,28 @@
18729 } 18475 }
18730 }, 18476 },
18731 "jest-jasmine2": { 18477 "jest-jasmine2": {
18732 "version": "27.0.6", 18478 "version": "27.1.0",
18733 "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", 18479 "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz",
18734 "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", 18480 "integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==",
18735 "dev": true, 18481 "dev": true,
18736 "requires": { 18482 "requires": {
18737 "@babel/traverse": "^7.1.0", 18483 "@babel/traverse": "^7.1.0",
18738 "@jest/environment": "^27.0.6", 18484 "@jest/environment": "^27.1.0",
18739 "@jest/source-map": "^27.0.6", 18485 "@jest/source-map": "^27.0.6",
18740 "@jest/test-result": "^27.0.6", 18486 "@jest/test-result": "^27.1.0",
18741 "@jest/types": "^27.0.6", 18487 "@jest/types": "^27.1.0",
18742 "@types/node": "*", 18488 "@types/node": "*",
18743 "chalk": "^4.0.0", 18489 "chalk": "^4.0.0",
18744 "co": "^4.6.0", 18490 "co": "^4.6.0",
18745 "expect": "^27.0.6", 18491 "expect": "^27.1.0",
18746 "is-generator-fn": "^2.0.0", 18492 "is-generator-fn": "^2.0.0",
18747 "jest-each": "^27.0.6", 18493 "jest-each": "^27.1.0",
18748 "jest-matcher-utils": "^27.0.6", 18494 "jest-matcher-utils": "^27.1.0",
18749 "jest-message-util": "^27.0.6", 18495 "jest-message-util": "^27.1.0",
18750 "jest-runtime": "^27.0.6", 18496 "jest-runtime": "^27.1.0",
18751 "jest-snapshot": "^27.0.6", 18497 "jest-snapshot": "^27.1.0",
18752 "jest-util": "^27.0.6", 18498 "jest-util": "^27.1.0",
18753 "pretty-format": "^27.0.6", 18499 "pretty-format": "^27.1.0",
18754 "throat": "^6.0.1" 18500 "throat": "^6.0.1"
18755 }, 18501 },
18756 "dependencies": { 18502 "dependencies": {
@@ -18806,25 +18552,25 @@
18806 } 18552 }
18807 }, 18553 },
18808 "jest-leak-detector": { 18554 "jest-leak-detector": {
18809 "version": "27.0.6", 18555 "version": "27.1.0",
18810 "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", 18556 "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz",
18811 "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", 18557 "integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==",
18812 "dev": true, 18558 "dev": true,
18813 "requires": { 18559 "requires": {
18814 "jest-get-type": "^27.0.6", 18560 "jest-get-type": "^27.0.6",
18815 "pretty-format": "^27.0.6" 18561 "pretty-format": "^27.1.0"
18816 } 18562 }
18817 }, 18563 },
18818 "jest-matcher-utils": { 18564 "jest-matcher-utils": {
18819 "version": "27.0.6", 18565 "version": "27.1.0",
18820 "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", 18566 "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz",
18821 "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", 18567 "integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==",
18822 "dev": true, 18568 "dev": true,
18823 "requires": { 18569 "requires": {
18824 "chalk": "^4.0.0", 18570 "chalk": "^4.0.0",
18825 "jest-diff": "^27.0.6", 18571 "jest-diff": "^27.1.0",
18826 "jest-get-type": "^27.0.6", 18572 "jest-get-type": "^27.0.6",
18827 "pretty-format": "^27.0.6" 18573 "pretty-format": "^27.1.0"
18828 }, 18574 },
18829 "dependencies": { 18575 "dependencies": {
18830 "ansi-styles": { 18576 "ansi-styles": {
@@ -18879,18 +18625,18 @@
18879 } 18625 }
18880 }, 18626 },
18881 "jest-message-util": { 18627 "jest-message-util": {
18882 "version": "27.0.6", 18628 "version": "27.1.0",
18883 "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", 18629 "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz",
18884 "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", 18630 "integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==",
18885 "dev": true, 18631 "dev": true,
18886 "requires": { 18632 "requires": {
18887 "@babel/code-frame": "^7.12.13", 18633 "@babel/code-frame": "^7.12.13",
18888 "@jest/types": "^27.0.6", 18634 "@jest/types": "^27.1.0",
18889 "@types/stack-utils": "^2.0.0", 18635 "@types/stack-utils": "^2.0.0",
18890 "chalk": "^4.0.0", 18636 "chalk": "^4.0.0",
18891 "graceful-fs": "^4.2.4", 18637 "graceful-fs": "^4.2.4",
18892 "micromatch": "^4.0.4", 18638 "micromatch": "^4.0.4",
18893 "pretty-format": "^27.0.6", 18639 "pretty-format": "^27.1.0",
18894 "slash": "^3.0.0", 18640 "slash": "^3.0.0",
18895 "stack-utils": "^2.0.3" 18641 "stack-utils": "^2.0.3"
18896 }, 18642 },
@@ -18996,12 +18742,12 @@
18996 } 18742 }
18997 }, 18743 },
18998 "jest-mock": { 18744 "jest-mock": {
18999 "version": "27.0.6", 18745 "version": "27.1.0",
19000 "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", 18746 "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz",
19001 "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", 18747 "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==",
19002 "dev": true, 18748 "dev": true,
19003 "requires": { 18749 "requires": {
19004 "@jest/types": "^27.0.6", 18750 "@jest/types": "^27.1.0",
19005 "@types/node": "*" 18751 "@types/node": "*"
19006 } 18752 }
19007 }, 18753 },
@@ -19018,18 +18764,19 @@
19018 "dev": true 18764 "dev": true
19019 }, 18765 },
19020 "jest-resolve": { 18766 "jest-resolve": {
19021 "version": "27.0.6", 18767 "version": "27.1.0",
19022 "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", 18768 "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz",
19023 "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", 18769 "integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==",
19024 "dev": true, 18770 "dev": true,
19025 "requires": { 18771 "requires": {
19026 "@jest/types": "^27.0.6", 18772 "@jest/types": "^27.1.0",
19027 "chalk": "^4.0.0", 18773 "chalk": "^4.0.0",
19028 "escalade": "^3.1.1", 18774 "escalade": "^3.1.1",
19029 "graceful-fs": "^4.2.4", 18775 "graceful-fs": "^4.2.4",
18776 "jest-haste-map": "^27.1.0",
19030 "jest-pnp-resolver": "^1.2.2", 18777 "jest-pnp-resolver": "^1.2.2",
19031 "jest-util": "^27.0.6", 18778 "jest-util": "^27.1.0",
19032 "jest-validate": "^27.0.6", 18779 "jest-validate": "^27.1.0",
19033 "resolve": "^1.20.0", 18780 "resolve": "^1.20.0",
19034 "slash": "^3.0.0" 18781 "slash": "^3.0.0"
19035 }, 18782 },
@@ -19092,42 +18839,42 @@
19092 } 18839 }
19093 }, 18840 },
19094 "jest-resolve-dependencies": { 18841 "jest-resolve-dependencies": {
19095 "version": "27.0.6", 18842 "version": "27.1.0",
19096 "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", 18843 "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz",
19097 "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", 18844 "integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==",
19098 "dev": true, 18845 "dev": true,
19099 "requires": { 18846 "requires": {
19100 "@jest/types": "^27.0.6", 18847 "@jest/types": "^27.1.0",
19101 "jest-regex-util": "^27.0.6", 18848 "jest-regex-util": "^27.0.6",
19102 "jest-snapshot": "^27.0.6" 18849 "jest-snapshot": "^27.1.0"
19103 } 18850 }
19104 }, 18851 },
19105 "jest-runner": { 18852 "jest-runner": {
19106 "version": "27.0.6", 18853 "version": "27.1.0",
19107 "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", 18854 "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz",
19108 "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", 18855 "integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==",
19109 "dev": true, 18856 "dev": true,
19110 "requires": { 18857 "requires": {
19111 "@jest/console": "^27.0.6", 18858 "@jest/console": "^27.1.0",
19112 "@jest/environment": "^27.0.6", 18859 "@jest/environment": "^27.1.0",
19113 "@jest/test-result": "^27.0.6", 18860 "@jest/test-result": "^27.1.0",
19114 "@jest/transform": "^27.0.6", 18861 "@jest/transform": "^27.1.0",
19115 "@jest/types": "^27.0.6", 18862 "@jest/types": "^27.1.0",
19116 "@types/node": "*", 18863 "@types/node": "*",
19117 "chalk": "^4.0.0", 18864 "chalk": "^4.0.0",
19118 "emittery": "^0.8.1", 18865 "emittery": "^0.8.1",
19119 "exit": "^0.1.2", 18866 "exit": "^0.1.2",
19120 "graceful-fs": "^4.2.4", 18867 "graceful-fs": "^4.2.4",
19121 "jest-docblock": "^27.0.6", 18868 "jest-docblock": "^27.0.6",
19122 "jest-environment-jsdom": "^27.0.6", 18869 "jest-environment-jsdom": "^27.1.0",
19123 "jest-environment-node": "^27.0.6", 18870 "jest-environment-node": "^27.1.0",
19124 "jest-haste-map": "^27.0.6", 18871 "jest-haste-map": "^27.1.0",
19125 "jest-leak-detector": "^27.0.6", 18872 "jest-leak-detector": "^27.1.0",
19126 "jest-message-util": "^27.0.6", 18873 "jest-message-util": "^27.1.0",
19127 "jest-resolve": "^27.0.6", 18874 "jest-resolve": "^27.1.0",
19128 "jest-runtime": "^27.0.6", 18875 "jest-runtime": "^27.1.0",
19129 "jest-util": "^27.0.6", 18876 "jest-util": "^27.1.0",
19130 "jest-worker": "^27.0.6", 18877 "jest-worker": "^27.1.0",
19131 "source-map-support": "^0.5.6", 18878 "source-map-support": "^0.5.6",
19132 "throat": "^6.0.1" 18879 "throat": "^6.0.1"
19133 }, 18880 },
@@ -19184,34 +18931,35 @@
19184 } 18931 }
19185 }, 18932 },
19186 "jest-runtime": { 18933 "jest-runtime": {
19187 "version": "27.0.6", 18934 "version": "27.1.0",
19188 "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", 18935 "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz",
19189 "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", 18936 "integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==",
19190 "dev": true, 18937 "dev": true,
19191 "requires": { 18938 "requires": {
19192 "@jest/console": "^27.0.6", 18939 "@jest/console": "^27.1.0",
19193 "@jest/environment": "^27.0.6", 18940 "@jest/environment": "^27.1.0",
19194 "@jest/fake-timers": "^27.0.6", 18941 "@jest/fake-timers": "^27.1.0",
19195 "@jest/globals": "^27.0.6", 18942 "@jest/globals": "^27.1.0",
19196 "@jest/source-map": "^27.0.6", 18943 "@jest/source-map": "^27.0.6",
19197 "@jest/test-result": "^27.0.6", 18944 "@jest/test-result": "^27.1.0",
19198 "@jest/transform": "^27.0.6", 18945 "@jest/transform": "^27.1.0",
19199 "@jest/types": "^27.0.6", 18946 "@jest/types": "^27.1.0",
19200 "@types/yargs": "^16.0.0", 18947 "@types/yargs": "^16.0.0",
19201 "chalk": "^4.0.0", 18948 "chalk": "^4.0.0",
19202 "cjs-module-lexer": "^1.0.0", 18949 "cjs-module-lexer": "^1.0.0",
19203 "collect-v8-coverage": "^1.0.0", 18950 "collect-v8-coverage": "^1.0.0",
18951 "execa": "^5.0.0",
19204 "exit": "^0.1.2", 18952 "exit": "^0.1.2",
19205 "glob": "^7.1.3", 18953 "glob": "^7.1.3",
19206 "graceful-fs": "^4.2.4", 18954 "graceful-fs": "^4.2.4",
19207 "jest-haste-map": "^27.0.6", 18955 "jest-haste-map": "^27.1.0",
19208 "jest-message-util": "^27.0.6", 18956 "jest-message-util": "^27.1.0",
19209 "jest-mock": "^27.0.6", 18957 "jest-mock": "^27.1.0",
19210 "jest-regex-util": "^27.0.6", 18958 "jest-regex-util": "^27.0.6",
19211 "jest-resolve": "^27.0.6", 18959 "jest-resolve": "^27.1.0",
19212 "jest-snapshot": "^27.0.6", 18960 "jest-snapshot": "^27.1.0",
19213 "jest-util": "^27.0.6", 18961 "jest-util": "^27.1.0",
19214 "jest-validate": "^27.0.6", 18962 "jest-validate": "^27.1.0",
19215 "slash": "^3.0.0", 18963 "slash": "^3.0.0",
19216 "strip-bom": "^4.0.0", 18964 "strip-bom": "^4.0.0",
19217 "yargs": "^16.0.3" 18965 "yargs": "^16.0.3"
@@ -19226,12 +18974,6 @@
19226 "@types/yargs-parser": "*" 18974 "@types/yargs-parser": "*"
19227 } 18975 }
19228 }, 18976 },
19229 "ansi-regex": {
19230 "version": "5.0.0",
19231 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
19232 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
19233 "dev": true
19234 },
19235 "ansi-styles": { 18977 "ansi-styles": {
19236 "version": "4.3.0", 18978 "version": "4.3.0",
19237 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 18979 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -19251,17 +18993,6 @@
19251 "supports-color": "^7.1.0" 18993 "supports-color": "^7.1.0"
19252 } 18994 }
19253 }, 18995 },
19254 "cliui": {
19255 "version": "7.0.4",
19256 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
19257 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
19258 "dev": true,
19259 "requires": {
19260 "string-width": "^4.2.0",
19261 "strip-ansi": "^6.0.0",
19262 "wrap-ansi": "^7.0.0"
19263 }
19264 },
19265 "color-convert": { 18996 "color-convert": {
19266 "version": "2.0.1", 18997 "version": "2.0.1",
19267 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 18998 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -19277,10 +19008,38 @@
19277 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 19008 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
19278 "dev": true 19009 "dev": true
19279 }, 19010 },
19280 "get-caller-file": { 19011 "cross-spawn": {
19281 "version": "2.0.5", 19012 "version": "7.0.3",
19282 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 19013 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
19283 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 19014 "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
19015 "dev": true,
19016 "requires": {
19017 "path-key": "^3.1.0",
19018 "shebang-command": "^2.0.0",
19019 "which": "^2.0.1"
19020 }
19021 },
19022 "execa": {
19023 "version": "5.1.1",
19024 "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
19025 "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
19026 "dev": true,
19027 "requires": {
19028 "cross-spawn": "^7.0.3",
19029 "get-stream": "^6.0.0",
19030 "human-signals": "^2.1.0",
19031 "is-stream": "^2.0.0",
19032 "merge-stream": "^2.0.0",
19033 "npm-run-path": "^4.0.1",
19034 "onetime": "^5.1.2",
19035 "signal-exit": "^3.0.3",
19036 "strip-final-newline": "^2.0.0"
19037 }
19038 },
19039 "get-stream": {
19040 "version": "6.0.1",
19041 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
19042 "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
19284 "dev": true 19043 "dev": true
19285 }, 19044 },
19286 "glob": { 19045 "glob": {
@@ -19303,37 +19062,38 @@
19303 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 19062 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
19304 "dev": true 19063 "dev": true
19305 }, 19064 },
19306 "is-fullwidth-code-point": { 19065 "human-signals": {
19307 "version": "3.0.0", 19066 "version": "2.1.0",
19308 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 19067 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
19309 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 19068 "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
19310 "dev": true 19069 "dev": true
19311 }, 19070 },
19312 "slash": { 19071 "path-key": {
19313 "version": "3.0.0", 19072 "version": "3.1.1",
19314 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 19073 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
19315 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 19074 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
19316 "dev": true 19075 "dev": true
19317 }, 19076 },
19318 "string-width": { 19077 "shebang-command": {
19319 "version": "4.2.2", 19078 "version": "2.0.0",
19320 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 19079 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
19321 "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 19080 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
19322 "dev": true, 19081 "dev": true,
19323 "requires": { 19082 "requires": {
19324 "emoji-regex": "^8.0.0", 19083 "shebang-regex": "^3.0.0"
19325 "is-fullwidth-code-point": "^3.0.0",
19326 "strip-ansi": "^6.0.0"
19327 } 19084 }
19328 }, 19085 },
19329 "strip-ansi": { 19086 "shebang-regex": {
19330 "version": "6.0.0", 19087 "version": "3.0.0",
19331 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 19088 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
19332 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 19089 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
19333 "dev": true, 19090 "dev": true
19334 "requires": { 19091 },
19335 "ansi-regex": "^5.0.0" 19092 "slash": {
19336 } 19093 "version": "3.0.0",
19094 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
19095 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
19096 "dev": true
19337 }, 19097 },
19338 "supports-color": { 19098 "supports-color": {
19339 "version": "7.2.0", 19099 "version": "7.2.0",
@@ -19344,43 +19104,14 @@
19344 "has-flag": "^4.0.0" 19104 "has-flag": "^4.0.0"
19345 } 19105 }
19346 }, 19106 },
19347 "wrap-ansi": { 19107 "which": {
19348 "version": "7.0.0", 19108 "version": "2.0.2",
19349 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 19109 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
19350 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 19110 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
19351 "dev": true,
19352 "requires": {
19353 "ansi-styles": "^4.0.0",
19354 "string-width": "^4.1.0",
19355 "strip-ansi": "^6.0.0"
19356 }
19357 },
19358 "y18n": {
19359 "version": "5.0.8",
19360 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
19361 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
19362 "dev": true
19363 },
19364 "yargs": {
19365 "version": "16.2.0",
19366 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
19367 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
19368 "dev": true, 19111 "dev": true,
19369 "requires": { 19112 "requires": {
19370 "cliui": "^7.0.2", 19113 "isexe": "^2.0.0"
19371 "escalade": "^3.1.1",
19372 "get-caller-file": "^2.0.5",
19373 "require-directory": "^2.1.1",
19374 "string-width": "^4.2.0",
19375 "y18n": "^5.0.5",
19376 "yargs-parser": "^20.2.2"
19377 } 19114 }
19378 },
19379 "yargs-parser": {
19380 "version": "20.2.9",
19381 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
19382 "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
19383 "dev": true
19384 } 19115 }
19385 } 19116 }
19386 }, 19117 },
@@ -19395,9 +19126,9 @@
19395 } 19126 }
19396 }, 19127 },
19397 "jest-snapshot": { 19128 "jest-snapshot": {
19398 "version": "27.0.6", 19129 "version": "27.1.0",
19399 "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", 19130 "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz",
19400 "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", 19131 "integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==",
19401 "dev": true, 19132 "dev": true,
19402 "requires": { 19133 "requires": {
19403 "@babel/core": "^7.7.2", 19134 "@babel/core": "^7.7.2",
@@ -19406,23 +19137,23 @@
19406 "@babel/plugin-syntax-typescript": "^7.7.2", 19137 "@babel/plugin-syntax-typescript": "^7.7.2",
19407 "@babel/traverse": "^7.7.2", 19138 "@babel/traverse": "^7.7.2",
19408 "@babel/types": "^7.0.0", 19139 "@babel/types": "^7.0.0",
19409 "@jest/transform": "^27.0.6", 19140 "@jest/transform": "^27.1.0",
19410 "@jest/types": "^27.0.6", 19141 "@jest/types": "^27.1.0",
19411 "@types/babel__traverse": "^7.0.4", 19142 "@types/babel__traverse": "^7.0.4",
19412 "@types/prettier": "^2.1.5", 19143 "@types/prettier": "^2.1.5",
19413 "babel-preset-current-node-syntax": "^1.0.0", 19144 "babel-preset-current-node-syntax": "^1.0.0",
19414 "chalk": "^4.0.0", 19145 "chalk": "^4.0.0",
19415 "expect": "^27.0.6", 19146 "expect": "^27.1.0",
19416 "graceful-fs": "^4.2.4", 19147 "graceful-fs": "^4.2.4",
19417 "jest-diff": "^27.0.6", 19148 "jest-diff": "^27.1.0",
19418 "jest-get-type": "^27.0.6", 19149 "jest-get-type": "^27.0.6",
19419 "jest-haste-map": "^27.0.6", 19150 "jest-haste-map": "^27.1.0",
19420 "jest-matcher-utils": "^27.0.6", 19151 "jest-matcher-utils": "^27.1.0",
19421 "jest-message-util": "^27.0.6", 19152 "jest-message-util": "^27.1.0",
19422 "jest-resolve": "^27.0.6", 19153 "jest-resolve": "^27.1.0",
19423 "jest-util": "^27.0.6", 19154 "jest-util": "^27.1.0",
19424 "natural-compare": "^1.4.0", 19155 "natural-compare": "^1.4.0",
19425 "pretty-format": "^27.0.6", 19156 "pretty-format": "^27.1.0",
19426 "semver": "^7.3.2" 19157 "semver": "^7.3.2"
19427 }, 19158 },
19428 "dependencies": { 19159 "dependencies": {
@@ -19478,12 +19209,12 @@
19478 } 19209 }
19479 }, 19210 },
19480 "jest-util": { 19211 "jest-util": {
19481 "version": "27.0.6", 19212 "version": "27.1.0",
19482 "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", 19213 "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz",
19483 "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", 19214 "integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==",
19484 "dev": true, 19215 "dev": true,
19485 "requires": { 19216 "requires": {
19486 "@jest/types": "^27.0.6", 19217 "@jest/types": "^27.1.0",
19487 "@types/node": "*", 19218 "@types/node": "*",
19488 "chalk": "^4.0.0", 19219 "chalk": "^4.0.0",
19489 "graceful-fs": "^4.2.4", 19220 "graceful-fs": "^4.2.4",
@@ -19543,17 +19274,17 @@
19543 } 19274 }
19544 }, 19275 },
19545 "jest-validate": { 19276 "jest-validate": {
19546 "version": "27.0.6", 19277 "version": "27.1.0",
19547 "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", 19278 "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz",
19548 "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", 19279 "integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==",
19549 "dev": true, 19280 "dev": true,
19550 "requires": { 19281 "requires": {
19551 "@jest/types": "^27.0.6", 19282 "@jest/types": "^27.1.0",
19552 "camelcase": "^6.2.0", 19283 "camelcase": "^6.2.0",
19553 "chalk": "^4.0.0", 19284 "chalk": "^4.0.0",
19554 "jest-get-type": "^27.0.6", 19285 "jest-get-type": "^27.0.6",
19555 "leven": "^3.1.0", 19286 "leven": "^3.1.0",
19556 "pretty-format": "^27.0.6" 19287 "pretty-format": "^27.1.0"
19557 }, 19288 },
19558 "dependencies": { 19289 "dependencies": {
19559 "ansi-styles": { 19290 "ansi-styles": {
@@ -19614,17 +19345,17 @@
19614 } 19345 }
19615 }, 19346 },
19616 "jest-watcher": { 19347 "jest-watcher": {
19617 "version": "27.0.6", 19348 "version": "27.1.0",
19618 "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", 19349 "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz",
19619 "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", 19350 "integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==",
19620 "dev": true, 19351 "dev": true,
19621 "requires": { 19352 "requires": {
19622 "@jest/test-result": "^27.0.6", 19353 "@jest/test-result": "^27.1.0",
19623 "@jest/types": "^27.0.6", 19354 "@jest/types": "^27.1.0",
19624 "@types/node": "*", 19355 "@types/node": "*",
19625 "ansi-escapes": "^4.2.1", 19356 "ansi-escapes": "^4.2.1",
19626 "chalk": "^4.0.0", 19357 "chalk": "^4.0.0",
19627 "jest-util": "^27.0.6", 19358 "jest-util": "^27.1.0",
19628 "string-length": "^4.0.1" 19359 "string-length": "^4.0.1"
19629 }, 19360 },
19630 "dependencies": { 19361 "dependencies": {
@@ -19680,9 +19411,9 @@
19680 } 19411 }
19681 }, 19412 },
19682 "jest-worker": { 19413 "jest-worker": {
19683 "version": "27.0.6", 19414 "version": "27.1.0",
19684 "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", 19415 "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz",
19685 "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", 19416 "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==",
19686 "dev": true, 19417 "dev": true,
19687 "requires": { 19418 "requires": {
19688 "@types/node": "*", 19419 "@types/node": "*",
@@ -20294,15 +20025,6 @@
20294 } 20025 }
20295 } 20026 }
20296 }, 20027 },
20297 "lcid": {
20298 "version": "2.0.0",
20299 "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
20300 "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
20301 "dev": true,
20302 "requires": {
20303 "invert-kv": "^2.0.0"
20304 }
20305 },
20306 "lead": { 20028 "lead": {
20307 "version": "1.0.0", 20029 "version": "1.0.0",
20308 "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", 20030 "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
@@ -20810,9 +20532,9 @@
20810 "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" 20532 "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0="
20811 }, 20533 },
20812 "macos-notification-state": { 20534 "macos-notification-state": {
20813 "version": "1.3.5", 20535 "version": "1.3.6",
20814 "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.5.tgz", 20536 "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.6.tgz",
20815 "integrity": "sha512-uTfue/exD5AtZnJHgjvaHCi0/MQOWigcTjKGmRmRSJz+SGdXZMM2TVAI/js8SnLILUzoA3FW1wveaPZne9x/Tg==", 20537 "integrity": "sha512-/iL0Mepra7laWWxCWvXWQea+D8j7o73iazcgap5gYd/Lbx29JY0nfH3dYVNzWQT/AKvoB0I55fdTY/fd5JiTPg==",
20816 "requires": { 20538 "requires": {
20817 "bindings": "^1.5.0" 20539 "bindings": "^1.5.0"
20818 } 20540 }
@@ -20959,15 +20681,6 @@
20959 "tmpl": "1.0.x" 20681 "tmpl": "1.0.x"
20960 } 20682 }
20961 }, 20683 },
20962 "map-age-cleaner": {
20963 "version": "0.1.3",
20964 "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
20965 "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
20966 "dev": true,
20967 "requires": {
20968 "p-defer": "^1.0.0"
20969 }
20970 },
20971 "map-async": { 20684 "map-async": {
20972 "version": "0.1.1", 20685 "version": "0.1.1",
20973 "resolved": "https://registry.npmjs.org/map-async/-/map-async-0.1.1.tgz", 20686 "resolved": "https://registry.npmjs.org/map-async/-/map-async-0.1.1.tgz",
@@ -21055,17 +20768,6 @@
21055 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 20768 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
21056 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 20769 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
21057 }, 20770 },
21058 "mem": {
21059 "version": "4.3.0",
21060 "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
21061 "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
21062 "dev": true,
21063 "requires": {
21064 "map-age-cleaner": "^0.1.1",
21065 "mimic-fn": "^2.0.0",
21066 "p-is-promise": "^2.0.0"
21067 }
21068 },
21069 "memory-fs": { 20771 "memory-fs": {
21070 "version": "0.5.0", 20772 "version": "0.5.0",
21071 "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 20773 "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
@@ -21698,9 +21400,9 @@
21698 "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw=" 21400 "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw="
21699 }, 21401 },
21700 "mocha": { 21402 "mocha": {
21701 "version": "9.0.3", 21403 "version": "9.1.1",
21702 "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.3.tgz", 21404 "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.1.tgz",
21703 "integrity": "sha512-hnYFrSefHxYS2XFGtN01x8un0EwNu2bzKvhpRFhgoybIvMaOkkL60IVPmkb5h6XDmUl4IMSB+rT5cIO4/4bJgg==", 21405 "integrity": "sha512-0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA==",
21704 "dev": true, 21406 "dev": true,
21705 "requires": { 21407 "requires": {
21706 "@ungap/promise-all-settled": "1.1.2", 21408 "@ungap/promise-all-settled": "1.1.2",
@@ -21736,21 +21438,6 @@
21736 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 21438 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
21737 "dev": true 21439 "dev": true
21738 }, 21440 },
21739 "ansi-regex": {
21740 "version": "5.0.0",
21741 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
21742 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
21743 "dev": true
21744 },
21745 "ansi-styles": {
21746 "version": "4.3.0",
21747 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
21748 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
21749 "dev": true,
21750 "requires": {
21751 "color-convert": "^2.0.1"
21752 }
21753 },
21754 "anymatch": { 21441 "anymatch": {
21755 "version": "3.1.2", 21442 "version": "3.1.2",
21756 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 21443 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
@@ -21792,32 +21479,6 @@
21792 "readdirp": "~3.6.0" 21479 "readdirp": "~3.6.0"
21793 } 21480 }
21794 }, 21481 },
21795 "cliui": {
21796 "version": "7.0.4",
21797 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
21798 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
21799 "dev": true,
21800 "requires": {
21801 "string-width": "^4.2.0",
21802 "strip-ansi": "^6.0.0",
21803 "wrap-ansi": "^7.0.0"
21804 }
21805 },
21806 "color-convert": {
21807 "version": "2.0.1",
21808 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
21809 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
21810 "dev": true,
21811 "requires": {
21812 "color-name": "~1.1.4"
21813 }
21814 },
21815 "color-name": {
21816 "version": "1.1.4",
21817 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
21818 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
21819 "dev": true
21820 },
21821 "debug": { 21482 "debug": {
21822 "version": "4.3.1", 21483 "version": "4.3.1",
21823 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 21484 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
@@ -21867,12 +21528,6 @@
21867 "dev": true, 21528 "dev": true,
21868 "optional": true 21529 "optional": true
21869 }, 21530 },
21870 "get-caller-file": {
21871 "version": "2.0.5",
21872 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
21873 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
21874 "dev": true
21875 },
21876 "glob": { 21531 "glob": {
21877 "version": "7.1.7", 21532 "version": "7.1.7",
21878 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 21533 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
@@ -21911,12 +21566,6 @@
21911 "binary-extensions": "^2.0.0" 21566 "binary-extensions": "^2.0.0"
21912 } 21567 }
21913 }, 21568 },
21914 "is-fullwidth-code-point": {
21915 "version": "3.0.0",
21916 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
21917 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
21918 "dev": true
21919 },
21920 "is-glob": { 21569 "is-glob": {
21921 "version": "4.0.1", 21570 "version": "4.0.1",
21922 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 21571 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
@@ -21968,26 +21617,6 @@
21968 "picomatch": "^2.2.1" 21617 "picomatch": "^2.2.1"
21969 } 21618 }
21970 }, 21619 },
21971 "string-width": {
21972 "version": "4.2.2",
21973 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
21974 "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
21975 "dev": true,
21976 "requires": {
21977 "emoji-regex": "^8.0.0",
21978 "is-fullwidth-code-point": "^3.0.0",
21979 "strip-ansi": "^6.0.0"
21980 }
21981 },
21982 "strip-ansi": {
21983 "version": "6.0.0",
21984 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
21985 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
21986 "dev": true,
21987 "requires": {
21988 "ansi-regex": "^5.0.0"
21989 }
21990 },
21991 "strip-json-comments": { 21620 "strip-json-comments": {
21992 "version": "3.1.1", 21621 "version": "3.1.1",
21993 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 21622 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -22021,38 +21650,6 @@
22021 "isexe": "^2.0.0" 21650 "isexe": "^2.0.0"
22022 } 21651 }
22023 }, 21652 },
22024 "wrap-ansi": {
22025 "version": "7.0.0",
22026 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
22027 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
22028 "dev": true,
22029 "requires": {
22030 "ansi-styles": "^4.0.0",
22031 "string-width": "^4.1.0",
22032 "strip-ansi": "^6.0.0"
22033 }
22034 },
22035 "y18n": {
22036 "version": "5.0.8",
22037 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
22038 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
22039 "dev": true
22040 },
22041 "yargs": {
22042 "version": "16.2.0",
22043 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
22044 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
22045 "dev": true,
22046 "requires": {
22047 "cliui": "^7.0.2",
22048 "escalade": "^3.1.1",
22049 "get-caller-file": "^2.0.5",
22050 "require-directory": "^2.1.1",
22051 "string-width": "^4.2.0",
22052 "y18n": "^5.0.5",
22053 "yargs-parser": "^20.2.2"
22054 }
22055 },
22056 "yargs-parser": { 21653 "yargs-parser": {
22057 "version": "20.2.4", 21654 "version": "20.2.4",
22058 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 21655 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
@@ -23224,49 +22821,6 @@
23224 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 22821 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
23225 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 22822 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
23226 }, 22823 },
23227 "os-locale": {
23228 "version": "3.1.0",
23229 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
23230 "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
23231 "dev": true,
23232 "requires": {
23233 "execa": "^1.0.0",
23234 "lcid": "^2.0.0",
23235 "mem": "^4.0.0"
23236 },
23237 "dependencies": {
23238 "execa": {
23239 "version": "1.0.0",
23240 "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
23241 "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
23242 "dev": true,
23243 "requires": {
23244 "cross-spawn": "^6.0.0",
23245 "get-stream": "^4.0.0",
23246 "is-stream": "^1.1.0",
23247 "npm-run-path": "^2.0.0",
23248 "p-finally": "^1.0.0",
23249 "signal-exit": "^3.0.0",
23250 "strip-eof": "^1.0.0"
23251 }
23252 },
23253 "is-stream": {
23254 "version": "1.1.0",
23255 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
23256 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
23257 "dev": true
23258 },
23259 "npm-run-path": {
23260 "version": "2.0.2",
23261 "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
23262 "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
23263 "dev": true,
23264 "requires": {
23265 "path-key": "^2.0.0"
23266 }
23267 }
23268 }
23269 },
23270 "os-name": { 22824 "os-name": {
23271 "version": "4.0.1", 22825 "version": "4.0.1",
23272 "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", 22826 "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz",
@@ -23296,12 +22850,6 @@
23296 "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 22850 "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
23297 "dev": true 22851 "dev": true
23298 }, 22852 },
23299 "p-defer": {
23300 "version": "1.0.0",
23301 "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
23302 "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
23303 "dev": true
23304 },
23305 "p-each-series": { 22853 "p-each-series": {
23306 "version": "2.2.0", 22854 "version": "2.2.0",
23307 "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", 22855 "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
@@ -23314,12 +22862,6 @@
23314 "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 22862 "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
23315 "dev": true 22863 "dev": true
23316 }, 22864 },
23317 "p-is-promise": {
23318 "version": "2.1.0",
23319 "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
23320 "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
23321 "dev": true
23322 },
23323 "p-limit": { 22865 "p-limit": {
23324 "version": "2.3.0", 22866 "version": "2.3.0",
23325 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 22867 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -24120,12 +23662,12 @@
24120 } 23662 }
24121 }, 23663 },
24122 "pretty-format": { 23664 "pretty-format": {
24123 "version": "27.0.6", 23665 "version": "27.1.0",
24124 "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", 23666 "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz",
24125 "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", 23667 "integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==",
24126 "dev": true, 23668 "dev": true,
24127 "requires": { 23669 "requires": {
24128 "@jest/types": "^27.0.6", 23670 "@jest/types": "^27.1.0",
24129 "ansi-regex": "^5.0.0", 23671 "ansi-regex": "^5.0.0",
24130 "ansi-styles": "^5.0.0", 23672 "ansi-styles": "^5.0.0",
24131 "react-is": "^17.0.1" 23673 "react-is": "^17.0.1"
@@ -26115,12 +25657,6 @@
26115 "aproba": "^1.1.1" 25657 "aproba": "^1.1.1"
26116 } 25658 }
26117 }, 25659 },
26118 "rx": {
26119 "version": "4.1.0",
26120 "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
26121 "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
26122 "dev": true
26123 },
26124 "rxjs": { 25660 "rxjs": {
26125 "version": "6.6.7", 25661 "version": "6.6.7",
26126 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 25662 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -26717,9 +26253,9 @@
26717 } 26253 }
26718 }, 26254 },
26719 "simple-git": { 26255 "simple-git": {
26720 "version": "2.44.0", 26256 "version": "2.45.0",
26721 "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.44.0.tgz", 26257 "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.45.0.tgz",
26722 "integrity": "sha512-wIjcAmymhzgdaM0Y/a+XxmNGlivvHQTPZDYXVmyHMShVDwdeVqu3+OOyDbYu0DnfVzqLs2EOxRTgMNbC3YquwQ==", 26258 "integrity": "sha512-wu/Ujs9IXn0HuyYm4HyRvne+EKsjJSWKEMkB3wQa3gNHSMHt7y3oeNX9zRQ3UBPk7bRRMLLHAdIZCZfHT9ehPg==",
26723 "dev": true, 26259 "dev": true,
26724 "requires": { 26260 "requires": {
26725 "@kwsites/file-exists": "^1.1.1", 26261 "@kwsites/file-exists": "^1.1.1",
@@ -28455,17 +27991,61 @@
28455 } 27991 }
28456 } 27992 }
28457 }, 27993 },
27994 "ts-mocha": {
27995 "version": "8.0.0",
27996 "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz",
27997 "integrity": "sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==",
27998 "dev": true,
27999 "requires": {
28000 "ts-node": "7.0.1",
28001 "tsconfig-paths": "^3.5.0"
28002 }
28003 },
28004 "ts-node": {
28005 "version": "7.0.1",
28006 "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz",
28007 "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==",
28008 "dev": true,
28009 "requires": {
28010 "arrify": "^1.0.0",
28011 "buffer-from": "^1.1.0",
28012 "diff": "^3.1.0",
28013 "make-error": "^1.1.1",
28014 "minimist": "^1.2.0",
28015 "mkdirp": "^0.5.1",
28016 "source-map-support": "^0.5.6",
28017 "yn": "^2.0.0"
28018 },
28019 "dependencies": {
28020 "diff": {
28021 "version": "3.5.0",
28022 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
28023 "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
28024 "dev": true
28025 }
28026 }
28027 },
28458 "tsconfig-paths": { 28028 "tsconfig-paths": {
28459 "version": "3.10.1", 28029 "version": "3.11.0",
28460 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", 28030 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz",
28461 "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", 28031 "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==",
28462 "dev": true, 28032 "dev": true,
28463 "requires": { 28033 "requires": {
28464 "json5": "^2.2.0", 28034 "@types/json5": "^0.0.29",
28035 "json5": "^1.0.1",
28465 "minimist": "^1.2.0", 28036 "minimist": "^1.2.0",
28466 "strip-bom": "^3.0.0" 28037 "strip-bom": "^3.0.0"
28467 }, 28038 },
28468 "dependencies": { 28039 "dependencies": {
28040 "json5": {
28041 "version": "1.0.1",
28042 "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
28043 "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
28044 "dev": true,
28045 "requires": {
28046 "minimist": "^1.2.0"
28047 }
28048 },
28469 "strip-bom": { 28049 "strip-bom": {
28470 "version": "3.0.0", 28050 "version": "3.0.0",
28471 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 28051 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -30732,6 +30312,12 @@
30732 "fd-slicer": "~1.1.0" 30312 "fd-slicer": "~1.1.0"
30733 } 30313 }
30734 }, 30314 },
30315 "yn": {
30316 "version": "2.0.0",
30317 "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
30318 "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
30319 "dev": true
30320 },
30735 "yocto-queue": { 30321 "yocto-queue": {
30736 "version": "0.1.0", 30322 "version": "0.1.0",
30737 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 30323 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index 1336b831e..0d2b9e42d 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
3 "productName": "Ferdi", 3 "productName": "Ferdi",
4 "desktopName": "ferdi.desktop", 4 "desktopName": "ferdi.desktop",
5 "appId": "com.kytwb.ferdi", 5 "appId": "com.kytwb.ferdi",
6 "version": "5.6.1-beta.3", 6 "version": "5.6.1-nightly.56",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
8 "copyright": "kytwb", 8 "copyright": "kytwb",
9 "main": "index.js", 9 "main": "index.js",
@@ -17,7 +17,7 @@
17 }, 17 },
18 "engine-strict": true, 18 "engine-strict": true,
19 "scripts": { 19 "scripts": {
20 "prepare": "husky install", 20 "prepare": "node scripts/prepare.js",
21 "start": "electron ./build", 21 "start": "electron ./build",
22 "start:local": "cross-env USE_LOCAL_API=1 npm start", 22 "start:local": "cross-env USE_LOCAL_API=1 npm start",
23 "start:live": "cross-env USE_LIVE_API=1 npm start", 23 "start:live": "cross-env USE_LIVE_API=1 npm start",
@@ -35,7 +35,7 @@
35 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"", 35 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"",
36 "packages": "npx lerna publish --no-git-tag-version", 36 "packages": "npx lerna publish --no-git-tag-version",
37 "uidev": "cd uidev && webpack-dev-server", 37 "uidev": "cd uidev && webpack-dev-server",
38 "postinstall": "npx lerna run prepare", 38 "postinstall": "node scripts/postinstall.js",
39 "apply-branding": "node ./src/i18n/apply-branding.js", 39 "apply-branding": "node ./src/i18n/apply-branding.js",
40 "update-submodules": "git submodule update --remote --force", 40 "update-submodules": "git submodule update --remote --force",
41 "prepare-code": "npm run lint && npm run reformat-files && npm run manage-translations && npm run apply-branding", 41 "prepare-code": "npm run lint && npm run reformat-files && npm run manage-translations && npm run apply-branding",
@@ -66,7 +66,7 @@
66 "@meetfranz/forms": "file:packages/forms", 66 "@meetfranz/forms": "file:packages/forms",
67 "@meetfranz/theme": "file:packages/theme", 67 "@meetfranz/theme": "file:packages/theme",
68 "@meetfranz/ui": "file:packages/ui", 68 "@meetfranz/ui": "file:packages/ui",
69 "@sentry/electron": "2.5.1", 69 "@sentry/electron": "2.5.3",
70 "atob": "2.1.2", 70 "atob": "2.1.2",
71 "auto-launch": "5.0.5", 71 "auto-launch": "5.0.5",
72 "btoa": "1.2.1", 72 "btoa": "1.2.1",
@@ -80,17 +80,17 @@
80 "debug": "4.3.2", 80 "debug": "4.3.2",
81 "du": "1.0.0", 81 "du": "1.0.0",
82 "electron-dl": "3.2.1", 82 "electron-dl": "3.2.1",
83 "electron-fetch": "1.7.3", 83 "electron-fetch": "1.7.4",
84 "electron-find": "1.0.7", 84 "electron-find": "1.0.7",
85 "electron-react-titlebar": "0.8.2", 85 "electron-react-titlebar": "0.8.2",
86 "electron-updater": "4.3.9", 86 "electron-updater": "4.3.9",
87 "electron-util": "0.17.0", 87 "electron-util": "0.17.2",
88 "electron-window-state": "5.0.3", 88 "electron-window-state": "5.0.3",
89 "fs-extra": "10.0.0", 89 "fs-extra": "10.0.0",
90 "jsonwebtoken": "8.5.1", 90 "jsonwebtoken": "8.5.1",
91 "jss": "10.7.1", 91 "jss": "10.7.1",
92 "lodash": "4.17.21", 92 "lodash": "4.17.21",
93 "macos-notification-state": "1.3.5", 93 "macos-notification-state": "1.3.6",
94 "macos-version": "5.2.1", 94 "macos-version": "5.2.1",
95 "marked": "0.7.0", 95 "marked": "0.7.0",
96 "mime-types": "2.1.32", 96 "mime-types": "2.1.32",
@@ -132,13 +132,13 @@
132 "ws": "7.4.6" 132 "ws": "7.4.6"
133 }, 133 },
134 "devDependencies": { 134 "devDependencies": {
135 "@adlk/misty": "0.2.0",
136 "@babel/cli": "7.14.8", 135 "@babel/cli": "7.14.8",
137 "@babel/core": "7.15.0", 136 "@babel/core": "7.15.0",
138 "@babel/eslint-parser": "7.15.0", 137 "@babel/eslint-parser": "7.15.0",
139 "@babel/plugin-proposal-class-properties": "7.14.5", 138 "@babel/plugin-proposal-class-properties": "7.14.5",
140 "@babel/plugin-proposal-decorators": "7.14.5", 139 "@babel/plugin-proposal-decorators": "7.14.5",
141 "@babel/plugin-proposal-export-default-from": "7.14.5", 140 "@babel/plugin-proposal-export-default-from": "7.14.5",
141 "@babel/plugin-proposal-private-methods": "7.14.5",
142 "@babel/plugin-proposal-throw-expressions": "7.14.5", 142 "@babel/plugin-proposal-throw-expressions": "7.14.5",
143 "@babel/plugin-syntax-dynamic-import": "7.8.3", 143 "@babel/plugin-syntax-dynamic-import": "7.8.3",
144 "@babel/preset-env": "7.15.0", 144 "@babel/preset-env": "7.15.0",
@@ -148,16 +148,19 @@
148 "@commitlint/config-conventional": "13.1.0", 148 "@commitlint/config-conventional": "13.1.0",
149 "@tsconfig/node14": "1.0.1", 149 "@tsconfig/node14": "1.0.1",
150 "@types/color": "3.0.2", 150 "@types/color": "3.0.2",
151 "@types/du": "1.0.0", 151 "@types/du": "1.0.1",
152 "@types/expect.js": "0.3.29",
152 "@types/fs-extra": "9.0.12", 153 "@types/fs-extra": "9.0.12",
153 "@types/lodash": "4.14.172", 154 "@types/lodash": "4.14.172",
155 "@types/mocha": "9.0.0",
156 "@types/ms": "0.7.31",
154 "@types/node": "14.17.6", 157 "@types/node": "14.17.6",
155 "@types/react": "16.14.6", 158 "@types/react": "16.14.6",
156 "@types/react-dom": "16.9.13", 159 "@types/react-dom": "16.9.13",
157 "@types/route-parser": "0.1.3", 160 "@types/route-parser": "0.1.3",
158 "@types/tar": "4.0.5", 161 "@types/tar": "4.0.5",
159 "@types/uuid": "3.4.9", 162 "@types/uuid": "3.4.9",
160 "@typescript-eslint/eslint-plugin": "4.29.1", 163 "@typescript-eslint/eslint-plugin": "4.30.0",
161 "@typescript-eslint/parser": "4.29.1", 164 "@typescript-eslint/parser": "4.29.1",
162 "all-contributors-cli": "6.20.0", 165 "all-contributors-cli": "6.20.0",
163 "babel-plugin-react-intl": "3.5.1", 166 "babel-plugin-react-intl": "3.5.1",
@@ -174,11 +177,11 @@
174 "eslint-config-airbnb": "18.2.1", 177 "eslint-config-airbnb": "18.2.1",
175 "eslint-config-airbnb-typescript": "12.3.1", 178 "eslint-config-airbnb-typescript": "12.3.1",
176 "eslint-config-prettier": "8.3.0", 179 "eslint-config-prettier": "8.3.0",
177 "eslint-plugin-import": "2.24.0", 180 "eslint-plugin-import": "2.24.2",
178 "eslint-plugin-jest": "24.4.0", 181 "eslint-plugin-jest": "24.4.0",
179 "eslint-plugin-jsx-a11y": "6.4.1", 182 "eslint-plugin-jsx-a11y": "6.4.1",
180 "eslint-plugin-prettier": "3.4.0", 183 "eslint-plugin-prettier": "3.4.0",
181 "eslint-plugin-react": "7.24.0", 184 "eslint-plugin-react": "7.25.1",
182 "eslint-plugin-react-hooks": "4.2.0", 185 "eslint-plugin-react-hooks": "4.2.0",
183 "expect.js": "0.3.1", 186 "expect.js": "0.3.1",
184 "gulp": "4.0.2", 187 "gulp": "4.0.2",
@@ -194,19 +197,20 @@
194 "gulp-uglify": "3.0.2", 197 "gulp-uglify": "3.0.2",
195 "hex-rgb": "4.3.0", 198 "hex-rgb": "4.3.0",
196 "html-webpack-plugin": "4.5.2", 199 "html-webpack-plugin": "4.5.2",
197 "husky": "7.0.1", 200 "husky": "7.0.2",
198 "jest": "27.0.6", 201 "jest": "27.1.0",
199 "kebab-case": "1.0.1", 202 "kebab-case": "1.0.1",
200 "lerna": "4.0.0", 203 "lerna": "4.0.0",
201 "mocha": "9.0.3", 204 "mocha": "9.1.1",
202 "node-abi": "2.30.0", 205 "node-abi": "2.30.0",
203 "prettier": "2.3.2", 206 "prettier": "2.3.2",
204 "preval-build-info": "1.0.3", 207 "preval-build-info": "1.0.3",
205 "react-intl-translations-manager": "5.0.3", 208 "react-intl-translations-manager": "5.0.3",
206 "sass": "1.37.5", 209 "sass": "1.37.5",
207 "simple-git": "2.44.0", 210 "simple-git": "2.45.0",
208 "terser": "4.8.0", 211 "terser": "4.8.0",
209 "ts-loader": "5.4.5", 212 "ts-loader": "5.4.5",
213 "ts-mocha": "8.0.0",
210 "typescript": "3.9.10", 214 "typescript": "3.9.10",
211 "wait-on": "6.0.0", 215 "wait-on": "6.0.0",
212 "webpack": "4.46.0", 216 "webpack": "4.46.0",
diff --git a/packages/forms/package.json b/packages/forms/package.json
index 29ccc3f25..5676ed6c3 100644
--- a/packages/forms/package.json
+++ b/packages/forms/package.json
@@ -5,7 +5,7 @@
5 "main": "lib/index.js", 5 "main": "lib/index.js",
6 "scripts": { 6 "scripts": {
7 "dev": "tsc -w", 7 "dev": "tsc -w",
8 "prepare": "tsc" 8 "build": "tsc"
9 }, 9 },
10 "publishConfig": { 10 "publishConfig": {
11 "access": "public" 11 "access": "public"
diff --git a/packages/misty.yml b/packages/misty.yml
deleted file mode 100644
index 2d8cff014..000000000
--- a/packages/misty.yml
+++ /dev/null
@@ -1,11 +0,0 @@
1theme:
2 cwd: ./theme
3 cmd: npm run dev
4
5forms:
6 cwd: ./forms
7 cmd: npm run dev
8
9ui:
10 cwd: ./ui
11 cmd: npm run dev
diff --git a/packages/theme/package.json b/packages/theme/package.json
index 7e3c4722d..7f3226bd8 100644
--- a/packages/theme/package.json
+++ b/packages/theme/package.json
@@ -15,15 +15,15 @@
15 }, 15 },
16 "scripts": { 16 "scripts": {
17 "dev": "tsc -w", 17 "dev": "tsc -w",
18 "prepare": "tsc", 18 "build": "tsc",
19 "preprepare": "npm run test", 19 "preprepare": "npm run test",
20 "test": "npx mocha" 20 "test": "ts-mocha 'test/**/*.test.ts'"
21 }, 21 },
22 "bugs": { 22 "bugs": {
23 "url": "https://github.com/meetfranz/franz/issues" 23 "url": "https://github.com/meetfranz/franz/issues"
24 }, 24 },
25 "dependencies": { 25 "dependencies": {
26 "color": "3.1.2" 26 "color": "4.0.1"
27 }, 27 },
28 "gitHead": "9f2ab40b7602bc3df26ebb093b484b9917768f69" 28 "gitHead": "9f2ab40b7602bc3df26ebb093b484b9917768f69"
29} 29}
diff --git a/packages/theme/src/themes/IStyleTypes.ts b/packages/theme/src/themes/IStyleTypes.ts
index cf8bdea33..48f52daf2 100644
--- a/packages/theme/src/themes/IStyleTypes.ts
+++ b/packages/theme/src/themes/IStyleTypes.ts
@@ -1,4 +1,4 @@
1export default interface IStyleTypes { 1export interface IStyleTypes {
2 [index: string]: { 2 [index: string]: {
3 accent: string; 3 accent: string;
4 contrast: string; 4 contrast: string;
diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts
index 7d7bab399..87a68cb5d 100644
--- a/packages/theme/src/themes/dark/index.ts
+++ b/packages/theme/src/themes/dark/index.ts
@@ -153,13 +153,6 @@ export default (brandPrimary: string) => {
153 }, 153 },
154 }), 154 }),
155 155
156 // Announcements
157 announcements: merge({}, defaultStyles.announcements, {
158 spotlight: {
159 background: legacyStyles.darkThemeGrayDark,
160 },
161 }),
162
163 // Todos 156 // Todos
164 todos: merge({}, defaultStyles.todos, { 157 todos: merge({}, defaultStyles.todos, {
165 todosLayer: { 158 todosLayer: {
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
index 21017bbe0..80bcba766 100644
--- a/packages/theme/src/themes/default/index.ts
+++ b/packages/theme/src/themes/default/index.ts
@@ -2,7 +2,7 @@ import color from 'color';
2import { cloneDeep } from 'lodash'; 2import { cloneDeep } from 'lodash';
3 3
4import * as legacyStyles from '../legacy'; 4import * as legacyStyles from '../legacy';
5import IStyleTypes from '../IStyleTypes'; 5import type { IStyleTypes } from '../IStyleTypes';
6 6
7export default (brandPrimary: string) => { 7export default (brandPrimary: string) => {
8 const brandSuccess = '#5cb85c'; 8 const brandSuccess = '#5cb85c';
@@ -228,13 +228,6 @@ export default (brandPrimary: string) => {
228 }, 228 },
229 }, 229 },
230 230
231 // Announcements
232 announcements: {
233 spotlight: {
234 background: legacyStyles.themeGrayLightest,
235 },
236 },
237
238 // Todos 231 // Todos
239 todos: { 232 todos: {
240 todosLayer: { 233 todosLayer: {
diff --git a/packages/theme/test/index.test.js b/packages/theme/test/index.test.js
deleted file mode 100644
index 3906433c1..000000000
--- a/packages/theme/test/index.test.js
+++ /dev/null
@@ -1,17 +0,0 @@
1const expect = require('expect.js');
2
3const { colorBackground: colorBackgroundDefault } = require('../lib/themes/default');
4const { colorBackground: colorBackgroundDark } = require('../lib/themes/dark');
5const { default: theme } = require('../lib');
6
7describe('Load theme', () => {
8 it('Should load default theme', () => {
9 const { colorBackground } = theme('default');
10 expect(colorBackground).to.be(colorBackgroundDefault);
11 });
12
13 it('Should load dark theme', () => {
14 const { colorBackground } = theme('dark');
15 expect(colorBackground).to.be(colorBackgroundDark);
16 });
17});
diff --git a/packages/theme/test/index.test.ts b/packages/theme/test/index.test.ts
new file mode 100644
index 000000000..7eda4e359
--- /dev/null
+++ b/packages/theme/test/index.test.ts
@@ -0,0 +1,19 @@
1import expect from 'expect.js';
2
3import makeDefaultThemeConfig from '../src/themes/default';
4import makeDarkThemeConfig from '../src/themes/dark';
5import { theme, ThemeType } from '../src';
6
7describe('Load theme', () => {
8 it('Should load default theme', () => {
9 const { colorBackground } = theme('default' as ThemeType);
10 expect(colorBackground).to.be(
11 makeDefaultThemeConfig('default').colorBackground,
12 );
13 });
14
15 it('Should load dark theme', () => {
16 const { colorBackground } = theme('dark' as ThemeType);
17 expect(colorBackground).to.be(makeDarkThemeConfig('dark').colorBackground);
18 });
19});
diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json
index d80ee9ee7..4deaa5dd7 100644
--- a/packages/theme/tsconfig.json
+++ b/packages/theme/tsconfig.json
@@ -4,4 +4,5 @@
4 "outDir": "lib", 4 "outDir": "lib",
5 "rootDir": "src" 5 "rootDir": "src"
6 }, 6 },
7 "exclude": ["node_modules", "lib", "test"]
7} 8}
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 2b24803f5..23af393f5 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -5,7 +5,7 @@
5 "main": "lib/index.js", 5 "main": "lib/index.js",
6 "scripts": { 6 "scripts": {
7 "dev": "tsc -w", 7 "dev": "tsc -w",
8 "prepare": "tsc" 8 "build": "tsc"
9 }, 9 },
10 "publishConfig": { 10 "publishConfig": {
11 "access": "public" 11 "access": "public"
diff --git a/recipes b/recipes
Subproject 2486fbbd72f08b759a2781913f388e91149e79e Subproject 62599c06f4b2039219e282b34a51a4ff4fbe5e6
diff --git a/scripts/postinstall.js b/scripts/postinstall.js
new file mode 100644
index 000000000..84e7492ef
--- /dev/null
+++ b/scripts/postinstall.js
@@ -0,0 +1,8 @@
1const { exec } = require('child_process');
2
3// eslint-disable-next-line no-console
4const log = (err, stdout, stderr) => console.log(err || stdout || stderr);
5
6if (!process.env.BUNDLING) {
7 exec('npx lerna run build', log);
8}
diff --git a/scripts/prepare.js b/scripts/prepare.js
new file mode 100644
index 000000000..0b4daa82b
--- /dev/null
+++ b/scripts/prepare.js
@@ -0,0 +1,6 @@
1const isDev = process.env.NODE_ENV === 'development';
2
3if (isDev) {
4 // eslint-disable-next-line global-require
5 require('husky').install();
6}
diff --git a/src/actions/index.js b/src/actions/index.js
index ed8283d6c..aecdac675 100644
--- a/src/actions/index.js
+++ b/src/actions/index.js
@@ -10,7 +10,6 @@ import user from './user';
10import news from './news'; 10import news from './news';
11import settings from './settings'; 11import settings from './settings';
12import requests from './requests'; 12import requests from './requests';
13import announcements from '../features/announcements/actions';
14import workspaces from '../features/workspaces/actions'; 13import workspaces from '../features/workspaces/actions';
15import todos from '../features/todos/actions'; 14import todos from '../features/todos/actions';
16 15
@@ -28,7 +27,6 @@ const actions = {
28 27
29export default Object.assign( 28export default Object.assign(
30 defineActions(actions, PropTypes.checkPropTypes), 29 defineActions(actions, PropTypes.checkPropTypes),
31 { announcements },
32 { workspaces }, 30 { workspaces },
33 { todos }, 31 { todos },
34); 32);
diff --git a/src/components/AppUpdateInfoBar.js b/src/components/AppUpdateInfoBar.js
index f51fe029b..30804262a 100644
--- a/src/components/AppUpdateInfoBar.js
+++ b/src/components/AppUpdateInfoBar.js
@@ -2,8 +2,9 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl'; 3import { defineMessages, intlShape } from 'react-intl';
4 4
5import { announcementActions } from '../features/announcements/actions';
6import InfoBar from './ui/InfoBar'; 5import InfoBar from './ui/InfoBar';
6import { GITHUB_FERDI_URL } from '../config';
7import { openExternalUrl } from '../helpers/url-helpers';
7 8
8const messages = defineMessages({ 9const messages = defineMessages({
9 updateAvailable: { 10 updateAvailable: {
@@ -23,25 +24,16 @@ const messages = defineMessages({
23class AppUpdateInfoBar extends Component { 24class AppUpdateInfoBar extends Component {
24 static propTypes = { 25 static propTypes = {
25 onInstallUpdate: PropTypes.func.isRequired, 26 onInstallUpdate: PropTypes.func.isRequired,
26 nextAppReleaseVersion: PropTypes.string,
27 onHide: PropTypes.func.isRequired, 27 onHide: PropTypes.func.isRequired,
28 }; 28 };
29 29
30 static defaultProps = {
31 nextAppReleaseVersion: null,
32 };
33
34 static contextTypes = { 30 static contextTypes = {
35 intl: intlShape, 31 intl: intlShape,
36 }; 32 };
37 33
38 render() { 34 render() {
39 const { intl } = this.context; 35 const { intl } = this.context;
40 const { 36 const { onInstallUpdate, onHide } = this.props;
41 onInstallUpdate,
42 nextAppReleaseVersion,
43 onHide,
44 } = this.props;
45 37
46 return ( 38 return (
47 <InfoBar 39 <InfoBar
@@ -51,12 +43,16 @@ class AppUpdateInfoBar extends Component {
51 onHide={onHide} 43 onHide={onHide}
52 > 44 >
53 <span className="mdi mdi-information" /> 45 <span className="mdi mdi-information" />
54 {intl.formatMessage(messages.updateAvailable)} 46 {intl.formatMessage(messages.updateAvailable)}{' '}
55 {' '}
56 <button 47 <button
57 className="info-bar__inline-button" 48 className="info-bar__inline-button"
58 type="button" 49 type="button"
59 onClick={() => announcementActions.show({ targetVersion: nextAppReleaseVersion })} 50 onClick={() =>
51 openExternalUrl(
52 `${GITHUB_FERDI_URL}/ferdi/blob/develop/CHANGELOG.md`,
53 true,
54 )
55 }
60 > 56 >
61 <u>{intl.formatMessage(messages.changelog)}</u> 57 <u>{intl.formatMessage(messages.changelog)}</u>
62 </button> 58 </button>
diff --git a/src/components/auth/AuthLayout.js b/src/components/auth/AuthLayout.js
index c0e6b982b..8235932c2 100644
--- a/src/components/auth/AuthLayout.js
+++ b/src/components/auth/AuthLayout.js
@@ -28,7 +28,6 @@ class AuthLayout extends Component {
28 retryHealthCheck: PropTypes.func.isRequired, 28 retryHealthCheck: PropTypes.func.isRequired,
29 isHealthCheckLoading: PropTypes.bool.isRequired, 29 isHealthCheckLoading: PropTypes.bool.isRequired,
30 isFullScreen: PropTypes.bool.isRequired, 30 isFullScreen: PropTypes.bool.isRequired,
31 nextAppReleaseVersion: PropTypes.string,
32 installAppUpdate: PropTypes.func.isRequired, 31 installAppUpdate: PropTypes.func.isRequired,
33 appUpdateIsDownloaded: PropTypes.bool.isRequired, 32 appUpdateIsDownloaded: PropTypes.bool.isRequired,
34 }; 33 };
@@ -37,10 +36,6 @@ class AuthLayout extends Component {
37 shouldShowAppUpdateInfoBar: true, 36 shouldShowAppUpdateInfoBar: true,
38 }; 37 };
39 38
40 static defaultProps = {
41 nextAppReleaseVersion: null,
42 };
43
44 static contextTypes = { 39 static contextTypes = {
45 intl: intlShape, 40 intl: intlShape,
46 }; 41 };
@@ -54,7 +49,6 @@ class AuthLayout extends Component {
54 retryHealthCheck, 49 retryHealthCheck,
55 isHealthCheckLoading, 50 isHealthCheckLoading,
56 isFullScreen, 51 isFullScreen,
57 nextAppReleaseVersion,
58 installAppUpdate, 52 installAppUpdate,
59 appUpdateIsDownloaded, 53 appUpdateIsDownloaded,
60 } = this.props; 54 } = this.props;
@@ -77,7 +71,6 @@ class AuthLayout extends Component {
77 )} 71 )}
78 {appUpdateIsDownloaded && this.state.shouldShowAppUpdateInfoBar && ( 72 {appUpdateIsDownloaded && this.state.shouldShowAppUpdateInfoBar && (
79 <AppUpdateInfoBar 73 <AppUpdateInfoBar
80 nextAppReleaseVersion={nextAppReleaseVersion}
81 onInstallUpdate={installAppUpdate} 74 onInstallUpdate={installAppUpdate}
82 onHide={() => { 75 onHide={() => {
83 this.setState({ shouldShowAppUpdateInfoBar: false }); 76 this.setState({ shouldShowAppUpdateInfoBar: false });
diff --git a/src/components/auth/ChangeServer.js b/src/components/auth/ChangeServer.js
index 7bab80280..8e8a7af32 100644
--- a/src/components/auth/ChangeServer.js
+++ b/src/components/auth/ChangeServer.js
@@ -9,6 +9,7 @@ import Button from '../ui/Button';
9import Infobox from '../ui/Infobox'; 9import Infobox from '../ui/Infobox';
10import { url, required } from '../../helpers/validation-helpers'; 10import { url, required } from '../../helpers/validation-helpers';
11import { LIVE_FERDI_API, LIVE_FRANZ_API } from '../../config'; 11import { LIVE_FERDI_API, LIVE_FRANZ_API } from '../../config';
12import globalMessages from '../../i18n/globalMessages';
12 13
13const messages = defineMessages({ 14const messages = defineMessages({
14 headline: { 15 headline: {
@@ -31,11 +32,6 @@ const messages = defineMessages({
31 id: 'changeserver.urlError', 32 id: 'changeserver.urlError',
32 defaultMessage: '!!!Enter a valid URL', 33 defaultMessage: '!!!Enter a valid URL',
33 }, 34 },
34 submit: {
35 id: 'changeserver.submit',
36 defaultMessage: '!!!Submit',
37 },
38
39}); 35});
40 36
41export default @observer class ChangeServer extends Component { 37export default @observer class ChangeServer extends Component {
@@ -120,7 +116,7 @@ export default @observer class ChangeServer extends Component {
120 <Button 116 <Button
121 type="submit" 117 type="submit"
122 className="auth__button" 118 className="auth__button"
123 label={intl.formatMessage(messages.submit)} 119 label={intl.formatMessage(globalMessages.submit)}
124 /> 120 />
125 </form> 121 </form>
126 </div> 122 </div>
diff --git a/src/components/auth/Password.js b/src/components/auth/Password.js
index eafc48502..1be2097bd 100644
--- a/src/components/auth/Password.js
+++ b/src/components/auth/Password.js
@@ -9,6 +9,7 @@ import Input from '../ui/Input';
9import Button from '../ui/Button'; 9import Button from '../ui/Button';
10import Link from '../ui/Link'; 10import Link from '../ui/Link';
11import Infobox from '../ui/Infobox'; 11import Infobox from '../ui/Infobox';
12import globalMessages from '../../i18n/globalMessages';
12 13
13const messages = defineMessages({ 14const messages = defineMessages({
14 headline: { 15 headline: {
@@ -19,10 +20,6 @@ const messages = defineMessages({
19 id: 'password.email.label', 20 id: 'password.email.label',
20 defaultMessage: '!!!Email address', 21 defaultMessage: '!!!Email address',
21 }, 22 },
22 submitButtonLabel: {
23 id: 'password.submit.label',
24 defaultMessage: '!!!Submit',
25 },
26 successInfo: { 23 successInfo: {
27 id: 'password.successInfo', 24 id: 'password.successInfo',
28 defaultMessage: '!!!Your new password was sent to your email address', 25 defaultMessage: '!!!Your new password was sent to your email address',
@@ -112,7 +109,7 @@ export default @observer class Password extends Component {
112 <Button 109 <Button
113 className="auth__button is-loading" 110 className="auth__button is-loading"
114 buttonType="secondary" 111 buttonType="secondary"
115 label={`${intl.formatMessage(messages.submitButtonLabel)} ...`} 112 label={`${intl.formatMessage(globalMessages.submit)} ...`}
116 loaded={false} 113 loaded={false}
117 disabled 114 disabled
118 /> 115 />
@@ -120,7 +117,7 @@ export default @observer class Password extends Component {
120 <Button 117 <Button
121 type="submit" 118 type="submit"
122 className="auth__button" 119 className="auth__button"
123 label={intl.formatMessage(messages.submitButtonLabel)} 120 label={intl.formatMessage(globalMessages.submit)}
124 /> 121 />
125 )} 122 )}
126 </form> 123 </form>
diff --git a/src/components/auth/SetupAssistant.js b/src/components/auth/SetupAssistant.js
index 0f821d4fc..ded36bbe7 100644
--- a/src/components/auth/SetupAssistant.js
+++ b/src/components/auth/SetupAssistant.js
@@ -10,6 +10,7 @@ import { Badge } from '@meetfranz/ui';
10import Modal from '../ui/Modal'; 10import Modal from '../ui/Modal';
11import Infobox from '../ui/Infobox'; 11import Infobox from '../ui/Infobox';
12import Appear from '../ui/effects/Appear'; 12import Appear from '../ui/effects/Appear';
13import globalMessages from '../../i18n/globalMessages';
13 14
14import { CDN_URL } from '../../config'; 15import { CDN_URL } from '../../config';
15 16
@@ -300,11 +301,14 @@ class SetupAssistant extends Component {
300 value={slackWorkspace} 301 value={slackWorkspace}
301 /> 302 />
302 <div className={classes.modalActionContainer}> 303 <div className={classes.modalActionContainer}>
303 <Button type="submit" label="Save" /> 304 <Button
305 type="submit"
306 label={intl.formatMessage(globalMessages.save)}
307 />
304 <Button 308 <Button
305 type="link" 309 type="link"
306 buttonType="secondary" 310 buttonType="secondary"
307 label="Cancel" 311 label={intl.formatMessage(globalMessages.cancel)}
308 className={classes.ctaCancel} 312 className={classes.ctaCancel}
309 onClick={() => this.setState({ slackWorkspace: '' })} 313 onClick={() => this.setState({ slackWorkspace: '' })}
310 /> 314 />
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index 00d7a759b..e6e5d40fe 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -76,7 +76,6 @@ class AppLayout extends Component {
76 news: MobxPropTypes.arrayOrObservableArray.isRequired, 76 news: MobxPropTypes.arrayOrObservableArray.isRequired,
77 showServicesUpdatedInfoBar: PropTypes.bool.isRequired, 77 showServicesUpdatedInfoBar: PropTypes.bool.isRequired,
78 appUpdateIsDownloaded: PropTypes.bool.isRequired, 78 appUpdateIsDownloaded: PropTypes.bool.isRequired,
79 nextAppReleaseVersion: PropTypes.string,
80 authRequestFailed: PropTypes.bool.isRequired, 79 authRequestFailed: PropTypes.bool.isRequired,
81 removeNewsItem: PropTypes.func.isRequired, 80 removeNewsItem: PropTypes.func.isRequired,
82 reloadServicesAfterUpdate: PropTypes.func.isRequired, 81 reloadServicesAfterUpdate: PropTypes.func.isRequired,
@@ -93,7 +92,6 @@ class AppLayout extends Component {
93 92
94 static defaultProps = { 93 static defaultProps = {
95 children: [], 94 children: [],
96 nextAppReleaseVersion: null,
97 }; 95 };
98 96
99 static contextTypes = { 97 static contextTypes = {
@@ -111,7 +109,6 @@ class AppLayout extends Component {
111 news, 109 news,
112 showServicesUpdatedInfoBar, 110 showServicesUpdatedInfoBar,
113 appUpdateIsDownloaded, 111 appUpdateIsDownloaded,
114 nextAppReleaseVersion,
115 authRequestFailed, 112 authRequestFailed,
116 removeNewsItem, 113 removeNewsItem,
117 reloadServicesAfterUpdate, 114 reloadServicesAfterUpdate,
@@ -195,7 +192,6 @@ class AppLayout extends Component {
195 )} 192 )}
196 {appUpdateIsDownloaded && this.state.shouldShowAppUpdateInfoBar && ( 193 {appUpdateIsDownloaded && this.state.shouldShowAppUpdateInfoBar && (
197 <AppUpdateInfoBar 194 <AppUpdateInfoBar
198 nextAppReleaseVersion={nextAppReleaseVersion}
199 onInstallUpdate={installAppUpdate} 195 onInstallUpdate={installAppUpdate}
200 onHide={() => { 196 onHide={() => {
201 this.setState({ shouldShowAppUpdateInfoBar: false }); 197 this.setState({ shouldShowAppUpdateInfoBar: false });
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index a1a4ab64f..1ee7733b9 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -12,12 +12,9 @@ import { todosStore } from '../../features/todos';
12import { todoActions } from '../../features/todos/actions'; 12import { todoActions } from '../../features/todos/actions';
13import AppStore from '../../stores/AppStore'; 13import AppStore from '../../stores/AppStore';
14import SettingsStore from '../../stores/SettingsStore'; 14import SettingsStore from '../../stores/SettingsStore';
15import globalMessages from '../../i18n/globalMessages';
15 16
16const messages = defineMessages({ 17const messages = defineMessages({
17 settings: {
18 id: 'sidebar.settings',
19 defaultMessage: '!!!Settings',
20 },
21 addNewService: { 18 addNewService: {
22 id: 'sidebar.addNewService', 19 id: 'sidebar.addNewService',
23 defaultMessage: '!!!Add new service', 20 defaultMessage: '!!!Add new service',
@@ -40,11 +37,11 @@ const messages = defineMessages({
40 }, 37 },
41 openTodosDrawer: { 38 openTodosDrawer: {
42 id: 'sidebar.openTodosDrawer', 39 id: 'sidebar.openTodosDrawer',
43 defaultMessage: '!!!Open Franz Todos', 40 defaultMessage: '!!!Open Ferdi Todos',
44 }, 41 },
45 closeTodosDrawer: { 42 closeTodosDrawer: {
46 id: 'sidebar.closeTodosDrawer', 43 id: 'sidebar.closeTodosDrawer',
47 defaultMessage: '!!!Close Franz Todos', 44 defaultMessage: '!!!Close Ferdi Todos',
48 }, 45 },
49 lockFerdi: { 46 lockFerdi: {
50 id: 'sidebar.lockFerdi', 47 id: 'sidebar.lockFerdi',
@@ -215,7 +212,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
215 type="button" 212 type="button"
216 onClick={() => openSettings({ path: 'app' })} 213 onClick={() => openSettings({ path: 'app' })}
217 className="sidebar__button sidebar__button--settings" 214 className="sidebar__button sidebar__button--settings"
218 data-tip={`${intl.formatMessage(messages.settings)} (${settingsShortcutKey(false)})`} 215 data-tip={`${intl.formatMessage(globalMessages.settings)} (${settingsShortcutKey(false)})`}
219 > 216 >
220 <i className="mdi mdi-cog" /> 217 <i className="mdi mdi-cog" />
221 { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE 218 { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index 6ad925670..e5892be5d 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -11,6 +11,7 @@ import ms from 'ms';
11import { observable, autorun } from 'mobx'; 11import { observable, autorun } from 'mobx';
12import ServiceModel from '../../../models/Service'; 12import ServiceModel from '../../../models/Service';
13import { cmdOrCtrlShortcutKey } from '../../../environment'; 13import { cmdOrCtrlShortcutKey } from '../../../environment';
14import globalMessages from '../../../i18n/globalMessages';
14 15
15const IS_SERVICE_DEBUGGING_ENABLED = ( 16const IS_SERVICE_DEBUGGING_ENABLED = (
16 localStorage.getItem('debug') || '' 17 localStorage.getItem('debug') || ''
@@ -21,10 +22,6 @@ const messages = defineMessages({
21 id: 'tabs.item.reload', 22 id: 'tabs.item.reload',
22 defaultMessage: '!!!Reload', 23 defaultMessage: '!!!Reload',
23 }, 24 },
24 edit: {
25 id: 'tabs.item.edit',
26 defaultMessage: '!!!Edit',
27 },
28 disableNotifications: { 25 disableNotifications: {
29 id: 'tabs.item.disableNotifications', 26 id: 'tabs.item.disableNotifications',
30 defaultMessage: '!!!Disable notifications', 27 defaultMessage: '!!!Disable notifications',
@@ -204,7 +201,7 @@ class TabItem extends Component {
204 accelerator: `${cmdOrCtrlShortcutKey()}+R`, 201 accelerator: `${cmdOrCtrlShortcutKey()}+R`,
205 }, 202 },
206 { 203 {
207 label: intl.formatMessage(messages.edit), 204 label: intl.formatMessage(globalMessages.edit),
208 click: () => 205 click: () =>
209 openSettings({ 206 openSettings({
210 path: `services/edit/${service.id}`, 207 path: `services/edit/${service.id}`,
@@ -227,8 +224,8 @@ class TabItem extends Component {
227 }, 224 },
228 { 225 {
229 label: service.isDarkModeEnabled 226 label: service.isDarkModeEnabled
230 ? intl.formatMessage(messages.enableDarkMode) 227 ? intl.formatMessage(messages.disableDarkMode)
231 : intl.formatMessage(messages.disableDarkMode), 228 : intl.formatMessage(messages.enableDarkMode),
232 click: () => toggleDarkMode(), 229 click: () => toggleDarkMode(),
233 }, 230 },
234 { 231 {
@@ -259,7 +256,7 @@ class TabItem extends Component {
259 detail: intl.formatMessage(messages.confirmDeleteService, { 256 detail: intl.formatMessage(messages.confirmDeleteService, {
260 serviceName: service.name || service.recipe.name, 257 serviceName: service.name || service.recipe.name,
261 }), 258 }),
262 buttons: ['Yes', 'No'], 259 buttons: [intl.formatMessage(globalMessages.yes), intl.formatMessage(globalMessages.no)],
263 }); 260 });
264 if (selection === 0) { 261 if (selection === 0) {
265 deleteService(); 262 deleteService();
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 02cae6b69..0a5ace586 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -10,6 +10,7 @@ import { workspaceStore } from '../../../features/workspaces';
10import UIStore from '../../../stores/UIStore'; 10import UIStore from '../../../stores/UIStore';
11import SettingsStore from '../../../stores/SettingsStore'; 11import SettingsStore from '../../../stores/SettingsStore';
12import UserStore from '../../../stores/UserStore'; 12import UserStore from '../../../stores/UserStore';
13import globalMessages from '../../../i18n/globalMessages';
13 14
14const messages = defineMessages({ 15const messages = defineMessages({
15 availableServices: { 16 availableServices: {
@@ -32,10 +33,6 @@ const messages = defineMessages({
32 id: 'settings.navigation.team', 33 id: 'settings.navigation.team',
33 defaultMessage: '!!!Manage Team', 34 defaultMessage: '!!!Manage Team',
34 }, 35 },
35 settings: {
36 id: 'settings.navigation.settings',
37 defaultMessage: '!!!Settings',
38 },
39 supportFerdi: { 36 supportFerdi: {
40 id: 'settings.navigation.supportFerdi', 37 id: 'settings.navigation.supportFerdi',
41 defaultMessage: '!!!About Ferdi', 38 defaultMessage: '!!!About Ferdi',
@@ -159,7 +156,7 @@ export default @inject('stores', 'actions') @observer class SettingsNavigation e
159 className="settings-navigation__link" 156 className="settings-navigation__link"
160 activeClassName="is-active" 157 activeClassName="is-active"
161 > 158 >
162 {intl.formatMessage(messages.settings)} 159 {intl.formatMessage(globalMessages.settings)}
163 </Link> 160 </Link>
164 <Link 161 <Link
165 to="/settings/support" 162 to="/settings/support"
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 41580ca78..6a919b902 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -18,10 +18,6 @@ import { openPath } from '../../../helpers/url-helpers';
18import globalMessages from '../../../i18n/globalMessages'; 18import globalMessages from '../../../i18n/globalMessages';
19 19
20const messages = defineMessages({ 20const messages = defineMessages({
21 headline: {
22 id: 'settings.app.headline',
23 defaultMessage: '!!!Settings',
24 },
25 headlineGeneral: { 21 headlineGeneral: {
26 id: 'settings.app.headlineGeneral', 22 id: 'settings.app.headlineGeneral',
27 defaultMessage: '!!!General', 23 defaultMessage: '!!!General',
@@ -275,7 +271,7 @@ export default @observer class EditSettingsForm extends Component {
275 return ( 271 return (
276 <div className="settings__main"> 272 <div className="settings__main">
277 <div className="settings__header"> 273 <div className="settings__header">
278 <h1>{intl.formatMessage(messages.headline)}</h1> 274 <h1>{intl.formatMessage(globalMessages.settings)}</h1>
279 </div> 275 </div>
280 <div className="settings__body"> 276 <div className="settings__body">
281 <form 277 <form
@@ -334,6 +330,7 @@ export default @observer class EditSettingsForm extends Component {
334 <div> 330 <div>
335 <Toggle field={form.$('autoLaunchOnStart')} /> 331 <Toggle field={form.$('autoLaunchOnStart')} />
336 <Toggle field={form.$('runInBackground')} /> 332 <Toggle field={form.$('runInBackground')} />
333 <Toggle field={form.$('confirmOnQuit')} />
337 <Toggle field={form.$('enableSystemTray')} /> 334 <Toggle field={form.$('enableSystemTray')} />
338 <Toggle field={form.$('reloadAfterResume')} /> 335 <Toggle field={form.$('reloadAfterResume')} />
339 <Toggle field={form.$('startMinimized')} /> 336 <Toggle field={form.$('startMinimized')} />
diff --git a/src/components/ui/FullscreenLoader/index.js b/src/components/ui/FullscreenLoader/index.js
index 97ab93dcf..2952cd96b 100644
--- a/src/components/ui/FullscreenLoader/index.js
+++ b/src/components/ui/FullscreenLoader/index.js
@@ -1,6 +1,6 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer, inject } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet, { withTheme } from 'react-jss'; 4import injectSheet, { withTheme } from 'react-jss';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6 6
@@ -8,7 +8,7 @@ import Loader from '../Loader';
8 8
9import styles from './styles'; 9import styles from './styles';
10 10
11export default @inject('stores') @withTheme @injectSheet(styles) @observer class FullscreenLoader extends Component { 11export default @withTheme @injectSheet(styles) @observer class FullscreenLoader extends Component {
12 static propTypes = { 12 static propTypes = {
13 className: PropTypes.string, 13 className: PropTypes.string,
14 title: PropTypes.string.isRequired, 14 title: PropTypes.string.isRequired,
@@ -16,16 +16,6 @@ export default @inject('stores') @withTheme @injectSheet(styles) @observer class
16 theme: PropTypes.object.isRequired, 16 theme: PropTypes.object.isRequired,
17 spinnerColor: PropTypes.string, 17 spinnerColor: PropTypes.string,
18 children: PropTypes.node, 18 children: PropTypes.node,
19 stores: PropTypes.shape({
20 app: PropTypes.shape({
21 accentColor: PropTypes.string.isRequired,
22 }).isRequired,
23 settings: PropTypes.shape({
24 app: PropTypes.shape({
25 accentColor: PropTypes.string.isRequired,
26 }).isRequired,
27 }).isRequired,
28 }).isRequired,
29 }; 19 };
30 20
31 static defaultProps = { 21 static defaultProps = {
@@ -42,16 +32,10 @@ export default @inject('stores') @withTheme @injectSheet(styles) @observer class
42 spinnerColor, 32 spinnerColor,
43 className, 33 className,
44 theme, 34 theme,
45 stores,
46 } = this.props; 35 } = this.props;
47 36
48 return ( 37 return (
49 <div 38 <div className={classes.wrapper}>
50 className={classes.wrapper}
51 style={{
52 background: stores.app.accentColor,
53 }}
54 >
55 <div 39 <div
56 className={classnames({ 40 className={classnames({
57 [`${classes.component}`]: true, 41 [`${classes.component}`]: true,
diff --git a/src/config.ts b/src/config.ts
index 835d130da..7bb2525a5 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -27,7 +27,8 @@ export const STATS_API = 'https://stats.franzinfra.com';
27 27
28export const LOCAL_TODOS_FRONTEND_URL = 'http://localhost:4000'; 28export const LOCAL_TODOS_FRONTEND_URL = 'http://localhost:4000';
29export const PRODUCTION_TODOS_FRONTEND_URL = 'https://app.franztodos.com'; 29export const PRODUCTION_TODOS_FRONTEND_URL = 'https://app.franztodos.com';
30export const DEVELOPMENT_TODOS_FRONTEND_URL = 'https://development--franz-todos.netlify.com'; 30export const DEVELOPMENT_TODOS_FRONTEND_URL =
31 'https://development--franz-todos.netlify.com';
31 32
32export const CDN_URL = 'https://cdn.franzinfra.com'; 33export const CDN_URL = 'https://cdn.franzinfra.com';
33 34
@@ -69,8 +70,10 @@ export const SEARCH_ENGINE_NAMES = {
69}; 70};
70 71
71export const SEARCH_ENGINE_URLS = { 72export const SEARCH_ENGINE_URLS = {
72 [SEARCH_ENGINE_GOOGLE]: ({ searchTerm }) => `https://www.google.com/search?q=${searchTerm}`, 73 [SEARCH_ENGINE_GOOGLE]: ({ searchTerm }) =>
73 [SEARCH_ENGINE_DDG]: ({ searchTerm }) => `https://duckduckgo.com/?q=${searchTerm}`, 74 `https://www.google.com/search?q=${searchTerm}`,
75 [SEARCH_ENGINE_DDG]: ({ searchTerm }) =>
76 `https://duckduckgo.com/?q=${searchTerm}`,
74}; 77};
75 78
76export const CUSTOM_TODO_SERVICE = 'isUsingCustomTodoService'; 79export const CUSTOM_TODO_SERVICE = 'isUsingCustomTodoService';
@@ -83,7 +86,8 @@ const TODO_HABITICA_URL = 'https://habitica.com/login';
83const TODO_NOZBE_URL = 'https://app.nozbe.com/#login'; 86const TODO_NOZBE_URL = 'https://app.nozbe.com/#login';
84const TODO_RTM_URL = 'https://www.rememberthemilk.com/login/'; 87const TODO_RTM_URL = 'https://www.rememberthemilk.com/login/';
85const TODO_ANYDO_URL = 'https://desktop.any.do/'; 88const TODO_ANYDO_URL = 'https://desktop.any.do/';
86const TODO_GOOGLETASKS_URL = 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1'; 89const TODO_GOOGLETASKS_URL =
90 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1';
87 91
88export const TODO_SERVICE_RECIPE_IDS = { 92export const TODO_SERVICE_RECIPE_IDS = {
89 [TODO_TODOIST_URL]: 'todoist', 93 [TODO_TODOIST_URL]: 'todoist',
@@ -108,7 +112,8 @@ export const TODO_APPS = {
108}; 112};
109 113
110export const DEFAULT_TODO_SERVICE = TODO_FRANZ_TODOS_URL; 114export const DEFAULT_TODO_SERVICE = TODO_FRANZ_TODOS_URL;
111export const DEFAULT_TODO_RECIPE_ID = TODO_SERVICE_RECIPE_IDS[DEFAULT_TODO_SERVICE]; 115export const DEFAULT_TODO_RECIPE_ID =
116 TODO_SERVICE_RECIPE_IDS[DEFAULT_TODO_SERVICE];
112export const DEFAULT_TODO_SERVICE_NAME = TODO_APPS[DEFAULT_TODO_SERVICE]; 117export const DEFAULT_TODO_SERVICE_NAME = TODO_APPS[DEFAULT_TODO_SERVICE];
113 118
114export const SIDEBAR_WIDTH = { 119export const SIDEBAR_WIDTH = {
@@ -135,7 +140,6 @@ export const iconSizeBias = 20;
135 140
136export const DEFAULT_FEATURES_CONFIG = { 141export const DEFAULT_FEATURES_CONFIG = {
137 isServiceProxyEnabled: true, 142 isServiceProxyEnabled: true,
138 isAnnouncementsEnabled: true,
139 isWorkspaceEnabled: true, 143 isWorkspaceEnabled: true,
140 isTodosEnabled: true, 144 isTodosEnabled: true,
141 isSettingsWSEnabled: false, 145 isSettingsWSEnabled: false,
@@ -158,20 +162,12 @@ export const GITHUB_ORG_NAME = 'getferdi';
158export const GITHUB_FERDI_REPO_NAME = 'ferdi'; 162export const GITHUB_FERDI_REPO_NAME = 'ferdi';
159export const GITHUB_NIGHTLIES_REPO_NAME = 'nightlies'; 163export const GITHUB_NIGHTLIES_REPO_NAME = 'nightlies';
160 164
161export const FILE_SYSTEM_SETTINGS_TYPES = [ 165export const FILE_SYSTEM_SETTINGS_TYPES = ['app', 'proxy'];
162 'app',
163 'proxy',
164];
165 166
166export const LOCAL_SERVER = 'You are using Ferdi without a server'; 167export const LOCAL_SERVER = 'You are using Ferdi without a server';
167export const SERVER_NOT_LOADED = 'Ferdi::SERVER_NOT_LOADED'; 168export const SERVER_NOT_LOADED = 'Ferdi::SERVER_NOT_LOADED';
168 169
169export const ALLOWED_PROTOCOLS = [ 170export const ALLOWED_PROTOCOLS = ['https:', 'http:', 'ftp:', 'ferdi:'];
170 'https:',
171 'http:',
172 'ftp:',
173 'ferdi:',
174];
175 171
176export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false; 172export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false;
177 173
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js
index f99a8a73f..a0d50ab54 100644
--- a/src/containers/auth/AuthLayoutContainer.js
+++ b/src/containers/auth/AuthLayoutContainer.js
@@ -14,7 +14,10 @@ import AppLoader from '../../components/ui/AppLoader';
14import { oneOrManyChildElements } from '../../prop-types'; 14import { oneOrManyChildElements } from '../../prop-types';
15import FeaturesStore from '../../stores/FeaturesStore'; 15import FeaturesStore from '../../stores/FeaturesStore';
16 16
17export default @inject('stores', 'actions') @observer class AuthLayoutContainer extends Component { 17export default
18@inject('stores', 'actions')
19@observer
20class AuthLayoutContainer extends Component {
18 static propTypes = { 21 static propTypes = {
19 children: oneOrManyChildElements.isRequired, 22 children: oneOrManyChildElements.isRequired,
20 location: PropTypes.shape({ 23 location: PropTypes.shape({
@@ -23,15 +26,12 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer
23 }; 26 };
24 27
25 render() { 28 render() {
26 const { 29 const { stores, actions, children, location } = this.props;
27 stores, actions, children, location, 30 const { app, features, globalError, user } = stores;
28 } = this.props;
29 const {
30 app, features, globalError, user,
31 } = stores;
32 31
33 const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting 32 const isLoadingBaseFeatures =
34 && !features.defaultFeaturesRequest.wasExecuted; 33 features.defaultFeaturesRequest.isExecuting &&
34 !features.defaultFeaturesRequest.wasExecuted;
35 35
36 if (isLoadingBaseFeatures) { 36 if (isLoadingBaseFeatures) {
37 return ( 37 return (
@@ -61,8 +61,9 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer
61 isHealthCheckLoading={app.healthCheckRequest.isExecuting} 61 isHealthCheckLoading={app.healthCheckRequest.isExecuting}
62 isFullScreen={app.isFullScreen} 62 isFullScreen={app.isFullScreen}
63 installAppUpdate={actions.app.installUpdate} 63 installAppUpdate={actions.app.installUpdate}
64 nextAppReleaseVersion={app.nextAppReleaseVersion} 64 appUpdateIsDownloaded={
65 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} 65 app.updateStatus === app.updateStatusTypes.DOWNLOADED
66 }
66 > 67 >
67 {children} 68 {children}
68 </AuthLayout> 69 </AuthLayout>
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 32b1f1cf7..83a25168b 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -25,7 +25,10 @@ import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawe
25import { workspaceStore } from '../../features/workspaces'; 25import { workspaceStore } from '../../features/workspaces';
26import WorkspacesStore from '../../features/workspaces/store'; 26import WorkspacesStore from '../../features/workspaces/store';
27 27
28export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { 28export default
29@inject('stores', 'actions')
30@observer
31class AppLayoutContainer extends Component {
29 static defaultProps = { 32 static defaultProps = {
30 children: null, 33 children: null,
31 }; 34 };
@@ -65,25 +68,25 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
65 68
66 const { retryRequiredRequests } = this.props.actions.requests; 69 const { retryRequiredRequests } = this.props.actions.requests;
67 70
68 const { 71 const { installUpdate, toggleMuteApp } = this.props.actions.app;
69 installUpdate,
70 toggleMuteApp,
71 } = this.props.actions.app;
72 72
73 const { 73 const { openSettings, closeSettings } = this.props.actions.ui;
74 openSettings,
75 closeSettings,
76 } = this.props.actions.ui;
77 74
78 const { children } = this.props; 75 const { children } = this.props;
79 76
80 const isLoadingFeatures = features.featuresRequest.isExecuting 77 const isLoadingFeatures =
81 && !features.featuresRequest.wasExecuted; 78 features.featuresRequest.isExecuting &&
79 !features.featuresRequest.wasExecuted;
82 80
83 const isLoadingServices = services.allServicesRequest.isExecuting 81 const isLoadingServices =
84 && services.allServicesRequest.isExecutingFirstTime; 82 services.allServicesRequest.isExecuting &&
83 services.allServicesRequest.isExecutingFirstTime;
85 84
86 if (isLoadingFeatures || isLoadingServices || workspaces.isLoadingWorkspaces) { 85 if (
86 isLoadingFeatures ||
87 isLoadingServices ||
88 workspaces.isLoadingWorkspaces
89 ) {
87 return ( 90 return (
88 <ThemeProvider theme={ui.theme}> 91 <ThemeProvider theme={ui.theme}>
89 <AppLoader /> 92 <AppLoader />
@@ -93,9 +96,11 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
93 96
94 const workspacesDrawer = ( 97 const workspacesDrawer = (
95 <WorkspaceDrawer 98 <WorkspaceDrawer
96 getServicesForWorkspace={(workspace) => ( 99 getServicesForWorkspace={workspace =>
97 workspace ? workspaceStore.getWorkspaceServices(workspace).map((s) => s.name) : services.all.map((s) => s.name) 100 (workspace
98 )} 101 ? workspaceStore.getWorkspaceServices(workspace).map(s => s.name)
102 : services.all.map(s => s.name))
103 }
99 /> 104 />
100 ); 105 );
101 106
@@ -118,7 +123,9 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
118 toggleMuteApp={toggleMuteApp} 123 toggleMuteApp={toggleMuteApp}
119 toggleWorkspaceDrawer={workspaceActions.toggleWorkspaceDrawer} 124 toggleWorkspaceDrawer={workspaceActions.toggleWorkspaceDrawer}
120 isWorkspaceDrawerOpen={workspaceStore.isWorkspaceDrawerOpen} 125 isWorkspaceDrawerOpen={workspaceStore.isWorkspaceDrawerOpen}
121 showMessageBadgeWhenMutedSetting={settings.all.app.showMessageBadgeWhenMuted} 126 showMessageBadgeWhenMutedSetting={
127 settings.all.app.showMessageBadgeWhenMuted
128 }
122 showMessageBadgesEvenWhenMuted={ui.showMessageBadgesEvenWhenMuted} 129 showMessageBadgesEvenWhenMuted={ui.showMessageBadgesEvenWhenMuted}
123 isTodosServiceActive={services.isTodosServiceActive || false} 130 isTodosServiceActive={services.isTodosServiceActive || false}
124 /> 131 />
@@ -145,8 +152,9 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
145 isFullScreen={app.isFullScreen} 152 isFullScreen={app.isFullScreen}
146 isOnline={app.isOnline} 153 isOnline={app.isOnline}
147 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} 154 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar}
148 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} 155 appUpdateIsDownloaded={
149 nextAppReleaseVersion={app.nextAppReleaseVersion} 156 app.updateStatus === app.updateStatusTypes.DOWNLOADED
157 }
150 authRequestFailed={app.authRequestFailed} 158 authRequestFailed={app.authRequestFailed}
151 sidebar={sidebar} 159 sidebar={sidebar}
152 workspacesDrawer={workspacesDrawer} 160 workspacesDrawer={workspacesDrawer}
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index d65d8d5d5..09244bc3c 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -45,6 +45,10 @@ const messages = defineMessages({
45 id: 'settings.app.form.startMinimized', 45 id: 'settings.app.form.startMinimized',
46 defaultMessage: '!!!Start minimized', 46 defaultMessage: '!!!Start minimized',
47 }, 47 },
48 confirmOnQuit: {
49 id: 'settings.app.form.confirmOnQuit',
50 defaultMessage: '!!!Confirm when quitting Ferdi',
51 },
48 enableSystemTray: { 52 enableSystemTray: {
49 id: 'settings.app.form.enableSystemTray', 53 id: 'settings.app.form.enableSystemTray',
50 defaultMessage: '!!!Always show Ferdi in System Tray', 54 defaultMessage: '!!!Always show Ferdi in System Tray',
@@ -239,78 +243,80 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
239 }); 243 });
240 244
241 app.launchOnStartup({ 245 app.launchOnStartup({
242 enable: settingsData.autoLaunchOnStart, 246 enable: Boolean(settingsData.autoLaunchOnStart),
243 openInBackground: settingsData.autoLaunchInBackground, 247 openInBackground: Boolean(settingsData.autoLaunchInBackground),
244 }); 248 });
245 249
246 debug(`Updating settings store with data: ${settingsData}`); 250 debug(`Updating settings store with data: ${settingsData}`);
247 251
248 settings.update({ 252 settings.update({
249 type: 'app', 253 type: 'app',
254 // TODO: The conversions might not be necessary once we convert to typescript
250 data: { 255 data: {
251 runInBackground: settingsData.runInBackground, 256 runInBackground: Boolean(settingsData.runInBackground),
252 enableSystemTray: settingsData.enableSystemTray, 257 enableSystemTray: Boolean(settingsData.enableSystemTray),
253 reloadAfterResume: settingsData.reloadAfterResume, 258 reloadAfterResume: Boolean(settingsData.reloadAfterResume),
254 startMinimized: settingsData.startMinimized, 259 startMinimized: Boolean(settingsData.startMinimized),
255 minimizeToSystemTray: settingsData.minimizeToSystemTray, 260 confirmOnQuit: Boolean(settingsData.confirmOnQuit),
256 closeToSystemTray: settingsData.closeToSystemTray, 261 minimizeToSystemTray: Boolean(settingsData.minimizeToSystemTray),
257 privateNotifications: settingsData.privateNotifications, 262 closeToSystemTray: Boolean(settingsData.closeToSystemTray),
258 clipboardNotifications: settingsData.clipboardNotifications, 263 privateNotifications: Boolean(settingsData.privateNotifications),
259 notifyTaskBarOnMessage: settingsData.notifyTaskBarOnMessage, 264 clipboardNotifications: Boolean(settingsData.clipboardNotifications),
265 notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage),
260 navigationBarBehaviour: settingsData.navigationBarBehaviour, 266 navigationBarBehaviour: settingsData.navigationBarBehaviour,
261 searchEngine: settingsData.searchEngine, 267 searchEngine: settingsData.searchEngine,
262 sentry: settingsData.sentry, 268 sentry: Boolean(settingsData.sentry),
263 hibernateOnStartup: settingsData.hibernateOnStartup, 269 hibernateOnStartup: Boolean(settingsData.hibernateOnStartup),
264 hibernationStrategy: settingsData.hibernationStrategy, 270 hibernationStrategy: Number(settingsData.hibernationStrategy),
265 wakeUpStrategy: settingsData.wakeUpStrategy, 271 wakeUpStrategy: Number(settingsData.wakeUpStrategy),
266 predefinedTodoServer: settingsData.predefinedTodoServer, 272 predefinedTodoServer: settingsData.predefinedTodoServer,
267 customTodoServer: settingsData.customTodoServer, 273 customTodoServer: settingsData.customTodoServer,
268 lockingFeatureEnabled: settingsData.lockingFeatureEnabled, 274 lockingFeatureEnabled: Boolean(settingsData.lockingFeatureEnabled),
269 lockedPassword: hash(String(settingsData.lockedPassword)), 275 lockedPassword: hash(String(settingsData.lockedPassword)),
270 useTouchIdToUnlock: settingsData.useTouchIdToUnlock, 276 useTouchIdToUnlock: Boolean(settingsData.useTouchIdToUnlock),
271 inactivityLock: settingsData.inactivityLock, 277 inactivityLock: Number(settingsData.inactivityLock),
272 scheduledDNDEnabled: settingsData.scheduledDNDEnabled, 278 scheduledDNDEnabled: Boolean(settingsData.scheduledDNDEnabled),
273 scheduledDNDStart: settingsData.scheduledDNDStart, 279 scheduledDNDStart: settingsData.scheduledDNDStart,
274 scheduledDNDEnd: settingsData.scheduledDNDEnd, 280 scheduledDNDEnd: settingsData.scheduledDNDEnd,
275 enableGPUAcceleration: settingsData.enableGPUAcceleration, 281 enableGPUAcceleration: Boolean(settingsData.enableGPUAcceleration),
276 showDisabledServices: settingsData.showDisabledServices, 282 showDisabledServices: Boolean(settingsData.showDisabledServices),
277 darkMode: settingsData.darkMode, 283 darkMode: Boolean(settingsData.darkMode),
278 adaptableDarkMode: settingsData.adaptableDarkMode, 284 adaptableDarkMode: Boolean(settingsData.adaptableDarkMode),
279 universalDarkMode: settingsData.universalDarkMode, 285 universalDarkMode: Boolean(settingsData.universalDarkMode),
280 serviceRibbonWidth: settingsData.serviceRibbonWidth, 286 serviceRibbonWidth: Number(settingsData.serviceRibbonWidth),
281 iconSize: settingsData.iconSize, 287 iconSize: Number(settingsData.iconSize),
282 useVerticalStyle: settingsData.useVerticalStyle, 288 useVerticalStyle: Boolean(settingsData.useVerticalStyle),
283 alwaysShowWorkspaces: settingsData.alwaysShowWorkspaces, 289 alwaysShowWorkspaces: Boolean(settingsData.alwaysShowWorkspaces),
284 accentColor: settingsData.accentColor, 290 accentColor: settingsData.accentColor,
285 showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, 291 showMessageBadgeWhenMuted: Boolean(settingsData.showMessageBadgeWhenMuted),
286 showDragArea: settingsData.showDragArea, 292 showDragArea: Boolean(settingsData.showDragArea),
287 enableSpellchecking: settingsData.enableSpellchecking, 293 enableSpellchecking: Boolean(settingsData.enableSpellchecking),
288 spellcheckerLanguage: settingsData.spellcheckerLanguage, 294 spellcheckerLanguage: settingsData.spellcheckerLanguage,
289 userAgentPref: settingsData.userAgentPref, 295 userAgentPref: settingsData.userAgentPref,
290 beta: settingsData.beta, // we need this info in the main process as well 296 beta: Boolean(settingsData.beta), // we need this info in the main process as well
291 automaticUpdates: settingsData.automaticUpdates, // we need this info in the main process as well 297 automaticUpdates: Boolean(settingsData.automaticUpdates), // we need this info in the main process as well
292 locale: settingsData.locale, // we need this info in the main process as well 298 locale: settingsData.locale, // we need this info in the main process as well
293 }, 299 },
294 }); 300 });
295 301
296 user.update({ 302 user.update({
297 userData: { 303 userData: {
298 automaticUpdates: settingsData.automaticUpdates, 304 automaticUpdates: Boolean(settingsData.automaticUpdates),
299 beta: settingsData.beta, 305 beta: Boolean(settingsData.beta),
300 locale: settingsData.locale, 306 locale: settingsData.locale,
301 }, 307 },
302 }); 308 });
303 309
304 if (workspaces.isFeatureActive) { 310 if (workspaces.isFeatureActive) {
305 const { keepAllWorkspacesLoaded } = workspaces.settings; 311 const { keepAllWorkspacesLoaded } = workspaces.settings;
306 if (keepAllWorkspacesLoaded !== settingsData.keepAllWorkspacesLoaded) { 312 if (Boolean(keepAllWorkspacesLoaded) !== Boolean(settingsData.keepAllWorkspacesLoaded)) {
307 workspaceActions.toggleKeepAllWorkspacesLoadedSetting(); 313 workspaceActions.toggleKeepAllWorkspacesLoadedSetting();
308 } 314 }
309 } 315 }
310 316
311 if (todos.isFeatureActive) { 317 if (todos.isFeatureActive) {
312 const { isFeatureEnabledByUser } = todos.settings; 318 const { isFeatureEnabledByUser } = todos.settings;
313 if (isFeatureEnabledByUser !== settingsData.enableTodos) { 319 if (Boolean(isFeatureEnabledByUser) !== Boolean(settingsData.enableTodos)) {
314 todosActions.toggleTodosFeatureVisibility(); 320 todosActions.toggleTodosFeatureVisibility();
315 } 321 }
316 } 322 }
@@ -389,6 +395,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
389 value: settings.all.app.startMinimized, 395 value: settings.all.app.startMinimized,
390 default: DEFAULT_APP_SETTINGS.startMinimized, 396 default: DEFAULT_APP_SETTINGS.startMinimized,
391 }, 397 },
398 confirmOnQuit: {
399 label: intl.formatMessage(messages.confirmOnQuit),
400 value: settings.all.app.confirmOnQuit,
401 default: DEFAULT_APP_SETTINGS.confirmOnQuit,
402 },
392 enableSystemTray: { 403 enableSystemTray: {
393 label: intl.formatMessage(isMac ? messages.enableMenuBar : messages.enableSystemTray), 404 label: intl.formatMessage(isMac ? messages.enableMenuBar : messages.enableSystemTray),
394 value: settings.all.app.enableSystemTray, 405 value: settings.all.app.enableSystemTray,
diff --git a/src/environment.js b/src/environment.js
index f8a51b207..caeada94b 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -124,6 +124,7 @@ export const DEFAULT_APP_SETTINGS = {
124 reloadAfterResume: true, 124 reloadAfterResume: true,
125 enableSystemTray: true, 125 enableSystemTray: true,
126 startMinimized: false, 126 startMinimized: false,
127 confirmOnQuit: false,
127 minimizeToSystemTray: false, 128 minimizeToSystemTray: false,
128 closeToSystemTray: false, 129 closeToSystemTray: false,
129 privateNotifications: false, 130 privateNotifications: false,
diff --git a/src/features/announcements/actions.js b/src/features/announcements/actions.js
deleted file mode 100644
index bab496314..000000000
--- a/src/features/announcements/actions.js
+++ /dev/null
@@ -1,10 +0,0 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../actions/lib/actions';
3
4export const announcementActions = createActionsFromDefinitions({
5 show: {
6 targetVersion: PropTypes.string,
7 },
8}, PropTypes.checkPropTypes);
9
10export default announcementActions;
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js
deleted file mode 100644
index 962f3e694..000000000
--- a/src/features/announcements/api.js
+++ /dev/null
@@ -1,35 +0,0 @@
1import Request from '../../stores/lib/Request';
2import apiBase from '../../api/apiBase';
3import { GITHUB_FERDI_REPO_NAME, GITHUB_NIGHTLIES_REPO_NAME, GITHUB_ORG_NAME } from '../../config';
4import { ferdiVersion } from '../../environment';
5
6const debug = require('debug')('Ferdi:feature:announcements:api');
7
8export const announcementsApi = {
9 async getCurrentVersion() {
10 debug('getting current version of electron app');
11 return Promise.resolve(ferdiVersion);
12 },
13
14 async getChangelog(version) {
15 const ferdiRepoName = version.includes('nightly') ? GITHUB_NIGHTLIES_REPO_NAME : GITHUB_FERDI_REPO_NAME;
16 const url = `https://api.github.com/repos/${GITHUB_ORG_NAME}/${ferdiRepoName}/releases/tags/v${version}`;
17 debug(`fetching release changelog from Github url: ${url}`);
18 const request = await window.fetch(url, { method: 'GET' });
19 if (!request.ok) return null;
20 const data = await request.json();
21 return data.body;
22 },
23
24 async getAnnouncement(version) {
25 const url = `${apiBase()}/announcements/${version}`;
26 debug(`fetching release announcement from api url: ${url}`);
27 const response = await window.fetch(url, { method: 'GET' });
28 if (!response.ok) return null;
29 return response.json();
30 },
31};
32
33export const getCurrentVersionRequest = new Request(announcementsApi, 'getCurrentVersion');
34export const getChangelogRequest = new Request(announcementsApi, 'getChangelog');
35export const getAnnouncementRequest = new Request(announcementsApi, 'getAnnouncement');
diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js
deleted file mode 100644
index 315843db3..000000000
--- a/src/features/announcements/components/AnnouncementScreen.js
+++ /dev/null
@@ -1,300 +0,0 @@
1import React, { Component } from 'react';
2import marked from 'marked';
3import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react';
5import { defineMessages, intlShape } from 'react-intl';
6import injectSheet from 'react-jss';
7import { Button } from '@meetfranz/forms';
8
9import { announcementsStore } from '../index';
10import UIStore from '../../../stores/UIStore';
11import AppStore from '../../../stores/AppStore';
12
13const renderer = new marked.Renderer();
14
15renderer.link = (href, title, text) => `<a target="_blank" href="${href}" title="${title}">${text}</a>`;
16
17const markedOptions = { sanitize: true, renderer };
18
19const messages = defineMessages({
20 headline: {
21 id: 'feature.announcements.changelog.headline',
22 defaultMessage: '!!!Changes in Ferdi {version}',
23 },
24});
25
26const smallScreen = '1000px';
27
28const styles = (theme) => ({
29 container: {
30 background: theme.colorBackground,
31 position: 'relative',
32 top: 0,
33 zIndex: 140,
34 width: '100%',
35 height: '100%',
36 overflowY: 'auto',
37 },
38 headline: {
39 color: theme.colorHeadline,
40 margin: [25, 0, 40],
41 // 'max-width': 500,
42 'text-align': 'center',
43 'line-height': '1.3em',
44 },
45 announcement: {
46 height: 'auto',
47
48 [`@media(min-width: ${smallScreen})`]: {
49 display: 'flex',
50 flexDirection: 'column',
51 justifyContent: 'center',
52 height: '100vh',
53 },
54 },
55 main: {
56 display: 'flex',
57 flexDirection: 'column',
58 flexGrow: 1,
59 justifyContent: 'center',
60
61 '& h1': {
62 margin: [40, 0, 15],
63 fontSize: 70,
64 color: theme.styleTypes.primary.accent,
65 textAlign: 'center',
66
67 [`@media(min-width: ${smallScreen})`]: {
68 marginTop: 0,
69 },
70 },
71 '& h2': {
72 fontSize: 30,
73 fontWeight: 300,
74 color: theme.colorText,
75 textAlign: 'center',
76 marginBottom: 60,
77 },
78 },
79 mainBody: {
80 display: 'flex',
81 flexDirection: 'column',
82 alignItems: 'center',
83 width: 'calc(100% - 80px)',
84 height: 'auto',
85 margin: '0 auto',
86 [`@media(min-width: ${smallScreen})`]: {
87 flexDirection: 'row',
88 justifyContent: 'center',
89 },
90 },
91 mainImage: {
92 minWidth: 250,
93 maxWidth: 400,
94 margin: '0 auto',
95 marginBottom: 40,
96 '& img': {
97 width: '100%',
98 },
99 [`@media(min-width: ${smallScreen})`]: {
100 margin: 0,
101 },
102 },
103 mainText: {
104 height: 'auto',
105 maxWidth: 600,
106 textAlign: 'center',
107 '& p': {
108 lineHeight: '1.5em',
109 },
110 [`@media(min-width: ${smallScreen})`]: {
111 textAlign: 'left',
112 },
113 },
114 mainCtaButton: {
115 textAlign: 'center',
116 marginTop: 40,
117 [`@media(min-width: ${smallScreen})`]: {
118 textAlign: 'left',
119 },
120 },
121 spotlight: {
122 height: 'auto',
123 background: theme.announcements.spotlight.background,
124 padding: [40, 0],
125 marginTop: 80,
126 [`@media(min-width: ${smallScreen})`]: {
127 marginTop: 0,
128 justifyContent: 'center',
129 alignItems: 'flex-start',
130 display: 'flex',
131 flexDirection: 'row',
132 },
133 },
134 spotlightTopicContainer: {
135 textAlign: 'center',
136 marginBottom: 20,
137
138 [`@media(min-width: ${smallScreen})`]: {
139 marginBottom: 0,
140 minWidth: 250,
141 maxWidth: 330,
142 width: '100%',
143 textAlign: 'right',
144 marginRight: 60,
145 },
146 },
147 spotlightContentContainer: {
148 textAlign: 'center',
149 [`@media(min-width: ${smallScreen})`]: {
150 height: 'auto',
151 maxWidth: 600,
152 paddingRight: 40,
153 textAlign: 'left',
154 },
155 '& p': {
156 lineHeight: '1.5em',
157 },
158 },
159 spotlightTopic: {
160 fontSize: 20,
161 marginBottom: 5,
162 letterSpacing: 0,
163 fontWeight: 100,
164 },
165 spotlightSubject: {
166 fontSize: 20,
167 },
168 changelog: {
169 padding: [0, 60],
170 maxWidth: 700,
171 margin: [100, 'auto'],
172 height: 'auto',
173
174 '& h3': {
175 fontSize: '24px',
176 margin: '1.5em 0 1em 0',
177 },
178 '& li': {
179 marginBottom: '1em',
180 lineHeight: '1.4em',
181 },
182 '& div': {
183 height: 'auto',
184 },
185 },
186});
187
188@inject('stores', 'actions') @injectSheet(styles) @observer
189class AnnouncementScreen extends Component {
190 static propTypes = {
191 classes: PropTypes.object.isRequired,
192 stores: PropTypes.shape({
193 ui: PropTypes.instanceOf(UIStore).isRequired,
194 }).isRequired,
195 actions: PropTypes.shape({
196 app: PropTypes.instanceOf(AppStore).isRequired,
197 }).isRequired,
198 };
199
200 static contextTypes = {
201 intl: intlShape,
202 };
203
204 render() {
205 const { classes, stores, actions } = this.props;
206 const { intl } = this.context;
207 const { changelog, announcement } = announcementsStore;
208 const themeImage = stores.ui.isDarkThemeActive ? 'dark' : 'light';
209 return (
210 <div className={classes.container}>
211 {announcement && (
212 <div className={classes.announcement}>
213 <div className={classes.main}>
214 <h1>{announcement.main.headline}</h1>
215 <h2>{announcement.main.subHeadline}</h2>
216 <div className={classes.mainBody}>
217 <div className={classes.mainImage}>
218 <img
219 src={announcement.main.image[themeImage]}
220 alt=""
221 />
222 </div>
223 <div className={classes.mainText}>
224 <div
225 dangerouslySetInnerHTML={{
226 __html: marked(announcement.main.text, markedOptions),
227 }}
228 />
229 {(announcement.main.cta.label || announcement.main.cta.href) && (
230 <div className={classes.mainCtaButton}>
231 <Button
232 label={announcement.main.cta.label}
233 onClick={() => {
234 const {
235 href,
236 } = announcement.main.cta;
237 if (announcement.main.cta.href.startsWith('http')) {
238 actions.app.openExternalUrl({ url: href });
239 } else {
240 window.location.href = `#${href}`;
241 }
242 }}
243 />
244 </div>
245 )}
246 </div>
247 </div>
248 </div>
249 {announcement.spotlight && (
250 <div className={classes.spotlight}>
251 <div className={classes.spotlightTopicContainer}>
252 <h2 className={classes.spotlightTopic}>{announcement.spotlight.title}</h2>
253 <h3 className={classes.spotlightSubject}>{announcement.spotlight.subject}</h3>
254 </div>
255 <div className={classes.spotlightContentContainer}>
256 <div
257 dangerouslySetInnerHTML={{
258 __html: marked(announcement.spotlight.text, markedOptions),
259 }}
260 />
261 <div className={classes.mainCtaButton}>
262 <Button
263 label={announcement.spotlight.cta.label}
264 onClick={() => {
265 const {
266 href,
267 } = announcement.spotlight.cta;
268 if (announcement.spotlight.cta.href.startsWith('http')) {
269 actions.app.openExternalUrl({ url: href });
270 } else {
271 window.location.href = `#${href}`;
272 }
273 }}
274 />
275 </div>
276 </div>
277 </div>
278 )}
279 </div>
280 )}
281 {changelog && (
282 <div className={classes.changelog}>
283 <h1 className={classes.headline}>
284 {intl.formatMessage(messages.headline, {
285 version: announcementsStore.targetVersion,
286 })}
287 </h1>
288 <div
289 dangerouslySetInnerHTML={{
290 __html: marked(changelog, markedOptions),
291 }}
292 />
293 </div>
294 )}
295 </div>
296 );
297 }
298}
299
300export default AnnouncementScreen;
diff --git a/src/features/announcements/constants.js b/src/features/announcements/constants.js
deleted file mode 100644
index 284226fdf..000000000
--- a/src/features/announcements/constants.js
+++ /dev/null
@@ -1,5 +0,0 @@
1export const ANNOUNCEMENTS_ROUTES = {
2 TARGET: '/announcements/:id',
3};
4
5export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements';
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js
deleted file mode 100644
index 19930c5b1..000000000
--- a/src/features/announcements/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
1import { reaction } from 'mobx';
2import { AnnouncementsStore } from './store';
3
4const debug = require('debug')('Ferdi:feature:announcements');
5
6export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements';
7
8export const announcementsStore = new AnnouncementsStore();
9
10export default function initAnnouncements(stores, actions) {
11 const { features } = stores;
12
13 // Toggle announcement feature
14 reaction(
15 () => (
16 features.features.isAnnouncementsEnabled
17 ),
18 (isEnabled) => {
19 if (isEnabled) {
20 debug('Initializing `announcements` feature');
21 announcementsStore.start(stores, actions);
22 } else if (announcementsStore.isFeatureActive) {
23 debug('Disabling `announcements` feature');
24 announcementsStore.stop();
25 }
26 },
27 { fireImmediately: true },
28 );
29}
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js
deleted file mode 100644
index 794d20142..000000000
--- a/src/features/announcements/store.js
+++ /dev/null
@@ -1,148 +0,0 @@
1import {
2 action,
3 computed,
4 observable,
5} from 'mobx';
6import semver from 'semver';
7import localStorage from 'mobx-localstorage';
8
9import { FeatureStore } from '../utils/FeatureStore';
10import { ANNOUNCEMENTS_ROUTES } from './constants';
11import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api';
12import { announcementActions } from './actions';
13import { createActionBindings } from '../utils/ActionBinding';
14import { createReactions } from '../../stores/lib/Reaction';
15import { matchRoute } from '../../helpers/routing-helpers';
16import { DEFAULT_APP_SETTINGS } from '../../environment';
17
18const LOCAL_STORAGE_KEY = 'announcements';
19
20const debug = require('debug')('Ferdi:feature:announcements:store');
21
22export class AnnouncementsStore extends FeatureStore {
23 @observable targetVersion = null;
24
25 @observable isFeatureActive = false;
26
27 @computed get changelog() {
28 return getChangelogRequest.result;
29 }
30
31 @computed get announcement() {
32 if (!this.stores || !getAnnouncementRequest.result) return null;
33 const { locale } = this.stores.app;
34 const announcement = getAnnouncementRequest.result;
35 // User locale
36 if (announcement[locale]) return announcement[locale];
37 // Default locale
38 if (announcement[DEFAULT_APP_SETTINGS.fallbackLocale]) return announcement[DEFAULT_APP_SETTINGS.fallbackLocale];
39 // No locales specified
40 return announcement;
41 }
42
43 @computed get areNewsAvailable() {
44 const isChangelogAvailable = getChangelogRequest.wasExecuted && !!this.changelog;
45 const isAnnouncementAvailable = getAnnouncementRequest.wasExecuted && !!this.announcement;
46 return isChangelogAvailable || isAnnouncementAvailable;
47 }
48
49 @computed get settings() {
50 return localStorage.getItem(LOCAL_STORAGE_KEY) || {};
51 }
52
53 @computed get lastSeenAnnouncementVersion() {
54 return this.settings.lastSeenAnnouncementVersion || null;
55 }
56
57 @computed get currentVersion() {
58 return getCurrentVersionRequest.result;
59 }
60
61 @computed get isNewUser() {
62 return this.stores.settings.stats.appStarts <= 1;
63 }
64
65 @computed get isAnnouncementShown() {
66 const { router } = this.stores;
67 return router.location.pathname.includes('/announcements');
68 }
69
70 async start(stores, actions) {
71 debug('AnnouncementsStore::start');
72 this.stores = stores;
73 this.actions = actions;
74 getCurrentVersionRequest.execute();
75
76 this._registerActions(createActionBindings([
77 [announcementActions.show, this._showAnnouncement],
78 ]));
79
80 this._reactions = createReactions([
81 this._showAnnouncementOnRouteMatch,
82 this._showAnnouncementToUsersWhoUpdatedApp,
83 this._fetchAnnouncements,
84 ]);
85 this._registerReactions(this._reactions);
86 this.isFeatureActive = true;
87 }
88
89 stop() {
90 super.stop();
91 debug('AnnouncementsStore::stop');
92 this.isFeatureActive = false;
93 }
94
95 // ======= HELPERS ======= //
96
97 _updateSettings = (changes) => {
98 localStorage.setItem(LOCAL_STORAGE_KEY, {
99 ...this.settings,
100 ...changes,
101 });
102 };
103
104 // ======= ACTIONS ======= //
105
106 @action _showAnnouncement = ({ targetVersion } = {}) => {
107 const { router } = this.stores;
108 this.targetVersion = targetVersion || this.currentVersion;
109 this._updateSettings({
110 lastSeenAnnouncementVersion: this.currentVersion,
111 });
112 const targetRoute = `/announcements/${this.targetVersion}`;
113 if (router.location.pathname !== targetRoute) {
114 this.stores.router.push(targetRoute);
115 }
116 };
117
118 // ======= REACTIONS ========
119
120 _showAnnouncementToUsersWhoUpdatedApp = () => {
121 const { announcement, isNewUser } = this;
122 // Check if there is an announcement and don't show announcements to new users
123 if (!announcement || isNewUser) return;
124
125 // Check if the user has already used current version (= has seen the announcement)
126 const { currentVersion, lastSeenAnnouncementVersion } = this;
127 if (semver.gt(currentVersion, lastSeenAnnouncementVersion || '0.0.0')) {
128 debug(`${currentVersion} > ${lastSeenAnnouncementVersion}: announcement is shown`);
129 this._showAnnouncement();
130 }
131 };
132
133 _fetchAnnouncements = () => {
134 const targetVersion = this.targetVersion || this.currentVersion;
135 if (!targetVersion) return;
136 getChangelogRequest.reset().execute(targetVersion);
137 getAnnouncementRequest.reset().execute(targetVersion);
138 };
139
140 _showAnnouncementOnRouteMatch = () => {
141 const { router } = this.stores;
142 const match = matchRoute(ANNOUNCEMENTS_ROUTES.TARGET, router.location.pathname);
143 if (match) {
144 const targetVersion = match.id;
145 this._showAnnouncement({ targetVersion });
146 }
147 }
148}
diff --git a/src/features/appearance/index.js b/src/features/appearance/index.js
index c3425ba9c..3aab2fcad 100644
--- a/src/features/appearance/index.js
+++ b/src/features/appearance/index.js
@@ -122,7 +122,7 @@ function generateShowDragAreaStyle(accentColor) {
122 background-color: ${accentColor}; 122 background-color: ${accentColor};
123 } 123 }
124 #root { 124 #root {
125 /** Remove 22px from app height, otherwise the page will be to high */ 125 /** Remove 22px from app height, otherwise the page will be too high */
126 height: calc(100% - 22px); 126 height: calc(100% - 22px);
127 } 127 }
128 `; 128 `;
@@ -139,11 +139,12 @@ function generateVerticalStyle(widthStr, alwaysShowWorkspaces) {
139 document.head.appendChild(link); 139 document.head.appendChild(link);
140 } 140 }
141 const width = Number(widthStr); 141 const width = Number(widthStr);
142 const sidebarWidthStr = `${width - 4}px`; 142 const sidebarWidth = width - 4;
143 const verticalStyleOffset = 23;
143 144
144 return ` 145 return `
145 .sidebar { 146 .sidebar {
146 height: ${sidebarWidthStr} !important; 147 height: ${sidebarWidth + verticalStyleOffset + 1}px !important;
147 ${alwaysShowWorkspaces ? ` 148 ${alwaysShowWorkspaces ? `
148 width: calc(100% - 300px) !important; 149 width: calc(100% - 300px) !important;
149 ` : ''} 150 ` : ''}
@@ -154,11 +155,11 @@ function generateVerticalStyle(widthStr, alwaysShowWorkspaces) {
154 } 155 }
155 156
156 .app .app__content { 157 .app .app__content {
157 padding-top: ${sidebarWidthStr} !important; 158 padding-top: ${sidebarWidth + verticalStyleOffset + 1}px !important;
158 } 159 }
159 160
160 .workspaces-drawer { 161 .workspaces-drawer {
161 maring-top: -${sidebarWidthStr} !important; 162 margin-top: -${sidebarWidth - verticalStyleOffset - 1}px !important;
162 } 163 }
163 164
164 .todos__todos-panel--expanded { 165 .todos__todos-panel--expanded {
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js
index 14184f80b..a9601836b 100644
--- a/src/features/basicAuth/Component.js
+++ b/src/features/basicAuth/Component.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import injectSheet from 'react-jss'; 3import injectSheet from 'react-jss';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import { defineMessages, intlShape } from 'react-intl';
5import classnames from 'classnames'; 6import classnames from 'classnames';
6 7
7import Modal from '../../components/ui/Modal'; 8import Modal from '../../components/ui/Modal';
@@ -17,12 +18,24 @@ import {
17import Form from './Form'; 18import Form from './Form';
18 19
19import styles from './styles'; 20import styles from './styles';
21import globalMessages from '../../i18n/globalMessages';
22
23const messages = defineMessages({
24 signIn: {
25 id: 'feature.basicAuth.signIn',
26 defaultMessage: '!!!Sign In',
27 },
28});
20 29
21export default @injectSheet(styles) @observer class BasicAuthModal extends Component { 30export default @injectSheet(styles) @observer class BasicAuthModal extends Component {
22 static propTypes = { 31 static propTypes = {
23 classes: PropTypes.object.isRequired, 32 classes: PropTypes.object.isRequired,
24 } 33 }
25 34
35 static contextTypes = {
36 intl: intlShape,
37 };
38
26 submit(e) { 39 submit(e) {
27 e.preventDefault(); 40 e.preventDefault();
28 41
@@ -56,6 +69,8 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo
56 return null; 69 return null;
57 } 70 }
58 71
72 const { intl } = this.context;
73
59 return ( 74 return (
60 <Modal 75 <Modal
61 isOpen={isModalVisible} 76 isOpen={isModalVisible}
@@ -63,7 +78,7 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo
63 close={this.cancel.bind(this)} 78 close={this.cancel.bind(this)}
64 showClose={false} 79 showClose={false}
65 > 80 >
66 <h1>Sign in</h1> 81 <h1>{intl.formatMessage(messages.signIn)}</h1>
67 <p> 82 <p>
68 http 83 http
69 {authInfo.port === 443 && 's'} 84 {authInfo.port === 443 && 's'}
@@ -86,13 +101,13 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo
86 <div className={classes.buttons}> 101 <div className={classes.buttons}>
87 <Button 102 <Button
88 type="button" 103 type="button"
89 label="Cancel" 104 label={intl.formatMessage(globalMessages.cancel)}
90 buttonType="secondary" 105 buttonType="secondary"
91 onClick={this.cancel.bind(this)} 106 onClick={this.cancel.bind(this)}
92 /> 107 />
93 <Button 108 <Button
94 type="submit" 109 type="submit"
95 label="Sign In" 110 label={intl.formatMessage(messages.signIn)}
96 /> 111 />
97 </div> 112 </div>
98 </form> 113 </form>
diff --git a/src/features/nightlyBuilds/Component.js b/src/features/nightlyBuilds/Component.js
index 6e5941948..e43287db5 100644
--- a/src/features/nightlyBuilds/Component.js
+++ b/src/features/nightlyBuilds/Component.js
@@ -11,6 +11,7 @@ import { state as ModalState } from './store';
11import SettingsStore from '../../stores/SettingsStore'; 11import SettingsStore from '../../stores/SettingsStore';
12import UIStore from '../../stores/UIStore'; 12import UIStore from '../../stores/UIStore';
13import UserStore from '../../stores/UserStore'; 13import UserStore from '../../stores/UserStore';
14import globalMessages from '../../i18n/globalMessages';
14 15
15const messages = defineMessages({ 16const messages = defineMessages({
16 title: { 17 title: {
@@ -25,10 +26,6 @@ const messages = defineMessages({
25 id: 'feature.nightlyBuilds.activate', 26 id: 'feature.nightlyBuilds.activate',
26 defaultMessage: '!!!Activate', 27 defaultMessage: '!!!Activate',
27 }, 28 },
28 cancel: {
29 id: 'feature.nightlyBuilds.cancel',
30 defaultMessage: '!!!Cancel',
31 },
32}); 29});
33 30
34const styles = () => ({ 31const styles = () => ({
@@ -114,7 +111,7 @@ export default @injectSheet(styles) @inject('stores', 'actions') @observer class
114 /> 111 />
115 <Button 112 <Button
116 type="button" 113 type="button"
117 label={intl.formatMessage(messages.cancel)} 114 label={intl.formatMessage(globalMessages.cancel)}
118 className={classes.button} 115 className={classes.button}
119 onClick={() => this.close()} 116 onClick={() => this.close()}
120 /> 117 />
diff --git a/src/features/todos/index.js b/src/features/todos/index.js
index 55956d1d7..573190881 100644
--- a/src/features/todos/index.js
+++ b/src/features/todos/index.js
@@ -3,8 +3,6 @@ import TodoStore from './store';
3 3
4const debug = require('debug')('Ferdi:feature:todos'); 4const debug = require('debug')('Ferdi:feature:todos');
5 5
6export const GA_CATEGORY_TODOS = 'Todos';
7
8export const todosStore = new TodoStore(); 6export const todosStore = new TodoStore();
9 7
10export default function initTodos(stores, actions) { 8export default function initTodos(stores, actions) {
diff --git a/src/features/todos/store.js b/src/features/todos/store.js
index f283c1e59..ec06c279d 100644
--- a/src/features/todos/store.js
+++ b/src/features/todos/store.js
@@ -1,9 +1,5 @@
1import { ThemeType } from '@meetfranz/theme'; 1import { ThemeType } from '@meetfranz/theme';
2import { 2import { computed, action, observable } from 'mobx';
3 computed,
4 action,
5 observable,
6} from 'mobx';
7import localStorage from 'mobx-localstorage'; 3import localStorage from 'mobx-localstorage';
8 4
9import { todoActions } from './actions'; 5import { todoActions } from './actions';
@@ -44,12 +40,13 @@ export default class TodoStore extends FeatureStore {
44 } 40 }
45 41
46 @computed get isTodosPanelForceHidden() { 42 @computed get isTodosPanelForceHidden() {
47 const { isAnnouncementShown } = this.stores.announcements; 43 return !this.isFeatureEnabledByUser;
48 return !this.isFeatureEnabledByUser || isAnnouncementShown;
49 } 44 }
50 45
51 @computed get isTodosPanelVisible() { 46 @computed get isTodosPanelVisible() {
52 if (this.settings.isTodosPanelVisible === undefined) return DEFAULT_TODOS_VISIBLE; 47 if (this.settings.isTodosPanelVisible === undefined) {
48 return DEFAULT_TODOS_VISIBLE;
49 }
53 return this.settings.isTodosPanelVisible; 50 return this.settings.isTodosPanelVisible;
54 } 51 }
55 52
@@ -66,7 +63,10 @@ export default class TodoStore extends FeatureStore {
66 } 63 }
67 64
68 @computed get isUsingPredefinedTodoServer() { 65 @computed get isUsingPredefinedTodoServer() {
69 return this.stores && this.stores.settings.app.predefinedTodoServer !== CUSTOM_TODO_SERVICE; 66 return (
67 this.stores &&
68 this.stores.settings.app.predefinedTodoServer !== CUSTOM_TODO_SERVICE
69 );
70 } 70 }
71 71
72 @computed get todoUrl() { 72 @computed get todoUrl() {
@@ -79,12 +79,17 @@ export default class TodoStore extends FeatureStore {
79 } 79 }
80 80
81 @computed get isTodoUrlValid() { 81 @computed get isTodoUrlValid() {
82 return !this.isUsingPredefinedTodoServer || isValidExternalURL(this.todoUrl); 82 return (
83 !this.isUsingPredefinedTodoServer || isValidExternalURL(this.todoUrl)
84 );
83 } 85 }
84 86
85 @computed get todoRecipeId() { 87 @computed get todoRecipeId() {
86 if (this.isFeatureEnabledByUser && this.isUsingPredefinedTodoServer 88 if (
87 && this.todoUrl in TODO_SERVICE_RECIPE_IDS) { 89 this.isFeatureEnabledByUser &&
90 this.isUsingPredefinedTodoServer &&
91 this.todoUrl in TODO_SERVICE_RECIPE_IDS
92 ) {
88 return TODO_SERVICE_RECIPE_IDS[this.todoUrl]; 93 return TODO_SERVICE_RECIPE_IDS[this.todoUrl];
89 } 94 }
90 return null; 95 return null;
@@ -99,16 +104,21 @@ export default class TodoStore extends FeatureStore {
99 104
100 // ACTIONS 105 // ACTIONS
101 106
102 this._registerActions(createActionBindings([ 107 this._registerActions(
103 [todoActions.resize, this._resize], 108 createActionBindings([
104 [todoActions.toggleTodosPanel, this._toggleTodosPanel], 109 [todoActions.resize, this._resize],
105 [todoActions.setTodosWebview, this._setTodosWebview], 110 [todoActions.toggleTodosPanel, this._toggleTodosPanel],
106 [todoActions.handleHostMessage, this._handleHostMessage], 111 [todoActions.setTodosWebview, this._setTodosWebview],
107 [todoActions.handleClientMessage, this._handleClientMessage], 112 [todoActions.handleHostMessage, this._handleHostMessage],
108 [todoActions.toggleTodosFeatureVisibility, this._toggleTodosFeatureVisibility], 113 [todoActions.handleClientMessage, this._handleClientMessage],
109 [todoActions.openDevTools, this._openDevTools], 114 [
110 [todoActions.reload, this._reload], 115 todoActions.toggleTodosFeatureVisibility,
111 ])); 116 this._toggleTodosFeatureVisibility,
117 ],
118 [todoActions.openDevTools, this._openDevTools],
119 [todoActions.reload, this._reload],
120 ]),
121 );
112 122
113 // REACTIONS 123 // REACTIONS
114 124
@@ -133,7 +143,7 @@ export default class TodoStore extends FeatureStore {
133 143
134 // ========== PRIVATE METHODS ========= // 144 // ========== PRIVATE METHODS ========= //
135 145
136 _updateSettings = (changes) => { 146 _updateSettings = changes => {
137 localStorage.setItem('todos', { 147 localStorage.setItem('todos', {
138 ...this.settings, 148 ...this.settings,
139 ...changes, 149 ...changes,
@@ -162,7 +172,7 @@ export default class TodoStore extends FeatureStore {
162 } 172 }
163 }; 173 };
164 174
165 @action _handleHostMessage = (message) => { 175 @action _handleHostMessage = message => {
166 debug('_handleHostMessage', message); 176 debug('_handleHostMessage', message);
167 if (message.action === 'todos:create') { 177 if (message.action === 'todos:create') {
168 this.webview.send(IPC.TODOS_HOST_CHANNEL, message); 178 this.webview.send(IPC.TODOS_HOST_CHANNEL, message);
@@ -172,11 +182,18 @@ export default class TodoStore extends FeatureStore {
172 @action _handleClientMessage = ({ channel, message = {} }) => { 182 @action _handleClientMessage = ({ channel, message = {} }) => {
173 debug('_handleClientMessage', channel, message); 183 debug('_handleClientMessage', channel, message);
174 switch (message.action) { 184 switch (message.action) {
175 case 'todos:initialized': this._onTodosClientInitialized(); break; 185 case 'todos:initialized':
176 case 'todos:goToService': this._goToService(message.data); break; 186 this._onTodosClientInitialized();
187 break;
188 case 'todos:goToService':
189 this._goToService(message.data);
190 break;
177 default: 191 default:
178 debug('Other message received', channel, message); 192 debug('Other message received', channel, message);
179 console.log('this.stores.services.isTodosServiceAdded', this.stores.services.isTodosServiceAdded); 193 console.log(
194 'this.stores.services.isTodosServiceAdded',
195 this.stores.services.isTodosServiceAdded,
196 );
180 if (this.stores.services.isTodosServiceAdded) { 197 if (this.stores.services.isTodosServiceAdded) {
181 this.actions.service.handleIPCMessage({ 198 this.actions.service.handleIPCMessage({
182 serviceId: this.stores.services.isTodosServiceAdded.id, 199 serviceId: this.stores.services.isTodosServiceAdded.id,
@@ -189,7 +206,7 @@ export default class TodoStore extends FeatureStore {
189 206
190 _handleNewWindowEvent = ({ url }) => { 207 _handleNewWindowEvent = ({ url }) => {
191 this.actions.app.openExternalUrl({ url }); 208 this.actions.app.openExternalUrl({ url });
192 } 209 };
193 210
194 @action _toggleTodosFeatureVisibility = () => { 211 @action _toggleTodosFeatureVisibility = () => {
195 debug('_toggleTodosFeatureVisibility'); 212 debug('_toggleTodosFeatureVisibility');
@@ -204,14 +221,14 @@ export default class TodoStore extends FeatureStore {
204 221
205 const webview = document.querySelector('#todos-panel webview'); 222 const webview = document.querySelector('#todos-panel webview');
206 if (webview) webview.openDevTools(); 223 if (webview) webview.openDevTools();
207 } 224 };
208 225
209 _reload = () => { 226 _reload = () => {
210 debug('_reload'); 227 debug('_reload');
211 228
212 const webview = document.querySelector('#todos-panel webview'); 229 const webview = document.querySelector('#todos-panel webview');
213 if (webview) webview.reload(); 230 if (webview) webview.reload();
214 } 231 };
215 232
216 // Todos client message handlers 233 // Todos client message handlers
217 234
@@ -291,5 +308,5 @@ export default class TodoStore extends FeatureStore {
291 }); 308 });
292 } 309 }
293 } 310 }
294 } 311 };
295} 312}
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
index 8319d3bc6..5f34204f1 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.js
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -20,7 +20,7 @@ const messages = defineMessages({
20 }, 20 },
21 noServicesAdded: { 21 noServicesAdded: {
22 id: 'settings.workspaces.noWorkspacesAdded', 22 id: 'settings.workspaces.noWorkspacesAdded',
23 defaultMessage: '!!!You haven\'t created any workspaces yet.', 23 defaultMessage: "!!!You haven't created any workspaces yet.",
24 }, 24 },
25 workspacesRequestFailed: { 25 workspacesRequestFailed: {
26 id: 'settings.workspaces.workspacesRequestFailed', 26 id: 'settings.workspaces.workspacesRequestFailed',
@@ -61,9 +61,6 @@ const styles = () => ({
61 appear: { 61 appear: {
62 height: 'auto', 62 height: 'auto',
63 }, 63 },
64 announcementHeadline: {
65 marginBottom: 0,
66 },
67 teaserImage: { 64 teaserImage: {
68 width: 250, 65 width: 250,
69 margin: [-8, 0, 0, 20], 66 margin: [-8, 0, 0, 20],
@@ -71,7 +68,9 @@ const styles = () => ({
71 }, 68 },
72}); 69});
73 70
74@inject('stores') @injectSheet(styles) @observer 71@inject('stores')
72@injectSheet(styles)
73@observer
75class WorkspacesDashboard extends Component { 74class WorkspacesDashboard extends Component {
76 static propTypes = { 75 static propTypes = {
77 classes: PropTypes.object.isRequired, 76 classes: PropTypes.object.isRequired,
@@ -108,7 +107,6 @@ class WorkspacesDashboard extends Component {
108 <h1>{intl.formatMessage(messages.headline)}</h1> 107 <h1>{intl.formatMessage(messages.headline)}</h1>
109 </div> 108 </div>
110 <div className="settings__body"> 109 <div className="settings__body">
111
112 {/* ===== Workspace updated info ===== */} 110 {/* ===== Workspace updated info ===== */}
113 {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && ( 111 {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && (
114 <Appear className={classes.appear}> 112 <Appear className={classes.appear}>
@@ -175,11 +173,11 @@ class WorkspacesDashboard extends Component {
175 <table className={classes.table}> 173 <table className={classes.table}>
176 {/* ===== Workspaces list ===== */} 174 {/* ===== Workspaces list ===== */}
177 <tbody> 175 <tbody>
178 {workspaces.map((workspace) => ( 176 {workspaces.map(workspace => (
179 <WorkspaceItem 177 <WorkspaceItem
180 key={workspace.id} 178 key={workspace.id}
181 workspace={workspace} 179 workspace={workspace}
182 onItemClick={(w) => onWorkspaceClick(w)} 180 onItemClick={w => onWorkspaceClick(w)}
183 /> 181 />
184 ))} 182 ))}
185 </tbody> 183 </tbody>
diff --git a/src/features/workspaces/constants.js b/src/features/workspaces/constants.js
index 413afa1e8..2d1416ee0 100644
--- a/src/features/workspaces/constants.js
+++ b/src/features/workspaces/constants.js
@@ -2,5 +2,3 @@ export const WORKSPACES_ROUTES = {
2 ROOT: '/settings/workspaces', 2 ROOT: '/settings/workspaces',
3 EDIT: '/settings/workspaces/:action/:id', 3 EDIT: '/settings/workspaces/:action/:id',
4}; 4};
5
6export const GA_CATEGORY_WORKSPACES = 'Workspaces';
diff --git a/src/features/workspaces/models/Workspace.js b/src/features/workspaces/models/Workspace.js
index 11ee377cd..d9488e991 100644
--- a/src/features/workspaces/models/Workspace.js
+++ b/src/features/workspaces/models/Workspace.js
@@ -23,7 +23,7 @@ export default class Workspace {
23 this.order = data.order; 23 this.order = data.order;
24 24
25 let { services } = data; 25 let { services } = data;
26 if (data.saving && data.keepLoaded) { 26 if (data.saving && Boolean(data.keepLoaded)) {
27 // Keep workspaces loaded 27 // Keep workspaces loaded
28 services.push(KEEP_WS_LOADED_USID); 28 services.push(KEEP_WS_LOADED_USID);
29 } else if (data.saving && data.services.includes(KEEP_WS_LOADED_USID)) { 29 } else if (data.saving && data.services.includes(KEEP_WS_LOADED_USID)) {
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js
index cc219957a..66fce8d0f 100644
--- a/src/i18n/globalMessages.js
+++ b/src/i18n/globalMessages.js
@@ -33,4 +33,45 @@ export default defineMessages({
33 id: 'global.userAgentHelp', 33 id: 'global.userAgentHelp',
34 defaultMessage: "!!!Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 34 defaultMessage: "!!!Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
35 }, 35 },
36 yes: {
37 id: 'global.yes',
38 defaultMessage: '!!!Yes',
39 },
40 no: {
41 id: 'global.no',
42 defaultMessage: '!!!No',
43 },
44 ok: {
45 id: 'global.ok',
46 defaultMessage: '!!!Ok',
47 },
48 cancel: {
49 id: 'global.cancel',
50 defaultMessage: '!!!Cancel',
51 },
52 save: {
53 id: 'global.save',
54 defaultMessage: '!!!Save',
55 },
56 submit: {
57 id: 'global.submit',
58 defaultMessage: '!!!Submit',
59 },
60 quit: {
61 id: 'global.quit',
62 defaultMessage: '!!!Quit',
63 },
64 quitConfirmation: {
65 id: 'global.quitConfirmation',
66 defaultMessage:
67 '!!!Do you really want to quit Ferdi?',
68 },
69 settings: {
70 id: 'global.settings',
71 defaultMessage: '!!!Settings',
72 },
73 edit: {
74 id: 'global.edit',
75 defaultMessage: '!!!Edit',
76 },
36}); 77});
diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json
index ff3ed1486..2c145d6f4 100644
--- a/src/i18n/locales/af.json
+++ b/src/i18n/locales/af.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Can't connect to Ferdi online services", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "You are not connected to the internet.", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json
index ded4a1913..ae2952f86 100644
--- a/src/i18n/locales/ar.json
+++ b/src/i18n/locales/ar.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "خادم مخصص", 4 "changeserver.customServerLabel": "خادم مخصص",
5 "changeserver.headline": "تغيير الخادم", 5 "changeserver.headline": "تغيير الخادم",
6 "changeserver.label": "خادم", 6 "changeserver.label": "خادم",
7 "changeserver.submit": "إرسال",
8 "changeserver.urlError": "الرجاء إدخال URL صحيح", 7 "changeserver.urlError": "الرجاء إدخال URL صحيح",
9 "changeserver.warning": "لن يتم حفظ الإعدادات الإضافية التي يوفرها فردي", 8 "changeserver.warning": "لن يتم حفظ الإعدادات الإضافية التي يوفرها فردي",
10 "connectionLostBanner.cta": "إعادة تحميل الخدمة", 9 "connectionLostBanner.cta": "إعادة تحميل الخدمة",
11 "connectionLostBanner.informationLink": "ماذا حدث؟", 10 "connectionLostBanner.informationLink": "ماذا حدث؟",
12 "connectionLostBanner.message": "أوه لا! فقد فردي الاتصال بـ.", 11 "connectionLostBanner.message": "أوه لا! فقد فردي الاتصال بـ.",
13 "feature.announcements.changelog.headline": "تغيرات في فريدي {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "نشر معلومات تصحيح الأخطاء", 13 "feature.debugger.title": "نشر معلومات تصحيح الأخطاء",
15 "feature.nightlyBuilds.activate": "تفعيل", 14 "feature.nightlyBuilds.activate": "تفعيل",
16 "feature.nightlyBuilds.cancel": "إلغاء",
17 "feature.nightlyBuilds.info": "الإصدارات الليلية هي إصدارات تجريبية للغاية من فردي والتي قد تحتوي على ميزات غير مصقولة أو غير كاملة. يتم استخدام هذه الإنشاءات الليلية بشكل أساسي من قبل المطورين لاختبار ميزاتهم المطورة حديثًا وكيفية أدائهم في التصميم النهائي. إذا كنت لا تعرف ما تفعله ، فنقترح عدم تنشيط الإنشاءات الليلية.", 15 "feature.nightlyBuilds.info": "الإصدارات الليلية هي إصدارات تجريبية للغاية من فردي والتي قد تحتوي على ميزات غير مصقولة أو غير كاملة. يتم استخدام هذه الإنشاءات الليلية بشكل أساسي من قبل المطورين لاختبار ميزاتهم المطورة حديثًا وكيفية أدائهم في التصميم النهائي. إذا كنت لا تعرف ما تفعله ، فنقترح عدم تنشيط الإنشاءات الليلية.",
18 "feature.nightlyBuilds.title": "المباني الليلية", 16 "feature.nightlyBuilds.title": "المباني الليلية",
19 "feature.publishDebugInfo.error": "حدث خطأ أثناء محاولة نشر معلومات التصحيح. الرجاء المحاولة مرة أخرى لاحقاً أو عرض وحدة التحكم لمزيد من المعلومات.", 17 "feature.publishDebugInfo.error": "حدث خطأ أثناء محاولة نشر معلومات التصحيح. الرجاء المحاولة مرة أخرى لاحقاً أو عرض وحدة التحكم لمزيد من المعلومات.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "بحث...", 25 "feature.quickSwitch.search": "بحث...",
28 "feature.quickSwitch.title": "تبديل سريع", 26 "feature.quickSwitch.title": "تبديل سريع",
29 "global.api.unhealthy": "لا يمكن الإتصال بخدمات فردي عبر الإنترنت", 27 "global.api.unhealthy": "لا يمكن الإتصال بخدمات فردي عبر الإنترنت",
28 "global.cancel": "إلغاء",
29 "global.edit": "تعديل",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "أنت غير متصل بالإنترنت.", 31 "global.notConnectedToTheInternet": "أنت غير متصل بالإنترنت.",
32 "global.ok": "Ok",
33 "global.quit": "خروج",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "الإعدادات",
31 "global.spellchecker.useDefault": "إستخدم الإعدادت الافتراضية ({default})", 37 "global.spellchecker.useDefault": "إستخدم الإعدادت الافتراضية ({default})",
32 "global.spellchecking.autodetect": "الكشف عن اللغة تلقائياً", 38 "global.spellchecking.autodetect": "الكشف عن اللغة تلقائياً",
33 "global.spellchecking.autodetect.short": "تلقائي", 39 "global.spellchecking.autodetect.short": "تلقائي",
34 "global.spellchecking.language": "لغة التدقيق الإملائي", 40 "global.spellchecking.language": "لغة التدقيق الإملائي",
41 "global.submit": "إرسال",
35 "global.userAgentHelp": "استخدم 'https://whatmyuseragent.com/' (لاكتشاف) أو 'https://developers.whatismybrowser.com/useragents/explore/' (لاختار) وكيل المستخدم المنشود و نسخه لصقه هنا.", 42 "global.userAgentHelp": "استخدم 'https://whatmyuseragent.com/' (لاكتشاف) أو 'https://developers.whatismybrowser.com/useragents/explore/' (لاختار) وكيل المستخدم المنشود و نسخه لصقه هنا.",
36 "global.userAgentPref": "وكيل المستخدم", 43 "global.userAgentPref": "وكيل المستخدم",
44 "global.yes": "Yes",
37 "import.headline": "استيراد خدمات فردي الأربع", 45 "import.headline": "استيراد خدمات فردي الأربع",
38 "import.notSupportedHeadline": "الخدمات غير مدعومة بعد في فردي الإصدار 5", 46 "import.notSupportedHeadline": "الخدمات غير مدعومة بعد في فردي الإصدار 5",
39 "import.skip.label": "أريد أن أضيف الخدمات يدوياً", 47 "import.skip.label": "أريد أن أضيف الخدمات يدوياً",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "إغلاق درج المهام", 84 "menu.Todoss.closeTodosDrawer": "إغلاق درج المهام",
77 "menu.Todoss.openTodosDrawer": "فتح درج المهام", 85 "menu.Todoss.openTodosDrawer": "فتح درج المهام",
78 "menu.app.about": "حول فردي", 86 "menu.app.about": "حول فردي",
79 "menu.app.announcement": "ما الجديد؟",
80 "menu.app.autohideMenuBar": "إخفاء شريط القوائم تلقائيا", 87 "menu.app.autohideMenuBar": "إخفاء شريط القوائم تلقائيا",
81 "menu.app.checkForUpdates": "التحقق من وجود تحديثات", 88 "menu.app.checkForUpdates": "التحقق من وجود تحديثات",
82 "menu.app.hide": "إخفاء", 89 "menu.app.hide": "إخفاء",
83 "menu.app.hideOthers": "إخفاء الآخرين", 90 "menu.app.hideOthers": "إخفاء الآخرين",
84 "menu.app.quit": "خروج",
85 "menu.app.settings": "الإعدادات",
86 "menu.app.unhide": "إظهار", 91 "menu.app.unhide": "إظهار",
87 "menu.edit": "تعديل", 92 "menu.edit": "تعديل",
88 "menu.edit.copy": "نسخ", 93 "menu.edit.copy": "نسخ",
@@ -147,7 +152,6 @@
147 "password.link.login": "سجل الدخول لحسابك", 152 "password.link.login": "سجل الدخول لحسابك",
148 "password.link.signup": "إنشاء حساب مجاني", 153 "password.link.signup": "إنشاء حساب مجاني",
149 "password.noUser": "لم يُعثر على مُستخدمٍ بعنوانِ البريدِ هذا", 154 "password.noUser": "لم يُعثر على مُستخدمٍ بعنوانِ البريدِ هذا",
150 "password.submit.label": "إرسال",
151 "password.successInfo": "رجاءً تحقق من عنوان بريدك الإلكتروني", 155 "password.successInfo": "رجاءً تحقق من عنوان بريدك الإلكتروني",
152 "pricing.features.accountSync": "مزامنةُ الحساب", 156 "pricing.features.accountSync": "مزامنةُ الحساب",
153 "pricing.features.customWebsites": "إضافة مواقع مخصصة", 157 "pricing.features.customWebsites": "إضافة مواقع مخصصة",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "تضمين الإصدارات التجريبية", 218 "settings.app.form.beta": "تضمين الإصدارات التجريبية",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "خادم مهام مخصص", 222 "settings.app.form.customTodoServer": "خادم مهام مخصص",
218 "settings.app.form.darkMode": "تفعيل الوضع المظلم", 223 "settings.app.form.darkMode": "تفعيل الوضع المظلم",
219 "settings.app.form.enableGPUAcceleration": "تفعيل التسريع بوحدة معالجة الرسومات", 224 "settings.app.form.enableGPUAcceleration": "تفعيل التسريع بوحدة معالجة الرسومات",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "السماح باستخدام TouchID لفتح فردي", 256 "settings.app.form.useTouchIdToUnlock": "السماح باستخدام TouchID لفتح فردي",
252 "settings.app.form.useVerticalStyle": "استخدام النمط الأفقي", 257 "settings.app.form.useVerticalStyle": "استخدام النمط الأفقي",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "الإعدادات",
255 "settings.app.headlineAdvanced": "متقدم", 259 "settings.app.headlineAdvanced": "متقدم",
256 "settings.app.headlineAppearance": "المظهر", 260 "settings.app.headlineAppearance": "المظهر",
257 "settings.app.headlineGeneral": "عام", 261 "settings.app.headlineGeneral": "عام",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "الحساب", 285 "settings.navigation.account": "الحساب",
282 "settings.navigation.availableServices": "الخدمات المتاحة", 286 "settings.navigation.availableServices": "الخدمات المتاحة",
283 "settings.navigation.logout": "تسجيل خروج", 287 "settings.navigation.logout": "تسجيل خروج",
284 "settings.navigation.settings": "الإعدادات",
285 "settings.navigation.supportFerdi": "حول فردي", 288 "settings.navigation.supportFerdi": "حول فردي",
286 "settings.navigation.team": "إدارة الفريق", 289 "settings.navigation.team": "إدارة الفريق",
287 "settings.navigation.yourServices": "خدماتك", 290 "settings.navigation.yourServices": "خدماتك",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "تعطيل الإشعارات والصوت", 417 "sidebar.muteApp": "تعطيل الإشعارات والصوت",
415 "sidebar.openTodosDrawer": "فتح Todos فيردي", 418 "sidebar.openTodosDrawer": "فتح Todos فيردي",
416 "sidebar.openWorkspaceDrawer": "فتحُ دُرجِ مساحة العمل", 419 "sidebar.openWorkspaceDrawer": "فتحُ دُرجِ مساحة العمل",
417 "sidebar.settings": "الإعدادات",
418 "sidebar.unmuteApp": "تمكين الإشعارات والصوت", 420 "sidebar.unmuteApp": "تمكين الإشعارات والصوت",
419 "signup.email.label": "البريد الإلكتروني", 421 "signup.email.label": "البريد الإلكتروني",
420 "signup.emailDuplicate": "مستخدم بهذا البريد الإلكتروني موجود بالفعل", 422 "signup.emailDuplicate": "مستخدم بهذا البريد الإلكتروني موجود بالفعل",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "تعطيل الإشعارات", 436 "tabs.item.disableNotifications": "تعطيل الإشعارات",
435 "tabs.item.disableService": "تعطيل الخدمة", 437 "tabs.item.disableService": "تعطيل الخدمة",
436 "tabs.item.edit": "تعديل",
437 "tabs.item.enableAudio": "تمكين الصوت", 438 "tabs.item.enableAudio": "تمكين الصوت",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "تفعيل الإشعارات", 440 "tabs.item.enableNotification": "تفعيل الإشعارات",
diff --git a/src/i18n/locales/be.json b/src/i18n/locales/be.json
index 30fae6dd8..31a5111a9 100644
--- a/src/i18n/locales/be.json
+++ b/src/i18n/locales/be.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Паслужнік", 6 "changeserver.label": "Паслужнік",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Напішыце дзейсны URL", 7 "changeserver.urlError": "Напішыце дзейсны URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Can't connect to Ferdi online services", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "You are not connected to the internet.", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/bg.json b/src/i18n/locales/bg.json
index 87d1083a8..f62a5ffb9 100644
--- a/src/i18n/locales/bg.json
+++ b/src/i18n/locales/bg.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
15 "global.api.unhealthy": "Няма връзка с онлайн услугите на Франц", 15 "global.api.unhealthy": "Няма връзка с онлайн услугите на Франц",
16 "global.edit": "Редакция",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "Не сте свързани към интернет", 18 "global.notConnectedToTheInternet": "Не сте свързани към интернет",
19 "global.quit": "Изход",
20 "global.settings": "Настройки",
18 "global.spellchecker.useDefault": "Use System Default ({default})", 21 "global.spellchecker.useDefault": "Use System Default ({default})",
19 "global.spellchecking.autodetect": "Detect language automatically", 22 "global.spellchecking.autodetect": "Detect language automatically",
20 "global.spellchecking.autodetect.short": "Automatic", 23 "global.spellchecking.autodetect.short": "Automatic",
21 "global.spellchecking.language": "Spell checking language", 24 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "Изпращане",
22 "import.headline": "Вмъкнете вашите услуги на Франц 4", 26 "import.headline": "Вмъкнете вашите услуги на Франц 4",
23 "import.notSupportedHeadline": "Тези услуги не се подържат все още във Франц 5. ", 27 "import.notSupportedHeadline": "Тези услуги не се подържат все още във Франц 5. ",
24 "import.skip.label": "Искам да прибавя ръчно услуги", 28 "import.skip.label": "Искам да прибавя ръчно услуги",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Проверка за обновления", 55 "menu.app.checkForUpdates": "Проверка за обновления",
52 "menu.app.hide": "Скрий", 56 "menu.app.hide": "Скрий",
53 "menu.app.hideOthers": "Скрий другите", 57 "menu.app.hideOthers": "Скрий другите",
54 "menu.app.quit": "Изход",
55 "menu.app.settings": "Настройки",
56 "menu.app.unhide": "Покажи", 58 "menu.app.unhide": "Покажи",
57 "menu.edit": "Редактиране", 59 "menu.edit": "Редактиране",
58 "menu.edit.copy": "Копирай", 60 "menu.edit.copy": "Копирай",
@@ -109,7 +111,6 @@
109 "password.link.login": "Влизте в профила си", 111 "password.link.login": "Влизте в профила си",
110 "password.link.signup": "Създаване на безплатен профил", 112 "password.link.signup": "Създаване на безплатен профил",
111 "password.noUser": "Абонат с такава е-поща не бе намерен", 113 "password.noUser": "Абонат с такава е-поща не бе намерен",
112 "password.submit.label": "Изпращане",
113 "password.successInfo": "Моля отбележете вашата е-поща", 114 "password.successInfo": "Моля отбележете вашата е-поща",
114 "pricing.features.accountSync": "Account Synchronisation", 115 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free", 116 "pricing.features.adFree": "Forever ad-free",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "Дръж Франж влючен в задния план когато прозореца е затворен", 179 "settings.app.form.runInBackground": "Дръж Франж влючен в задния план когато прозореца е затворен",
179 "settings.app.form.showDisabledServices": "Покажи панели на изключени услуги", 180 "settings.app.form.showDisabledServices": "Покажи панели на изключени услуги",
180 "settings.app.form.showMessagesBadgesWhenMuted": "Покажи непрочетени съобщения когато известията са изключени", 181 "settings.app.form.showMessagesBadgesWhenMuted": "Покажи непрочетени съобщения когато известията са изключени",
181 "settings.app.headline": "Настройки",
182 "settings.app.headlineAdvanced": "Допълнителни", 182 "settings.app.headlineAdvanced": "Допълнителни",
183 "settings.app.headlineAppearance": "Изглед", 183 "settings.app.headlineAppearance": "Изглед",
184 "settings.app.headlineGeneral": "Общи", 184 "settings.app.headlineGeneral": "Общи",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "Налични услуги", 196 "settings.navigation.availableServices": "Налични услуги",
197 "settings.navigation.inviteFriends": "Поканете приятели", 197 "settings.navigation.inviteFriends": "Поканете приятели",
198 "settings.navigation.logout": "Изход", 198 "settings.navigation.logout": "Изход",
199 "settings.navigation.settings": "Настройки",
200 "settings.navigation.team": "Manage Team", 199 "settings.navigation.team": "Manage Team",
201 "settings.navigation.yourServices": "Вашите услуги", 200 "settings.navigation.yourServices": "Вашите услуги",
202 "settings.navigation.yourWorkspaces": "Your workspaces", 201 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "Дезактивирай известията и звуците", 301 "sidebar.muteApp": "Дезактивирай известията и звуците",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 302 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 303 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
305 "sidebar.settings": "Настройки",
306 "sidebar.unmuteApp": "Активирай известията и звуците", 304 "sidebar.unmuteApp": "Активирай известията и звуците",
307 "signup.email.label": "Адрес на ел. поща:", 305 "signup.email.label": "Адрес на ел. поща:",
308 "signup.emailDuplicate": "Вече съществува потребител с този имейл адрес", 306 "signup.emailDuplicate": "Вече съществува потребител с този имейл адрес",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "Изключване на звука", 317 "tabs.item.disableAudio": "Изключване на звука",
320 "tabs.item.disableNotifications": "Изключване на известията", 318 "tabs.item.disableNotifications": "Изключване на известията",
321 "tabs.item.disableService": "Спиране на услугата", 319 "tabs.item.disableService": "Спиране на услугата",
322 "tabs.item.edit": "Редакция",
323 "tabs.item.enableAudio": "Включване на звука", 320 "tabs.item.enableAudio": "Включване на звука",
324 "tabs.item.enableNotification": "Включване на известяванията", 321 "tabs.item.enableNotification": "Включване на известяванията",
325 "tabs.item.enableService": "Разрешаване на услугата", 322 "tabs.item.enableService": "Разрешаване на услугата",
diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json
index ff3ed1486..2c145d6f4 100644
--- a/src/i18n/locales/bs.json
+++ b/src/i18n/locales/bs.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Can't connect to Ferdi online services", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "You are not connected to the internet.", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index 96741e317..3cb52af9b 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Servidor personalitzat", 4 "changeserver.customServerLabel": "Servidor personalitzat",
5 "changeserver.headline": "Canvía de Servidor", 5 "changeserver.headline": "Canvía de Servidor",
6 "changeserver.label": "Servidor", 6 "changeserver.label": "Servidor",
7 "changeserver.submit": "Enviar",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Torna a carregar el servei", 9 "connectionLostBanner.cta": "Torna a carregar el servei",
11 "connectionLostBanner.informationLink": "Què ha passat?", 10 "connectionLostBanner.informationLink": "Què ha passat?",
12 "connectionLostBanner.message": "Oh no! Ferdi ha perdut la connexió a {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi ha perdut la connexió a {name}.",
13 "feature.announcements.changelog.headline": "Canvis en Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Registra la informació de depuració", 13 "feature.debugger.title": "Registra la informació de depuració",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel·la",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "S'ha produït un error en intentar publicar la informació de depuració. Torneu-ho a provar més tard o visualitzeu la consola per obtenir més informació.", 17 "feature.publishDebugInfo.error": "S'ha produït un error en intentar publicar la informació de depuració. Torneu-ho a provar més tard o visualitzeu la consola per obtenir més informació.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Cerca...", 25 "feature.quickSwitch.search": "Cerca...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "No es pot connectar amb els serveis en línia de Ferdi", 27 "global.api.unhealthy": "No es pot connectar amb els serveis en línia de Ferdi",
28 "global.cancel": "Cancel·la",
29 "global.edit": "Edita",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "No esteu connectat a Internet.", 31 "global.notConnectedToTheInternet": "No esteu connectat a Internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Configuració",
31 "global.spellchecker.useDefault": "Utilitzar el predeterminat del sistema ({default})", 37 "global.spellchecker.useDefault": "Utilitzar el predeterminat del sistema ({default})",
32 "global.spellchecking.autodetect": "Detectar l'idioma automàticament", 38 "global.spellchecking.autodetect": "Detectar l'idioma automàticament",
33 "global.spellchecking.autodetect.short": "Automàtic", 39 "global.spellchecking.autodetect.short": "Automàtic",
34 "global.spellchecking.language": "Corrector ortogràfic", 40 "global.spellchecking.language": "Corrector ortogràfic",
41 "global.submit": "Enviar",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importa els teus serveis Ferdi 4", 45 "import.headline": "Importa els teus serveis Ferdi 4",
38 "import.notSupportedHeadline": "Serveis que encara no s'admeten a Ferdi 5", 46 "import.notSupportedHeadline": "Serveis que encara no s'admeten a Ferdi 5",
39 "import.skip.label": "Vull afegir serveis manualment", 47 "import.skip.label": "Vull afegir serveis manualment",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Tanca el calaix de tasques", 84 "menu.Todoss.closeTodosDrawer": "Tanca el calaix de tasques",
77 "menu.Todoss.openTodosDrawer": "Obre el calaix de tasques", 85 "menu.Todoss.openTodosDrawer": "Obre el calaix de tasques",
78 "menu.app.about": "Sobre Ferdi", 86 "menu.app.about": "Sobre Ferdi",
79 "menu.app.announcement": "Què hi ha de nou?",
80 "menu.app.autohideMenuBar": "Amaga automàticament la barra de menú", 87 "menu.app.autohideMenuBar": "Amaga automàticament la barra de menú",
81 "menu.app.checkForUpdates": "Comprova si hi ha actualitzacions", 88 "menu.app.checkForUpdates": "Comprova si hi ha actualitzacions",
82 "menu.app.hide": "Amaga", 89 "menu.app.hide": "Amaga",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Configuració",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edita", 92 "menu.edit": "Edita",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Inicia la sessió al teu compte", 152 "password.link.login": "Inicia la sessió al teu compte",
148 "password.link.signup": "Crea un compte gratuït", 153 "password.link.signup": "Crea un compte gratuït",
149 "password.noUser": "No s'ha trobat cap usuari amb aquesta adreça de correu electrònic", 154 "password.noUser": "No s'ha trobat cap usuari amb aquesta adreça de correu electrònic",
150 "password.submit.label": "Enviar",
151 "password.successInfo": "Comproveu el vostre correu electrònic", 155 "password.successInfo": "Comproveu el vostre correu electrònic",
152 "pricing.features.accountSync": "Sincronització de Conte", 156 "pricing.features.accountSync": "Sincronització de Conte",
153 "pricing.features.customWebsites": "Afegir llocs web personalitzats", 157 "pricing.features.customWebsites": "Afegir llocs web personalitzats",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Inclou versions beta", 218 "settings.app.form.beta": "Inclou versions beta",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Activar acceleració GPU", 224 "settings.app.form.enableGPUAcceleration": "Activar acceleració GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Configuració",
255 "settings.app.headlineAdvanced": "Avançat", 259 "settings.app.headlineAdvanced": "Avançat",
256 "settings.app.headlineAppearance": "Aparença", 260 "settings.app.headlineAppearance": "Aparença",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Compte", 285 "settings.navigation.account": "Compte",
282 "settings.navigation.availableServices": "Serveis disponibles", 286 "settings.navigation.availableServices": "Serveis disponibles",
283 "settings.navigation.logout": "Sortir", 287 "settings.navigation.logout": "Sortir",
284 "settings.navigation.settings": "Configuració",
285 "settings.navigation.supportFerdi": "Sobre Ferdi", 288 "settings.navigation.supportFerdi": "Sobre Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Els vostres serveis", 290 "settings.navigation.yourServices": "Els vostres serveis",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Desactivar notificacions i àudio", 417 "sidebar.muteApp": "Desactivar notificacions i àudio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Obrir el calaix d'espais de treball", 419 "sidebar.openWorkspaceDrawer": "Obrir el calaix d'espais de treball",
417 "sidebar.settings": "Configuració",
418 "sidebar.unmuteApp": "Activar notificacions i àudio", 420 "sidebar.unmuteApp": "Activar notificacions i àudio",
419 "signup.email.label": "Correu electrònic", 421 "signup.email.label": "Correu electrònic",
420 "signup.emailDuplicate": "Ja existeix un usuari amb aquesta adreça de correu electrònic", 422 "signup.emailDuplicate": "Ja existeix un usuari amb aquesta adreça de correu electrònic",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Desactiva les notificacions", 436 "tabs.item.disableNotifications": "Desactiva les notificacions",
435 "tabs.item.disableService": "Desactiva el servei", 437 "tabs.item.disableService": "Desactiva el servei",
436 "tabs.item.edit": "Edita",
437 "tabs.item.enableAudio": "Activa l'àudio", 438 "tabs.item.enableAudio": "Activa l'àudio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Activa les notificacions", 440 "tabs.item.enableNotification": "Activa les notificacions",
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index a1326c772..1a82d3016 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Vlastní server", 4 "changeserver.customServerLabel": "Vlastní server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Odeslat",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Obnovit službu", 9 "connectionLostBanner.cta": "Obnovit službu",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Změny ve Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Zrušit",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nemůžeme připojit Ferdi k online službám", 27 "global.api.unhealthy": "Nemůžeme připojit Ferdi k online službám",
28 "global.cancel": "Zrušit",
29 "global.edit": "Upravit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Připojení k internetu není k dispozici.", 31 "global.notConnectedToTheInternet": "Připojení k internetu není k dispozici.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Nastavení",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Automaticky rozpoznat jazyk", 38 "global.spellchecking.autodetect": "Automaticky rozpoznat jazyk",
33 "global.spellchecking.autodetect.short": "Automaticky", 39 "global.spellchecking.autodetect.short": "Automaticky",
34 "global.spellchecking.language": "Oprava překlepů jazyka", 40 "global.spellchecking.language": "Oprava překlepů jazyka",
41 "global.submit": "Odeslat",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importovat služby z Ferdi 4", 45 "import.headline": "Importovat služby z Ferdi 4",
38 "import.notSupportedHeadline": "Služby nejsou podporovány ve verzi Ferdi 5", 46 "import.notSupportedHeadline": "Služby nejsou podporovány ve verzi Ferdi 5",
39 "import.skip.label": "Chci přidat službu ručně", 47 "import.skip.label": "Chci přidat službu ručně",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "O aplikaci", 86 "menu.app.about": "O aplikaci",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Zkontrolovat aktualizace", 88 "menu.app.checkForUpdates": "Zkontrolovat aktualizace",
82 "menu.app.hide": "Skrýt", 89 "menu.app.hide": "Skrýt",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Nastavení",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Upravit", 92 "menu.edit": "Upravit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Přihlásit se k účtu", 152 "password.link.login": "Přihlásit se k účtu",
148 "password.link.signup": "Vytvořit uživatelský účet zdarma", 153 "password.link.signup": "Vytvořit uživatelský účet zdarma",
149 "password.noUser": "Pro emailovou adresu nebyl nalezený žádný uživatel", 154 "password.noUser": "Pro emailovou adresu nebyl nalezený žádný uživatel",
150 "password.submit.label": "Odeslat",
151 "password.successInfo": "Prosím, zkontrolujte svůj e-mail", 155 "password.successInfo": "Prosím, zkontrolujte svůj e-mail",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Zahrnout beta verze", 218 "settings.app.form.beta": "Zahrnout beta verze",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Aktivovat GPU zrychlení", 224 "settings.app.form.enableGPUAcceleration": "Aktivovat GPU zrychlení",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Nastavení",
255 "settings.app.headlineAdvanced": "Pokročilé", 259 "settings.app.headlineAdvanced": "Pokročilé",
256 "settings.app.headlineAppearance": "Vzhled", 260 "settings.app.headlineAppearance": "Vzhled",
257 "settings.app.headlineGeneral": "Obecné", 261 "settings.app.headlineGeneral": "Obecné",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Účet", 285 "settings.navigation.account": "Účet",
282 "settings.navigation.availableServices": "Dostupné služby", 286 "settings.navigation.availableServices": "Dostupné služby",
283 "settings.navigation.logout": "Odhlásit", 287 "settings.navigation.logout": "Odhlásit",
284 "settings.navigation.settings": "Nastavení",
285 "settings.navigation.supportFerdi": "O aplikaci", 288 "settings.navigation.supportFerdi": "O aplikaci",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Vaše služby", 290 "settings.navigation.yourServices": "Vaše služby",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Vypnout upozornění a zvuky", 417 "sidebar.muteApp": "Vypnout upozornění a zvuky",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Nastavení",
418 "sidebar.unmuteApp": "Zapnout upozornění a zvuky", 420 "sidebar.unmuteApp": "Zapnout upozornění a zvuky",
419 "signup.email.label": "E-mailová adresa", 421 "signup.email.label": "E-mailová adresa",
420 "signup.emailDuplicate": "Uživatel s touto emailovou adresou již existuje", 422 "signup.emailDuplicate": "Uživatel s touto emailovou adresou již existuje",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Zakázat upozornění", 436 "tabs.item.disableNotifications": "Zakázat upozornění",
435 "tabs.item.disableService": "Zakázat službu", 437 "tabs.item.disableService": "Zakázat službu",
436 "tabs.item.edit": "Upravit",
437 "tabs.item.enableAudio": "Zapnout zvuk", 438 "tabs.item.enableAudio": "Zapnout zvuk",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Povolit upozornění", 440 "tabs.item.enableNotification": "Povolit upozornění",
diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json
index 48fe12245..31271cae5 100644
--- a/src/i18n/locales/da.json
+++ b/src/i18n/locales/da.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Brugerdefineret server", 4 "changeserver.customServerLabel": "Brugerdefineret server",
5 "changeserver.headline": "Skift server", 5 "changeserver.headline": "Skift server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Send",
8 "changeserver.urlError": "Indtast en gyldig URL", 7 "changeserver.urlError": "Indtast en gyldig URL",
9 "changeserver.warning": "Ekstra indstillinger, der tilbydes af Ferdi, vil ikke blive gemt", 8 "changeserver.warning": "Ekstra indstillinger, der tilbydes af Ferdi, vil ikke blive gemt",
10 "connectionLostBanner.cta": "Genindlæs tjeneste", 9 "connectionLostBanner.cta": "Genindlæs tjeneste",
11 "connectionLostBanner.informationLink": "Hvad skete der?", 10 "connectionLostBanner.informationLink": "Hvad skete der?",
12 "connectionLostBanner.message": "Åh nej! Ferdi mistede forbindelsen til {name}.", 11 "connectionLostBanner.message": "Åh nej! Ferdi mistede forbindelsen til {name}.",
13 "feature.announcements.changelog.headline": "Ændringer i Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Udgiv fejlfindingsoplysninger", 13 "feature.debugger.title": "Udgiv fejlfindingsoplysninger",
15 "feature.nightlyBuilds.activate": "Aktiver", 14 "feature.nightlyBuilds.activate": "Aktiver",
16 "feature.nightlyBuilds.cancel": "Annuller",
17 "feature.nightlyBuilds.info": "Natlige byg af Ferdi er meget eksperimentelle versioner, der kan indeholde ikke polerede eller ufærdige funktioner. Disse natlige byg bruges hovedsageligt af udviklere til at teste deres nyudviklede funktioner, og hvordan de vil opføre sig i den endelige version. Hvis du er usikker, foreslår vi ikke at aktivere natlige byg.", 15 "feature.nightlyBuilds.info": "Natlige byg af Ferdi er meget eksperimentelle versioner, der kan indeholde ikke polerede eller ufærdige funktioner. Disse natlige byg bruges hovedsageligt af udviklere til at teste deres nyudviklede funktioner, og hvordan de vil opføre sig i den endelige version. Hvis du er usikker, foreslår vi ikke at aktivere natlige byg.",
18 "feature.nightlyBuilds.title": "Natlige byg", 16 "feature.nightlyBuilds.title": "Natlige byg",
19 "feature.publishDebugInfo.error": "Der opstod en fejl under forsøg på at udgive fejlfindingsoplysningerne. Prøv igen senere, eller se konsollen for mere information.", 17 "feature.publishDebugInfo.error": "Der opstod en fejl under forsøg på at udgive fejlfindingsoplysningerne. Prøv igen senere, eller se konsollen for mere information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Søg...", 25 "feature.quickSwitch.search": "Søg...",
28 "feature.quickSwitch.title": "Hurtigskift", 26 "feature.quickSwitch.title": "Hurtigskift",
29 "global.api.unhealthy": "Kan ikke oprette forbindelse til Ferdi onlinetjenester", 27 "global.api.unhealthy": "Kan ikke oprette forbindelse til Ferdi onlinetjenester",
28 "global.cancel": "Annuller",
29 "global.edit": "Rediger",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Du har ikke forbindelse til internettet.", 31 "global.notConnectedToTheInternet": "Du har ikke forbindelse til internettet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Indstillinger",
31 "global.spellchecker.useDefault": "Benyt systemstandard ({default})", 37 "global.spellchecker.useDefault": "Benyt systemstandard ({default})",
32 "global.spellchecking.autodetect": "Vælg sprog automatisk", 38 "global.spellchecking.autodetect": "Vælg sprog automatisk",
33 "global.spellchecking.autodetect.short": "Automatisk", 39 "global.spellchecking.autodetect.short": "Automatisk",
34 "global.spellchecking.language": "Stavekontrolsprog", 40 "global.spellchecking.language": "Stavekontrolsprog",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importer dine Ferdi 4-tjenester", 45 "import.headline": "Importer dine Ferdi 4-tjenester",
38 "import.notSupportedHeadline": "Tjenester endnu ikke understøttet i Ferdi 5", 46 "import.notSupportedHeadline": "Tjenester endnu ikke understøttet i Ferdi 5",
39 "import.skip.label": "Jeg ønsker at tilføje tjenester manuelt", 47 "import.skip.label": "Jeg ønsker at tilføje tjenester manuelt",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Luk Todos panel", 84 "menu.Todoss.closeTodosDrawer": "Luk Todos panel",
77 "menu.Todoss.openTodosDrawer": "Åbn Todos panel", 85 "menu.Todoss.openTodosDrawer": "Åbn Todos panel",
78 "menu.app.about": "Om Ferdi", 86 "menu.app.about": "Om Ferdi",
79 "menu.app.announcement": "Hvad er nyt?",
80 "menu.app.autohideMenuBar": "Auto-skjul menulinje", 87 "menu.app.autohideMenuBar": "Auto-skjul menulinje",
81 "menu.app.checkForUpdates": "Søg efter opdateringer", 88 "menu.app.checkForUpdates": "Søg efter opdateringer",
82 "menu.app.hide": "Skjul", 89 "menu.app.hide": "Skjul",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Indstillinger",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Rediger", 92 "menu.edit": "Rediger",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Log ind på din konto", 152 "password.link.login": "Log ind på din konto",
148 "password.link.signup": "Opret en gratis konto", 153 "password.link.signup": "Opret en gratis konto",
149 "password.noUser": "Der blev ikke fundet nogen bruger med den mailadresse", 154 "password.noUser": "Der blev ikke fundet nogen bruger med den mailadresse",
150 "password.submit.label": "Send",
151 "password.successInfo": "Tjek venligst din mail", 155 "password.successInfo": "Tjek venligst din mail",
152 "pricing.features.accountSync": "Kontosynkronisering", 156 "pricing.features.accountSync": "Kontosynkronisering",
153 "pricing.features.customWebsites": "Tilføj brugerdefinerede hjemmesider", 157 "pricing.features.customWebsites": "Tilføj brugerdefinerede hjemmesider",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Medtag betaversioner", 218 "settings.app.form.beta": "Medtag betaversioner",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Luk Ferdi til systembakken", 220 "settings.app.form.closeToSystemTray": "Luk Ferdi til systembakken",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Brugerdefineret Todo server", 222 "settings.app.form.customTodoServer": "Brugerdefineret Todo server",
218 "settings.app.form.darkMode": "Aktiver mørk tilstand", 223 "settings.app.form.darkMode": "Aktiver mørk tilstand",
219 "settings.app.form.enableGPUAcceleration": "Aktiver GPU-acceleration", 224 "settings.app.form.enableGPUAcceleration": "Aktiver GPU-acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Tillad brug af TouchID for at låse Ferdi op", 256 "settings.app.form.useTouchIdToUnlock": "Tillad brug af TouchID for at låse Ferdi op",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Indstillinger",
255 "settings.app.headlineAdvanced": "Avanceret", 259 "settings.app.headlineAdvanced": "Avanceret",
256 "settings.app.headlineAppearance": "Udseende", 260 "settings.app.headlineAppearance": "Udseende",
257 "settings.app.headlineGeneral": "Generelt", 261 "settings.app.headlineGeneral": "Generelt",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Konto", 285 "settings.navigation.account": "Konto",
282 "settings.navigation.availableServices": "Tilgængelige tjenester", 286 "settings.navigation.availableServices": "Tilgængelige tjenester",
283 "settings.navigation.logout": "Log ud", 287 "settings.navigation.logout": "Log ud",
284 "settings.navigation.settings": "Indstillinger",
285 "settings.navigation.supportFerdi": "Om Ferdi", 288 "settings.navigation.supportFerdi": "Om Ferdi",
286 "settings.navigation.team": "Administrer Team", 289 "settings.navigation.team": "Administrer Team",
287 "settings.navigation.yourServices": "Dine tjenester", 290 "settings.navigation.yourServices": "Dine tjenester",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Deaktiver notifikationer og lyd", 417 "sidebar.muteApp": "Deaktiver notifikationer og lyd",
415 "sidebar.openTodosDrawer": "Åbn Ferdi Todos", 418 "sidebar.openTodosDrawer": "Åbn Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Åbn arbejdsrumspanel", 419 "sidebar.openWorkspaceDrawer": "Åbn arbejdsrumspanel",
417 "sidebar.settings": "Indstillinger",
418 "sidebar.unmuteApp": "Aktiver notifikationer og lyd", 420 "sidebar.unmuteApp": "Aktiver notifikationer og lyd",
419 "signup.email.label": "Mailadresse", 421 "signup.email.label": "Mailadresse",
420 "signup.emailDuplicate": "Der findes allerede en bruger med den mailadresse", 422 "signup.emailDuplicate": "Der findes allerede en bruger med den mailadresse",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Deaktiver notifikationer", 436 "tabs.item.disableNotifications": "Deaktiver notifikationer",
435 "tabs.item.disableService": "Deaktiver tjeneste", 437 "tabs.item.disableService": "Deaktiver tjeneste",
436 "tabs.item.edit": "Rediger",
437 "tabs.item.enableAudio": "Aktiver lyd", 438 "tabs.item.enableAudio": "Aktiver lyd",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Aktiver notifikationer", 440 "tabs.item.enableNotification": "Aktiver notifikationer",
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 5390ef35c..1deee8e54 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Eigener Server", 4 "changeserver.customServerLabel": "Eigener Server",
5 "changeserver.headline": "Server wechseln", 5 "changeserver.headline": "Server wechseln",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Absenden",
8 "changeserver.urlError": "Bitte gib eine gültige URL ein", 7 "changeserver.urlError": "Bitte gib eine gültige URL ein",
9 "changeserver.warning": "Zusätzliche Einstellungen von Ferdi werden nicht gespeichert", 8 "changeserver.warning": "Zusätzliche Einstellungen von Ferdi werden nicht gespeichert",
10 "connectionLostBanner.cta": "Dienst neu laden", 9 "connectionLostBanner.cta": "Dienst neu laden",
11 "connectionLostBanner.informationLink": "Was ist passiert?", 10 "connectionLostBanner.informationLink": "Was ist passiert?",
12 "connectionLostBanner.message": "Oh nein! Ferdi hat die Verbindung zu {name} verloren.", 11 "connectionLostBanner.message": "Oh nein! Ferdi hat die Verbindung zu {name} verloren.",
13 "feature.announcements.changelog.headline": "Was ist neu in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Debug-Informationen veröffentlichen", 13 "feature.debugger.title": "Debug-Informationen veröffentlichen",
15 "feature.nightlyBuilds.activate": "Aktivieren", 14 "feature.nightlyBuilds.activate": "Aktivieren",
16 "feature.nightlyBuilds.cancel": "Abbrechen",
17 "feature.nightlyBuilds.info": "Nightly builds sind experimentelle Versionen von Ferdi die unfertige Funktionen enthalten kann. Nightly builds werden hauptsächlich von Entwicklern genutzt um neu entwickelte Features zu testen und zu sehen wie sie sich in der finalen Version verhalten. Wenn du nicht genau weisst was du tust, empfehlen wir dir Nightly Builds nicht zu aktivieren.", 15 "feature.nightlyBuilds.info": "Nightly builds sind experimentelle Versionen von Ferdi die unfertige Funktionen enthalten kann. Nightly builds werden hauptsächlich von Entwicklern genutzt um neu entwickelte Features zu testen und zu sehen wie sie sich in der finalen Version verhalten. Wenn du nicht genau weisst was du tust, empfehlen wir dir Nightly Builds nicht zu aktivieren.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Beim Veröffentlichen der Debug-Informationen ist ein Fehler aufgetreten. Bitte versuche es später noch einmal oder sehe dir die Konsole für weitere Informationen an.", 17 "feature.publishDebugInfo.error": "Beim Veröffentlichen der Debug-Informationen ist ein Fehler aufgetreten. Bitte versuche es später noch einmal oder sehe dir die Konsole für weitere Informationen an.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Suchen...", 25 "feature.quickSwitch.search": "Suchen...",
28 "feature.quickSwitch.title": "Schnellauswahl", 26 "feature.quickSwitch.title": "Schnellauswahl",
29 "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen", 27 "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen",
28 "global.cancel": "Abbrechen",
29 "global.edit": "Bearbeiten",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.", 31 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Einstellungen",
31 "global.spellchecker.useDefault": "Standard benutzen ({default})", 37 "global.spellchecker.useDefault": "Standard benutzen ({default})",
32 "global.spellchecking.autodetect": "Sprache automatisch erkennen", 38 "global.spellchecking.autodetect": "Sprache automatisch erkennen",
33 "global.spellchecking.autodetect.short": "Automatisch", 39 "global.spellchecking.autodetect.short": "Automatisch",
34 "global.spellchecking.language": "Sprache für Rechtschreibprüfung", 40 "global.spellchecking.language": "Sprache für Rechtschreibprüfung",
41 "global.submit": "Absenden",
35 "global.userAgentHelp": "Benutze 'https://whatmyuseragent.com/' (für das Entdecken) oder 'https://developers.whatismybrowser.com/useragents/explore/' (für die Wahl) deines gewünschten User Agenten und kopiere ihn hier hinein.", 42 "global.userAgentHelp": "Benutze 'https://whatmyuseragent.com/' (für das Entdecken) oder 'https://developers.whatismybrowser.com/useragents/explore/' (für die Wahl) deines gewünschten User Agenten und kopiere ihn hier hinein.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Deine Ferdi-4-Dienste importieren", 45 "import.headline": "Deine Ferdi-4-Dienste importieren",
38 "import.notSupportedHeadline": "Dienste, die noch nicht von Ferdi 5 unterstützt werden", 46 "import.notSupportedHeadline": "Dienste, die noch nicht von Ferdi 5 unterstützt werden",
39 "import.skip.label": "Ich möchte Dienste selbst hinzufügen", 47 "import.skip.label": "Ich möchte Dienste selbst hinzufügen",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Todos schließen", 84 "menu.Todoss.closeTodosDrawer": "Todos schließen",
77 "menu.Todoss.openTodosDrawer": "Todos öffnen", 85 "menu.Todoss.openTodosDrawer": "Todos öffnen",
78 "menu.app.about": "Über Ferdi", 86 "menu.app.about": "Über Ferdi",
79 "menu.app.announcement": "Was ist neu?",
80 "menu.app.autohideMenuBar": "Menü automatisch verstecken", 87 "menu.app.autohideMenuBar": "Menü automatisch verstecken",
81 "menu.app.checkForUpdates": "Nach Updates suchen", 88 "menu.app.checkForUpdates": "Nach Updates suchen",
82 "menu.app.hide": "Ausblenden", 89 "menu.app.hide": "Ausblenden",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Einstellungen",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Bearbeiten", 92 "menu.edit": "Bearbeiten",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Mit deinem Konto anmelden", 152 "password.link.login": "Mit deinem Konto anmelden",
148 "password.link.signup": "Kostenloses Konto erstellen", 153 "password.link.signup": "Kostenloses Konto erstellen",
149 "password.noUser": "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden", 154 "password.noUser": "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden",
150 "password.submit.label": "Absenden",
151 "password.successInfo": "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt", 155 "password.successInfo": "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt",
152 "pricing.features.accountSync": "Konto-Synchronisierung", 156 "pricing.features.accountSync": "Konto-Synchronisierung",
153 "pricing.features.customWebsites": "Hinzufügen von eigenen Websites", 157 "pricing.features.customWebsites": "Hinzufügen von eigenen Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Beta-Versionen einbeziehen", 218 "settings.app.form.beta": "Beta-Versionen einbeziehen",
215 "settings.app.form.clipboardNotifications": "Keine Benachrichtigungen für Zwischenablagenereignisse anzeigen", 219 "settings.app.form.clipboardNotifications": "Keine Benachrichtigungen für Zwischenablagenereignisse anzeigen",
216 "settings.app.form.closeToSystemTray": "Ferdi in Infobereich minimieren", 220 "settings.app.form.closeToSystemTray": "Ferdi in Infobereich minimieren",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Eigener Todo Server", 222 "settings.app.form.customTodoServer": "Eigener Todo Server",
218 "settings.app.form.darkMode": "Dunkles Design verwenden", 223 "settings.app.form.darkMode": "Dunkles Design verwenden",
219 "settings.app.form.enableGPUAcceleration": "Hardwarebeschleunigung aktivieren", 224 "settings.app.form.enableGPUAcceleration": "Hardwarebeschleunigung aktivieren",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Verwenden von Touch ID zum Entsperren von Ferdi erlauben", 256 "settings.app.form.useTouchIdToUnlock": "Verwenden von Touch ID zum Entsperren von Ferdi erlauben",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Einstellungen",
255 "settings.app.headlineAdvanced": "Erweitert", 259 "settings.app.headlineAdvanced": "Erweitert",
256 "settings.app.headlineAppearance": "Darstellung", 260 "settings.app.headlineAppearance": "Darstellung",
257 "settings.app.headlineGeneral": "Allgemeines", 261 "settings.app.headlineGeneral": "Allgemeines",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Konto", 285 "settings.navigation.account": "Konto",
282 "settings.navigation.availableServices": "Verfügbare Dienste", 286 "settings.navigation.availableServices": "Verfügbare Dienste",
283 "settings.navigation.logout": "Abmelden", 287 "settings.navigation.logout": "Abmelden",
284 "settings.navigation.settings": "Einstellungen",
285 "settings.navigation.supportFerdi": "Über Ferdi", 288 "settings.navigation.supportFerdi": "Über Ferdi",
286 "settings.navigation.team": "Team verwalten", 289 "settings.navigation.team": "Team verwalten",
287 "settings.navigation.yourServices": "Deine Dienste", 290 "settings.navigation.yourServices": "Deine Dienste",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Benachrichtigungen & Audio deaktivieren", 417 "sidebar.muteApp": "Benachrichtigungen & Audio deaktivieren",
415 "sidebar.openTodosDrawer": "Ferdi Todos öffnen", 418 "sidebar.openTodosDrawer": "Ferdi Todos öffnen",
416 "sidebar.openWorkspaceDrawer": "Workspaces schließen", 419 "sidebar.openWorkspaceDrawer": "Workspaces schließen",
417 "sidebar.settings": "Einstellungen",
418 "sidebar.unmuteApp": "Benachrichtigungen & Audio aktivieren", 420 "sidebar.unmuteApp": "Benachrichtigungen & Audio aktivieren",
419 "signup.email.label": "E-Mail-Adresse", 421 "signup.email.label": "E-Mail-Adresse",
420 "signup.emailDuplicate": "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.", 422 "signup.emailDuplicate": "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren", 436 "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren",
435 "tabs.item.disableService": "Dienst deaktivieren", 437 "tabs.item.disableService": "Dienst deaktivieren",
436 "tabs.item.edit": "Bearbeiten",
437 "tabs.item.enableAudio": "Audio aktivieren", 438 "tabs.item.enableAudio": "Audio aktivieren",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Benachrichtigungen aktivieren", 440 "tabs.item.enableNotification": "Benachrichtigungen aktivieren",
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 7aff45503..7624168ba 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -5,39 +5,39 @@
5 "defaultMessage": "!!!A new update for Ferdi is available.", 5 "defaultMessage": "!!!A new update for Ferdi is available.",
6 "end": { 6 "end": {
7 "column": 3, 7 "column": 3,
8 "line": 12 8 "line": 13
9 }, 9 },
10 "file": "src/components/AppUpdateInfoBar.js", 10 "file": "src/components/AppUpdateInfoBar.js",
11 "id": "infobar.updateAvailable", 11 "id": "infobar.updateAvailable",
12 "start": { 12 "start": {
13 "column": 19, 13 "column": 19,
14 "line": 9 14 "line": 10
15 } 15 }
16 }, 16 },
17 { 17 {
18 "defaultMessage": "!!!Changelog", 18 "defaultMessage": "!!!Changelog",
19 "end": { 19 "end": {
20 "column": 3, 20 "column": 3,
21 "line": 16 21 "line": 17
22 }, 22 },
23 "file": "src/components/AppUpdateInfoBar.js", 23 "file": "src/components/AppUpdateInfoBar.js",
24 "id": "infobar.buttonChangelog", 24 "id": "infobar.buttonChangelog",
25 "start": { 25 "start": {
26 "column": 13, 26 "column": 13,
27 "line": 13 27 "line": 14
28 } 28 }
29 }, 29 },
30 { 30 {
31 "defaultMessage": "!!!Restart & install update", 31 "defaultMessage": "!!!Restart & install update",
32 "end": { 32 "end": {
33 "column": 3, 33 "column": 3,
34 "line": 20 34 "line": 21
35 }, 35 },
36 "file": "src/components/AppUpdateInfoBar.js", 36 "file": "src/components/AppUpdateInfoBar.js",
37 "id": "infobar.buttonInstallUpdate", 37 "id": "infobar.buttonInstallUpdate",
38 "start": { 38 "start": {
39 "column": 23, 39 "column": 23,
40 "line": 17 40 "line": 18
41 } 41 }
42 } 42 }
43 ], 43 ],
@@ -49,78 +49,65 @@
49 "defaultMessage": "!!!Change server", 49 "defaultMessage": "!!!Change server",
50 "end": { 50 "end": {
51 "column": 3, 51 "column": 3,
52 "line": 17 52 "line": 18
53 }, 53 },
54 "file": "src/components/auth/ChangeServer.js", 54 "file": "src/components/auth/ChangeServer.js",
55 "id": "changeserver.headline", 55 "id": "changeserver.headline",
56 "start": { 56 "start": {
57 "column": 12, 57 "column": 12,
58 "line": 14 58 "line": 15
59 } 59 }
60 }, 60 },
61 { 61 {
62 "defaultMessage": "!!!Server", 62 "defaultMessage": "!!!Server",
63 "end": { 63 "end": {
64 "column": 3, 64 "column": 3,
65 "line": 21 65 "line": 22
66 }, 66 },
67 "file": "src/components/auth/ChangeServer.js", 67 "file": "src/components/auth/ChangeServer.js",
68 "id": "changeserver.label", 68 "id": "changeserver.label",
69 "start": { 69 "start": {
70 "column": 9, 70 "column": 9,
71 "line": 18 71 "line": 19
72 } 72 }
73 }, 73 },
74 { 74 {
75 "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved", 75 "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved",
76 "end": { 76 "end": {
77 "column": 3, 77 "column": 3,
78 "line": 25 78 "line": 26
79 }, 79 },
80 "file": "src/components/auth/ChangeServer.js", 80 "file": "src/components/auth/ChangeServer.js",
81 "id": "changeserver.warning", 81 "id": "changeserver.warning",
82 "start": { 82 "start": {
83 "column": 11, 83 "column": 11,
84 "line": 22 84 "line": 23
85 } 85 }
86 }, 86 },
87 { 87 {
88 "defaultMessage": "!!!Custom server", 88 "defaultMessage": "!!!Custom server",
89 "end": { 89 "end": {
90 "column": 3, 90 "column": 3,
91 "line": 29 91 "line": 30
92 }, 92 },
93 "file": "src/components/auth/ChangeServer.js", 93 "file": "src/components/auth/ChangeServer.js",
94 "id": "changeserver.customServerLabel", 94 "id": "changeserver.customServerLabel",
95 "start": { 95 "start": {
96 "column": 21, 96 "column": 21,
97 "line": 26 97 "line": 27
98 } 98 }
99 }, 99 },
100 { 100 {
101 "defaultMessage": "!!!Enter a valid URL", 101 "defaultMessage": "!!!Enter a valid URL",
102 "end": { 102 "end": {
103 "column": 3, 103 "column": 3,
104 "line": 33 104 "line": 34
105 }, 105 },
106 "file": "src/components/auth/ChangeServer.js", 106 "file": "src/components/auth/ChangeServer.js",
107 "id": "changeserver.urlError", 107 "id": "changeserver.urlError",
108 "start": { 108 "start": {
109 "column": 12, 109 "column": 12,
110 "line": 30 110 "line": 31
111 }
112 },
113 {
114 "defaultMessage": "!!!Submit",
115 "end": {
116 "column": 3,
117 "line": 37
118 },
119 "file": "src/components/auth/ChangeServer.js",
120 "id": "changeserver.submit",
121 "start": {
122 "column": 10,
123 "line": 34
124 } 111 }
125 } 112 }
126 ], 113 ],
@@ -568,91 +555,78 @@
568 "defaultMessage": "!!!Forgot password", 555 "defaultMessage": "!!!Forgot password",
569 "end": { 556 "end": {
570 "column": 3, 557 "column": 3,
571 "line": 17 558 "line": 18
572 }, 559 },
573 "file": "src/components/auth/Password.js", 560 "file": "src/components/auth/Password.js",
574 "id": "password.headline", 561 "id": "password.headline",
575 "start": { 562 "start": {
576 "column": 12, 563 "column": 12,
577 "line": 14 564 "line": 15
578 } 565 }
579 }, 566 },
580 { 567 {
581 "defaultMessage": "!!!Email address", 568 "defaultMessage": "!!!Email address",
582 "end": { 569 "end": {
583 "column": 3, 570 "column": 3,
584 "line": 21 571 "line": 22
585 }, 572 },
586 "file": "src/components/auth/Password.js", 573 "file": "src/components/auth/Password.js",
587 "id": "password.email.label", 574 "id": "password.email.label",
588 "start": { 575 "start": {
589 "column": 14, 576 "column": 14,
590 "line": 18 577 "line": 19
591 }
592 },
593 {
594 "defaultMessage": "!!!Submit",
595 "end": {
596 "column": 3,
597 "line": 25
598 },
599 "file": "src/components/auth/Password.js",
600 "id": "password.submit.label",
601 "start": {
602 "column": 21,
603 "line": 22
604 } 578 }
605 }, 579 },
606 { 580 {
607 "defaultMessage": "!!!Your new password was sent to your email address", 581 "defaultMessage": "!!!Your new password was sent to your email address",
608 "end": { 582 "end": {
609 "column": 3, 583 "column": 3,
610 "line": 29 584 "line": 26
611 }, 585 },
612 "file": "src/components/auth/Password.js", 586 "file": "src/components/auth/Password.js",
613 "id": "password.successInfo", 587 "id": "password.successInfo",
614 "start": { 588 "start": {
615 "column": 15, 589 "column": 15,
616 "line": 26 590 "line": 23
617 } 591 }
618 }, 592 },
619 { 593 {
620 "defaultMessage": "!!!No user affiliated with that email address", 594 "defaultMessage": "!!!No user affiliated with that email address",
621 "end": { 595 "end": {
622 "column": 3, 596 "column": 3,
623 "line": 33 597 "line": 30
624 }, 598 },
625 "file": "src/components/auth/Password.js", 599 "file": "src/components/auth/Password.js",
626 "id": "password.noUser", 600 "id": "password.noUser",
627 "start": { 601 "start": {
628 "column": 10, 602 "column": 10,
629 "line": 30 603 "line": 27
630 } 604 }
631 }, 605 },
632 { 606 {
633 "defaultMessage": "!!!Create a free account", 607 "defaultMessage": "!!!Create a free account",
634 "end": { 608 "end": {
635 "column": 3, 609 "column": 3,
636 "line": 37 610 "line": 34
637 }, 611 },
638 "file": "src/components/auth/Password.js", 612 "file": "src/components/auth/Password.js",
639 "id": "password.link.signup", 613 "id": "password.link.signup",
640 "start": { 614 "start": {
641 "column": 14, 615 "column": 14,
642 "line": 34 616 "line": 31
643 } 617 }
644 }, 618 },
645 { 619 {
646 "defaultMessage": "!!!Sign in to your account", 620 "defaultMessage": "!!!Sign in to your account",
647 "end": { 621 "end": {
648 "column": 3, 622 "column": 3,
649 "line": 41 623 "line": 38
650 }, 624 },
651 "file": "src/components/auth/Password.js", 625 "file": "src/components/auth/Password.js",
652 "id": "password.link.login", 626 "id": "password.link.login",
653 "start": { 627 "start": {
654 "column": 13, 628 "column": 13,
655 "line": 38 629 "line": 35
656 } 630 }
657 } 631 }
658 ], 632 ],
@@ -760,52 +734,52 @@
760 "defaultMessage": "!!!Let's get started", 734 "defaultMessage": "!!!Let's get started",
761 "end": { 735 "end": {
762 "column": 3, 736 "column": 3,
763 "line": 22 737 "line": 23
764 }, 738 },
765 "file": "src/components/auth/SetupAssistant.js", 739 "file": "src/components/auth/SetupAssistant.js",
766 "id": "setupAssistant.headline", 740 "id": "setupAssistant.headline",
767 "start": { 741 "start": {
768 "column": 12, 742 "column": 12,
769 "line": 19 743 "line": 20
770 } 744 }
771 }, 745 },
772 { 746 {
773 "defaultMessage": "!!!Choose from our most used services and get back on top of your messaging now.", 747 "defaultMessage": "!!!Choose from our most used services and get back on top of your messaging now.",
774 "end": { 748 "end": {
775 "column": 3, 749 "column": 3,
776 "line": 27 750 "line": 28
777 }, 751 },
778 "file": "src/components/auth/SetupAssistant.js", 752 "file": "src/components/auth/SetupAssistant.js",
779 "id": "setupAssistant.subheadline", 753 "id": "setupAssistant.subheadline",
780 "start": { 754 "start": {
781 "column": 15, 755 "column": 15,
782 "line": 23 756 "line": 24
783 } 757 }
784 }, 758 },
785 { 759 {
786 "defaultMessage": "!!!Let's go", 760 "defaultMessage": "!!!Let's go",
787 "end": { 761 "end": {
788 "column": 3, 762 "column": 3,
789 "line": 31 763 "line": 32
790 }, 764 },
791 "file": "src/components/auth/SetupAssistant.js", 765 "file": "src/components/auth/SetupAssistant.js",
792 "id": "setupAssistant.submit.label", 766 "id": "setupAssistant.submit.label",
793 "start": { 767 "start": {
794 "column": 21, 768 "column": 21,
795 "line": 28 769 "line": 29
796 } 770 }
797 }, 771 },
798 { 772 {
799 "defaultMessage": "!!!Invitations sent successfully", 773 "defaultMessage": "!!!Invitations sent successfully",
800 "end": { 774 "end": {
801 "column": 3, 775 "column": 3,
802 "line": 35 776 "line": 36
803 }, 777 },
804 "file": "src/components/auth/SetupAssistant.js", 778 "file": "src/components/auth/SetupAssistant.js",
805 "id": "invite.successInfo", 779 "id": "invite.successInfo",
806 "start": { 780 "start": {
807 "column": 21, 781 "column": 21,
808 "line": 32 782 "line": 33
809 } 783 }
810 } 784 }
811 ], 785 ],
@@ -1089,120 +1063,107 @@
1089 { 1063 {
1090 "descriptors": [ 1064 "descriptors": [
1091 { 1065 {
1092 "defaultMessage": "!!!Settings",
1093 "end": {
1094 "column": 3,
1095 "line": 20
1096 },
1097 "file": "src/components/layout/Sidebar.js",
1098 "id": "sidebar.settings",
1099 "start": {
1100 "column": 12,
1101 "line": 17
1102 }
1103 },
1104 {
1105 "defaultMessage": "!!!Add new service", 1066 "defaultMessage": "!!!Add new service",
1106 "end": { 1067 "end": {
1107 "column": 3, 1068 "column": 3,
1108 "line": 24 1069 "line": 21
1109 }, 1070 },
1110 "file": "src/components/layout/Sidebar.js", 1071 "file": "src/components/layout/Sidebar.js",
1111 "id": "sidebar.addNewService", 1072 "id": "sidebar.addNewService",
1112 "start": { 1073 "start": {
1113 "column": 17, 1074 "column": 17,
1114 "line": 21 1075 "line": 18
1115 } 1076 }
1116 }, 1077 },
1117 { 1078 {
1118 "defaultMessage": "!!!Disable notifications & audio", 1079 "defaultMessage": "!!!Disable notifications & audio",
1119 "end": { 1080 "end": {
1120 "column": 3, 1081 "column": 3,
1121 "line": 28 1082 "line": 25
1122 }, 1083 },
1123 "file": "src/components/layout/Sidebar.js", 1084 "file": "src/components/layout/Sidebar.js",
1124 "id": "sidebar.muteApp", 1085 "id": "sidebar.muteApp",
1125 "start": { 1086 "start": {
1126 "column": 8, 1087 "column": 8,
1127 "line": 25 1088 "line": 22
1128 } 1089 }
1129 }, 1090 },
1130 { 1091 {
1131 "defaultMessage": "!!!Enable notifications & audio", 1092 "defaultMessage": "!!!Enable notifications & audio",
1132 "end": { 1093 "end": {
1133 "column": 3, 1094 "column": 3,
1134 "line": 32 1095 "line": 29
1135 }, 1096 },
1136 "file": "src/components/layout/Sidebar.js", 1097 "file": "src/components/layout/Sidebar.js",
1137 "id": "sidebar.unmuteApp", 1098 "id": "sidebar.unmuteApp",
1138 "start": { 1099 "start": {
1139 "column": 10, 1100 "column": 10,
1140 "line": 29 1101 "line": 26
1141 } 1102 }
1142 }, 1103 },
1143 { 1104 {
1144 "defaultMessage": "!!!Open workspace drawer", 1105 "defaultMessage": "!!!Open workspace drawer",
1145 "end": { 1106 "end": {
1146 "column": 3, 1107 "column": 3,
1147 "line": 36 1108 "line": 33
1148 }, 1109 },
1149 "file": "src/components/layout/Sidebar.js", 1110 "file": "src/components/layout/Sidebar.js",
1150 "id": "sidebar.openWorkspaceDrawer", 1111 "id": "sidebar.openWorkspaceDrawer",
1151 "start": { 1112 "start": {
1152 "column": 23, 1113 "column": 23,
1153 "line": 33 1114 "line": 30
1154 } 1115 }
1155 }, 1116 },
1156 { 1117 {
1157 "defaultMessage": "!!!Close workspace drawer", 1118 "defaultMessage": "!!!Close workspace drawer",
1158 "end": { 1119 "end": {
1159 "column": 3, 1120 "column": 3,
1160 "line": 40 1121 "line": 37
1161 }, 1122 },
1162 "file": "src/components/layout/Sidebar.js", 1123 "file": "src/components/layout/Sidebar.js",
1163 "id": "sidebar.closeWorkspaceDrawer", 1124 "id": "sidebar.closeWorkspaceDrawer",
1164 "start": { 1125 "start": {
1165 "column": 24, 1126 "column": 24,
1166 "line": 37 1127 "line": 34
1167 } 1128 }
1168 }, 1129 },
1169 { 1130 {
1170 "defaultMessage": "!!!Open Franz Todos", 1131 "defaultMessage": "!!!Open Ferdi Todos",
1171 "end": { 1132 "end": {
1172 "column": 3, 1133 "column": 3,
1173 "line": 44 1134 "line": 41
1174 }, 1135 },
1175 "file": "src/components/layout/Sidebar.js", 1136 "file": "src/components/layout/Sidebar.js",
1176 "id": "sidebar.openTodosDrawer", 1137 "id": "sidebar.openTodosDrawer",
1177 "start": { 1138 "start": {
1178 "column": 19, 1139 "column": 19,
1179 "line": 41 1140 "line": 38
1180 } 1141 }
1181 }, 1142 },
1182 { 1143 {
1183 "defaultMessage": "!!!Close Franz Todos", 1144 "defaultMessage": "!!!Close Ferdi Todos",
1184 "end": { 1145 "end": {
1185 "column": 3, 1146 "column": 3,
1186 "line": 48 1147 "line": 45
1187 }, 1148 },
1188 "file": "src/components/layout/Sidebar.js", 1149 "file": "src/components/layout/Sidebar.js",
1189 "id": "sidebar.closeTodosDrawer", 1150 "id": "sidebar.closeTodosDrawer",
1190 "start": { 1151 "start": {
1191 "column": 20, 1152 "column": 20,
1192 "line": 45 1153 "line": 42
1193 } 1154 }
1194 }, 1155 },
1195 { 1156 {
1196 "defaultMessage": "!!!Lock Ferdi", 1157 "defaultMessage": "!!!Lock Ferdi",
1197 "end": { 1158 "end": {
1198 "column": 3, 1159 "column": 3,
1199 "line": 52 1160 "line": 49
1200 }, 1161 },
1201 "file": "src/components/layout/Sidebar.js", 1162 "file": "src/components/layout/Sidebar.js",
1202 "id": "sidebar.lockFerdi", 1163 "id": "sidebar.lockFerdi",
1203 "start": { 1164 "start": {
1204 "column": 13, 1165 "column": 13,
1205 "line": 49 1166 "line": 46
1206 } 1167 }
1207 } 1168 }
1208 ], 1169 ],
@@ -1696,182 +1657,169 @@
1696 "defaultMessage": "!!!Reload", 1657 "defaultMessage": "!!!Reload",
1697 "end": { 1658 "end": {
1698 "column": 3, 1659 "column": 3,
1699 "line": 23 1660 "line": 24
1700 }, 1661 },
1701 "file": "src/components/services/tabs/TabItem.js", 1662 "file": "src/components/services/tabs/TabItem.js",
1702 "id": "tabs.item.reload", 1663 "id": "tabs.item.reload",
1703 "start": { 1664 "start": {
1704 "column": 10, 1665 "column": 10,
1705 "line": 20 1666 "line": 21
1706 }
1707 },
1708 {
1709 "defaultMessage": "!!!Edit",
1710 "end": {
1711 "column": 3,
1712 "line": 27
1713 },
1714 "file": "src/components/services/tabs/TabItem.js",
1715 "id": "tabs.item.edit",
1716 "start": {
1717 "column": 8,
1718 "line": 24
1719 } 1667 }
1720 }, 1668 },
1721 { 1669 {
1722 "defaultMessage": "!!!Disable notifications", 1670 "defaultMessage": "!!!Disable notifications",
1723 "end": { 1671 "end": {
1724 "column": 3, 1672 "column": 3,
1725 "line": 31 1673 "line": 28
1726 }, 1674 },
1727 "file": "src/components/services/tabs/TabItem.js", 1675 "file": "src/components/services/tabs/TabItem.js",
1728 "id": "tabs.item.disableNotifications", 1676 "id": "tabs.item.disableNotifications",
1729 "start": { 1677 "start": {
1730 "column": 24, 1678 "column": 24,
1731 "line": 28 1679 "line": 25
1732 } 1680 }
1733 }, 1681 },
1734 { 1682 {
1735 "defaultMessage": "!!!Enable notifications", 1683 "defaultMessage": "!!!Enable notifications",
1736 "end": { 1684 "end": {
1737 "column": 3, 1685 "column": 3,
1738 "line": 35 1686 "line": 32
1739 }, 1687 },
1740 "file": "src/components/services/tabs/TabItem.js", 1688 "file": "src/components/services/tabs/TabItem.js",
1741 "id": "tabs.item.enableNotification", 1689 "id": "tabs.item.enableNotification",
1742 "start": { 1690 "start": {
1743 "column": 23, 1691 "column": 23,
1744 "line": 32 1692 "line": 29
1745 } 1693 }
1746 }, 1694 },
1747 { 1695 {
1748 "defaultMessage": "!!!Disable audio", 1696 "defaultMessage": "!!!Disable audio",
1749 "end": { 1697 "end": {
1750 "column": 3, 1698 "column": 3,
1751 "line": 39 1699 "line": 36
1752 }, 1700 },
1753 "file": "src/components/services/tabs/TabItem.js", 1701 "file": "src/components/services/tabs/TabItem.js",
1754 "id": "tabs.item.disableAudio", 1702 "id": "tabs.item.disableAudio",
1755 "start": { 1703 "start": {
1756 "column": 16, 1704 "column": 16,
1757 "line": 36 1705 "line": 33
1758 } 1706 }
1759 }, 1707 },
1760 { 1708 {
1761 "defaultMessage": "!!!Enable audio", 1709 "defaultMessage": "!!!Enable audio",
1762 "end": { 1710 "end": {
1763 "column": 3, 1711 "column": 3,
1764 "line": 43 1712 "line": 40
1765 }, 1713 },
1766 "file": "src/components/services/tabs/TabItem.js", 1714 "file": "src/components/services/tabs/TabItem.js",
1767 "id": "tabs.item.enableAudio", 1715 "id": "tabs.item.enableAudio",
1768 "start": { 1716 "start": {
1769 "column": 15, 1717 "column": 15,
1770 "line": 40 1718 "line": 37
1771 } 1719 }
1772 }, 1720 },
1773 { 1721 {
1774 "defaultMessage": "!!!Enable Dark mode", 1722 "defaultMessage": "!!!Enable Dark mode",
1775 "end": { 1723 "end": {
1776 "column": 3, 1724 "column": 3,
1777 "line": 47 1725 "line": 44
1778 }, 1726 },
1779 "file": "src/components/services/tabs/TabItem.js", 1727 "file": "src/components/services/tabs/TabItem.js",
1780 "id": "tabs.item.enableDarkMode", 1728 "id": "tabs.item.enableDarkMode",
1781 "start": { 1729 "start": {
1782 "column": 18, 1730 "column": 18,
1783 "line": 44 1731 "line": 41
1784 } 1732 }
1785 }, 1733 },
1786 { 1734 {
1787 "defaultMessage": "!!!Disable Dark mode", 1735 "defaultMessage": "!!!Disable Dark mode",
1788 "end": { 1736 "end": {
1789 "column": 3, 1737 "column": 3,
1790 "line": 51 1738 "line": 48
1791 }, 1739 },
1792 "file": "src/components/services/tabs/TabItem.js", 1740 "file": "src/components/services/tabs/TabItem.js",
1793 "id": "tabs.item.disableDarkMode", 1741 "id": "tabs.item.disableDarkMode",
1794 "start": { 1742 "start": {
1795 "column": 19, 1743 "column": 19,
1796 "line": 48 1744 "line": 45
1797 } 1745 }
1798 }, 1746 },
1799 { 1747 {
1800 "defaultMessage": "!!!Disable Service", 1748 "defaultMessage": "!!!Disable Service",
1801 "end": { 1749 "end": {
1802 "column": 3, 1750 "column": 3,
1803 "line": 55 1751 "line": 52
1804 }, 1752 },
1805 "file": "src/components/services/tabs/TabItem.js", 1753 "file": "src/components/services/tabs/TabItem.js",
1806 "id": "tabs.item.disableService", 1754 "id": "tabs.item.disableService",
1807 "start": { 1755 "start": {
1808 "column": 18, 1756 "column": 18,
1809 "line": 52 1757 "line": 49
1810 } 1758 }
1811 }, 1759 },
1812 { 1760 {
1813 "defaultMessage": "!!!Enable Service", 1761 "defaultMessage": "!!!Enable Service",
1814 "end": { 1762 "end": {
1815 "column": 3, 1763 "column": 3,
1816 "line": 59 1764 "line": 56
1817 }, 1765 },
1818 "file": "src/components/services/tabs/TabItem.js", 1766 "file": "src/components/services/tabs/TabItem.js",
1819 "id": "tabs.item.enableService", 1767 "id": "tabs.item.enableService",
1820 "start": { 1768 "start": {
1821 "column": 17, 1769 "column": 17,
1822 "line": 56 1770 "line": 53
1823 } 1771 }
1824 }, 1772 },
1825 { 1773 {
1826 "defaultMessage": "!!!Hibernate Service", 1774 "defaultMessage": "!!!Hibernate Service",
1827 "end": { 1775 "end": {
1828 "column": 3, 1776 "column": 3,
1829 "line": 63 1777 "line": 60
1830 }, 1778 },
1831 "file": "src/components/services/tabs/TabItem.js", 1779 "file": "src/components/services/tabs/TabItem.js",
1832 "id": "tabs.item.hibernateService", 1780 "id": "tabs.item.hibernateService",
1833 "start": { 1781 "start": {
1834 "column": 20, 1782 "column": 20,
1835 "line": 60 1783 "line": 57
1836 } 1784 }
1837 }, 1785 },
1838 { 1786 {
1839 "defaultMessage": "!!!Wake Up Service", 1787 "defaultMessage": "!!!Wake Up Service",
1840 "end": { 1788 "end": {
1841 "column": 3, 1789 "column": 3,
1842 "line": 67 1790 "line": 64
1843 }, 1791 },
1844 "file": "src/components/services/tabs/TabItem.js", 1792 "file": "src/components/services/tabs/TabItem.js",
1845 "id": "tabs.item.wakeUpService", 1793 "id": "tabs.item.wakeUpService",
1846 "start": { 1794 "start": {
1847 "column": 17, 1795 "column": 17,
1848 "line": 64 1796 "line": 61
1849 } 1797 }
1850 }, 1798 },
1851 { 1799 {
1852 "defaultMessage": "!!!Delete Service", 1800 "defaultMessage": "!!!Delete Service",
1853 "end": { 1801 "end": {
1854 "column": 3, 1802 "column": 3,
1855 "line": 71 1803 "line": 68
1856 }, 1804 },
1857 "file": "src/components/services/tabs/TabItem.js", 1805 "file": "src/components/services/tabs/TabItem.js",
1858 "id": "tabs.item.deleteService", 1806 "id": "tabs.item.deleteService",
1859 "start": { 1807 "start": {
1860 "column": 17, 1808 "column": 17,
1861 "line": 68 1809 "line": 65
1862 } 1810 }
1863 }, 1811 },
1864 { 1812 {
1865 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?", 1813 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?",
1866 "end": { 1814 "end": {
1867 "column": 3, 1815 "column": 3,
1868 "line": 76 1816 "line": 73
1869 }, 1817 },
1870 "file": "src/components/services/tabs/TabItem.js", 1818 "file": "src/components/services/tabs/TabItem.js",
1871 "id": "tabs.item.confirmDeleteService", 1819 "id": "tabs.item.confirmDeleteService",
1872 "start": { 1820 "start": {
1873 "column": 24, 1821 "column": 24,
1874 "line": 72 1822 "line": 69
1875 } 1823 }
1876 } 1824 }
1877 ], 1825 ],
@@ -2044,104 +1992,91 @@
2044 "defaultMessage": "!!!Available services", 1992 "defaultMessage": "!!!Available services",
2045 "end": { 1993 "end": {
2046 "column": 3, 1994 "column": 3,
2047 "line": 18 1995 "line": 19
2048 }, 1996 },
2049 "file": "src/components/settings/navigation/SettingsNavigation.js", 1997 "file": "src/components/settings/navigation/SettingsNavigation.js",
2050 "id": "settings.navigation.availableServices", 1998 "id": "settings.navigation.availableServices",
2051 "start": { 1999 "start": {
2052 "column": 21, 2000 "column": 21,
2053 "line": 15 2001 "line": 16
2054 } 2002 }
2055 }, 2003 },
2056 { 2004 {
2057 "defaultMessage": "!!!Your services", 2005 "defaultMessage": "!!!Your services",
2058 "end": { 2006 "end": {
2059 "column": 3, 2007 "column": 3,
2060 "line": 22 2008 "line": 23
2061 }, 2009 },
2062 "file": "src/components/settings/navigation/SettingsNavigation.js", 2010 "file": "src/components/settings/navigation/SettingsNavigation.js",
2063 "id": "settings.navigation.yourServices", 2011 "id": "settings.navigation.yourServices",
2064 "start": { 2012 "start": {
2065 "column": 16, 2013 "column": 16,
2066 "line": 19 2014 "line": 20
2067 } 2015 }
2068 }, 2016 },
2069 { 2017 {
2070 "defaultMessage": "!!!Your workspaces", 2018 "defaultMessage": "!!!Your workspaces",
2071 "end": { 2019 "end": {
2072 "column": 3, 2020 "column": 3,
2073 "line": 26 2021 "line": 27
2074 }, 2022 },
2075 "file": "src/components/settings/navigation/SettingsNavigation.js", 2023 "file": "src/components/settings/navigation/SettingsNavigation.js",
2076 "id": "settings.navigation.yourWorkspaces", 2024 "id": "settings.navigation.yourWorkspaces",
2077 "start": { 2025 "start": {
2078 "column": 18, 2026 "column": 18,
2079 "line": 23 2027 "line": 24
2080 } 2028 }
2081 }, 2029 },
2082 { 2030 {
2083 "defaultMessage": "!!!Account", 2031 "defaultMessage": "!!!Account",
2084 "end": { 2032 "end": {
2085 "column": 3, 2033 "column": 3,
2086 "line": 30 2034 "line": 31
2087 }, 2035 },
2088 "file": "src/components/settings/navigation/SettingsNavigation.js", 2036 "file": "src/components/settings/navigation/SettingsNavigation.js",
2089 "id": "settings.navigation.account", 2037 "id": "settings.navigation.account",
2090 "start": { 2038 "start": {
2091 "column": 11, 2039 "column": 11,
2092 "line": 27 2040 "line": 28
2093 } 2041 }
2094 }, 2042 },
2095 { 2043 {
2096 "defaultMessage": "!!!Manage Team", 2044 "defaultMessage": "!!!Manage Team",
2097 "end": { 2045 "end": {
2098 "column": 3, 2046 "column": 3,
2099 "line": 34 2047 "line": 35
2100 }, 2048 },
2101 "file": "src/components/settings/navigation/SettingsNavigation.js", 2049 "file": "src/components/settings/navigation/SettingsNavigation.js",
2102 "id": "settings.navigation.team", 2050 "id": "settings.navigation.team",
2103 "start": { 2051 "start": {
2104 "column": 8, 2052 "column": 8,
2105 "line": 31 2053 "line": 32
2106 }
2107 },
2108 {
2109 "defaultMessage": "!!!Settings",
2110 "end": {
2111 "column": 3,
2112 "line": 38
2113 },
2114 "file": "src/components/settings/navigation/SettingsNavigation.js",
2115 "id": "settings.navigation.settings",
2116 "start": {
2117 "column": 12,
2118 "line": 35
2119 } 2054 }
2120 }, 2055 },
2121 { 2056 {
2122 "defaultMessage": "!!!About Ferdi", 2057 "defaultMessage": "!!!About Ferdi",
2123 "end": { 2058 "end": {
2124 "column": 3, 2059 "column": 3,
2125 "line": 42 2060 "line": 39
2126 }, 2061 },
2127 "file": "src/components/settings/navigation/SettingsNavigation.js", 2062 "file": "src/components/settings/navigation/SettingsNavigation.js",
2128 "id": "settings.navigation.supportFerdi", 2063 "id": "settings.navigation.supportFerdi",
2129 "start": { 2064 "start": {
2130 "column": 16, 2065 "column": 16,
2131 "line": 39 2066 "line": 36
2132 } 2067 }
2133 }, 2068 },
2134 { 2069 {
2135 "defaultMessage": "!!!Logout", 2070 "defaultMessage": "!!!Logout",
2136 "end": { 2071 "end": {
2137 "column": 3, 2072 "column": 3,
2138 "line": 46 2073 "line": 43
2139 }, 2074 },
2140 "file": "src/components/settings/navigation/SettingsNavigation.js", 2075 "file": "src/components/settings/navigation/SettingsNavigation.js",
2141 "id": "settings.navigation.logout", 2076 "id": "settings.navigation.logout",
2142 "start": { 2077 "start": {
2143 "column": 10, 2078 "column": 10,
2144 "line": 43 2079 "line": 40
2145 } 2080 }
2146 } 2081 }
2147 ], 2082 ],
@@ -2890,458 +2825,445 @@
2890 { 2825 {
2891 "descriptors": [ 2826 "descriptors": [
2892 { 2827 {
2893 "defaultMessage": "!!!Settings",
2894 "end": {
2895 "column": 3,
2896 "line": 24
2897 },
2898 "file": "src/components/settings/settings/EditSettingsForm.js",
2899 "id": "settings.app.headline",
2900 "start": {
2901 "column": 12,
2902 "line": 21
2903 }
2904 },
2905 {
2906 "defaultMessage": "!!!General", 2828 "defaultMessage": "!!!General",
2907 "end": { 2829 "end": {
2908 "column": 3, 2830 "column": 3,
2909 "line": 28 2831 "line": 24
2910 }, 2832 },
2911 "file": "src/components/settings/settings/EditSettingsForm.js", 2833 "file": "src/components/settings/settings/EditSettingsForm.js",
2912 "id": "settings.app.headlineGeneral", 2834 "id": "settings.app.headlineGeneral",
2913 "start": { 2835 "start": {
2914 "column": 19, 2836 "column": 19,
2915 "line": 25 2837 "line": 21
2916 } 2838 }
2917 }, 2839 },
2918 { 2840 {
2919 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 2841 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
2920 "end": { 2842 "end": {
2921 "column": 3, 2843 "column": 3,
2922 "line": 32 2844 "line": 28
2923 }, 2845 },
2924 "file": "src/components/settings/settings/EditSettingsForm.js", 2846 "file": "src/components/settings/settings/EditSettingsForm.js",
2925 "id": "settings.app.sentryInfo", 2847 "id": "settings.app.sentryInfo",
2926 "start": { 2848 "start": {
2927 "column": 14, 2849 "column": 14,
2928 "line": 29 2850 "line": 25
2929 } 2851 }
2930 }, 2852 },
2931 { 2853 {
2932 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 2854 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
2933 "end": { 2855 "end": {
2934 "column": 3, 2856 "column": 3,
2935 "line": 36 2857 "line": 32
2936 }, 2858 },
2937 "file": "src/components/settings/settings/EditSettingsForm.js", 2859 "file": "src/components/settings/settings/EditSettingsForm.js",
2938 "id": "settings.app.hibernateInfo", 2860 "id": "settings.app.hibernateInfo",
2939 "start": { 2861 "start": {
2940 "column": 17, 2862 "column": 17,
2941 "line": 33 2863 "line": 29
2942 } 2864 }
2943 }, 2865 },
2944 { 2866 {
2945 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 2867 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
2946 "end": { 2868 "end": {
2947 "column": 3, 2869 "column": 3,
2948 "line": 40 2870 "line": 36
2949 }, 2871 },
2950 "file": "src/components/settings/settings/EditSettingsForm.js", 2872 "file": "src/components/settings/settings/EditSettingsForm.js",
2951 "id": "settings.app.inactivityLockInfo", 2873 "id": "settings.app.inactivityLockInfo",
2952 "start": { 2874 "start": {
2953 "column": 22, 2875 "column": 22,
2954 "line": 37 2876 "line": 33
2955 } 2877 }
2956 }, 2878 },
2957 { 2879 {
2958 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", 2880 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)",
2959 "end": { 2881 "end": {
2960 "column": 3, 2882 "column": 3,
2961 "line": 44 2883 "line": 40
2962 }, 2884 },
2963 "file": "src/components/settings/settings/EditSettingsForm.js", 2885 "file": "src/components/settings/settings/EditSettingsForm.js",
2964 "id": "settings.app.todoServerInfo", 2886 "id": "settings.app.todoServerInfo",
2965 "start": { 2887 "start": {
2966 "column": 18, 2888 "column": 18,
2967 "line": 41 2889 "line": 37
2968 } 2890 }
2969 }, 2891 },
2970 { 2892 {
2971 "defaultMessage": "!!!Password", 2893 "defaultMessage": "!!!Password",
2972 "end": { 2894 "end": {
2973 "column": 3, 2895 "column": 3,
2974 "line": 48 2896 "line": 44
2975 }, 2897 },
2976 "file": "src/components/settings/settings/EditSettingsForm.js", 2898 "file": "src/components/settings/settings/EditSettingsForm.js",
2977 "id": "settings.app.lockedPassword", 2899 "id": "settings.app.lockedPassword",
2978 "start": { 2900 "start": {
2979 "column": 18, 2901 "column": 18,
2980 "line": 45 2902 "line": 41
2981 } 2903 }
2982 }, 2904 },
2983 { 2905 {
2984 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 2906 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
2985 "end": { 2907 "end": {
2986 "column": 3, 2908 "column": 3,
2987 "line": 52 2909 "line": 48
2988 }, 2910 },
2989 "file": "src/components/settings/settings/EditSettingsForm.js", 2911 "file": "src/components/settings/settings/EditSettingsForm.js",
2990 "id": "settings.app.lockedPasswordInfo", 2912 "id": "settings.app.lockedPasswordInfo",
2991 "start": { 2913 "start": {
2992 "column": 22, 2914 "column": 22,
2993 "line": 49 2915 "line": 45
2994 } 2916 }
2995 }, 2917 },
2996 { 2918 {
2997 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 2919 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
2998 "end": { 2920 "end": {
2999 "column": 3, 2921 "column": 3,
3000 "line": 56 2922 "line": 52
3001 }, 2923 },
3002 "file": "src/components/settings/settings/EditSettingsForm.js", 2924 "file": "src/components/settings/settings/EditSettingsForm.js",
3003 "id": "settings.app.lockInfo", 2925 "id": "settings.app.lockInfo",
3004 "start": { 2926 "start": {
3005 "column": 12, 2927 "column": 12,
3006 "line": 53 2928 "line": 49
3007 } 2929 }
3008 }, 2930 },
3009 { 2931 {
3010 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 2932 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
3011 "end": { 2933 "end": {
3012 "column": 3, 2934 "column": 3,
3013 "line": 60 2935 "line": 56
3014 }, 2936 },
3015 "file": "src/components/settings/settings/EditSettingsForm.js", 2937 "file": "src/components/settings/settings/EditSettingsForm.js",
3016 "id": "settings.app.scheduledDNDTimeInfo", 2938 "id": "settings.app.scheduledDNDTimeInfo",
3017 "start": { 2939 "start": {
3018 "column": 24, 2940 "column": 24,
3019 "line": 57 2941 "line": 53
3020 } 2942 }
3021 }, 2943 },
3022 { 2944 {
3023 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 2945 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
3024 "end": { 2946 "end": {
3025 "column": 3, 2947 "column": 3,
3026 "line": 64 2948 "line": 60
3027 }, 2949 },
3028 "file": "src/components/settings/settings/EditSettingsForm.js", 2950 "file": "src/components/settings/settings/EditSettingsForm.js",
3029 "id": "settings.app.scheduledDNDInfo", 2951 "id": "settings.app.scheduledDNDInfo",
3030 "start": { 2952 "start": {
3031 "column": 20, 2953 "column": 20,
3032 "line": 61 2954 "line": 57
3033 } 2955 }
3034 }, 2956 },
3035 { 2957 {
3036 "defaultMessage": "!!!Language", 2958 "defaultMessage": "!!!Language",
3037 "end": { 2959 "end": {
3038 "column": 3, 2960 "column": 3,
3039 "line": 68 2961 "line": 64
3040 }, 2962 },
3041 "file": "src/components/settings/settings/EditSettingsForm.js", 2963 "file": "src/components/settings/settings/EditSettingsForm.js",
3042 "id": "settings.app.headlineLanguage", 2964 "id": "settings.app.headlineLanguage",
3043 "start": { 2965 "start": {
3044 "column": 20, 2966 "column": 20,
3045 "line": 65 2967 "line": 61
3046 } 2968 }
3047 }, 2969 },
3048 { 2970 {
3049 "defaultMessage": "!!!Updates", 2971 "defaultMessage": "!!!Updates",
3050 "end": { 2972 "end": {
3051 "column": 3, 2973 "column": 3,
3052 "line": 72 2974 "line": 68
3053 }, 2975 },
3054 "file": "src/components/settings/settings/EditSettingsForm.js", 2976 "file": "src/components/settings/settings/EditSettingsForm.js",
3055 "id": "settings.app.headlineUpdates", 2977 "id": "settings.app.headlineUpdates",
3056 "start": { 2978 "start": {
3057 "column": 19, 2979 "column": 19,
3058 "line": 69 2980 "line": 65
3059 } 2981 }
3060 }, 2982 },
3061 { 2983 {
3062 "defaultMessage": "!!!Appearance", 2984 "defaultMessage": "!!!Appearance",
3063 "end": { 2985 "end": {
3064 "column": 3, 2986 "column": 3,
3065 "line": 76 2987 "line": 72
3066 }, 2988 },
3067 "file": "src/components/settings/settings/EditSettingsForm.js", 2989 "file": "src/components/settings/settings/EditSettingsForm.js",
3068 "id": "settings.app.headlineAppearance", 2990 "id": "settings.app.headlineAppearance",
3069 "start": { 2991 "start": {
3070 "column": 22, 2992 "column": 22,
3071 "line": 73 2993 "line": 69
3072 } 2994 }
3073 }, 2995 },
3074 { 2996 {
3075 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 2997 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
3076 "end": { 2998 "end": {
3077 "column": 3, 2999 "column": 3,
3078 "line": 80 3000 "line": 76
3079 }, 3001 },
3080 "file": "src/components/settings/settings/EditSettingsForm.js", 3002 "file": "src/components/settings/settings/EditSettingsForm.js",
3081 "id": "settings.app.universalDarkModeInfo", 3003 "id": "settings.app.universalDarkModeInfo",
3082 "start": { 3004 "start": {
3083 "column": 25, 3005 "column": 25,
3084 "line": 77 3006 "line": 73
3085 } 3007 }
3086 }, 3008 },
3087 { 3009 {
3088 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 3010 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
3089 "end": { 3011 "end": {
3090 "column": 3, 3012 "column": 3,
3091 "line": 84 3013 "line": 80
3092 }, 3014 },
3093 "file": "src/components/settings/settings/EditSettingsForm.js", 3015 "file": "src/components/settings/settings/EditSettingsForm.js",
3094 "id": "settings.app.accentColorInfo", 3016 "id": "settings.app.accentColorInfo",
3095 "start": { 3017 "start": {
3096 "column": 19, 3018 "column": 19,
3097 "line": 81 3019 "line": 77
3098 } 3020 }
3099 }, 3021 },
3100 { 3022 {
3101 "defaultMessage": "!!!Privacy", 3023 "defaultMessage": "!!!Privacy",
3102 "end": { 3024 "end": {
3103 "column": 3, 3025 "column": 3,
3104 "line": 88 3026 "line": 84
3105 }, 3027 },
3106 "file": "src/components/settings/settings/EditSettingsForm.js", 3028 "file": "src/components/settings/settings/EditSettingsForm.js",
3107 "id": "settings.app.headlinePrivacy", 3029 "id": "settings.app.headlinePrivacy",
3108 "start": { 3030 "start": {
3109 "column": 19, 3031 "column": 19,
3110 "line": 85 3032 "line": 81
3111 } 3033 }
3112 }, 3034 },
3113 { 3035 {
3114 "defaultMessage": "!!!Advanced", 3036 "defaultMessage": "!!!Advanced",
3115 "end": { 3037 "end": {
3116 "column": 3, 3038 "column": 3,
3117 "line": 92 3039 "line": 88
3118 }, 3040 },
3119 "file": "src/components/settings/settings/EditSettingsForm.js", 3041 "file": "src/components/settings/settings/EditSettingsForm.js",
3120 "id": "settings.app.headlineAdvanced", 3042 "id": "settings.app.headlineAdvanced",
3121 "start": { 3043 "start": {
3122 "column": 20, 3044 "column": 20,
3123 "line": 89 3045 "line": 85
3124 } 3046 }
3125 }, 3047 },
3126 { 3048 {
3127 "defaultMessage": "!!!Help us to translate Ferdi into your language.", 3049 "defaultMessage": "!!!Help us to translate Ferdi into your language.",
3128 "end": { 3050 "end": {
3129 "column": 3, 3051 "column": 3,
3130 "line": 96 3052 "line": 92
3131 }, 3053 },
3132 "file": "src/components/settings/settings/EditSettingsForm.js", 3054 "file": "src/components/settings/settings/EditSettingsForm.js",
3133 "id": "settings.app.translationHelp", 3055 "id": "settings.app.translationHelp",
3134 "start": { 3056 "start": {
3135 "column": 19, 3057 "column": 19,
3136 "line": 93 3058 "line": 89
3137 } 3059 }
3138 }, 3060 },
3139 { 3061 {
3140 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 3062 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
3141 "end": { 3063 "end": {
3142 "column": 3, 3064 "column": 3,
3143 "line": 100 3065 "line": 96
3144 }, 3066 },
3145 "file": "src/components/settings/settings/EditSettingsForm.js", 3067 "file": "src/components/settings/settings/EditSettingsForm.js",
3146 "id": "settings.app.spellCheckerLanguageInfo", 3068 "id": "settings.app.spellCheckerLanguageInfo",
3147 "start": { 3069 "start": {
3148 "column": 28, 3070 "column": 28,
3149 "line": 97 3071 "line": 93
3150 } 3072 }
3151 }, 3073 },
3152 { 3074 {
3153 "defaultMessage": "!!!Cache", 3075 "defaultMessage": "!!!Cache",
3154 "end": { 3076 "end": {
3155 "column": 3, 3077 "column": 3,
3156 "line": 104 3078 "line": 100
3157 }, 3079 },
3158 "file": "src/components/settings/settings/EditSettingsForm.js", 3080 "file": "src/components/settings/settings/EditSettingsForm.js",
3159 "id": "settings.app.subheadlineCache", 3081 "id": "settings.app.subheadlineCache",
3160 "start": { 3082 "start": {
3161 "column": 20, 3083 "column": 20,
3162 "line": 101 3084 "line": 97
3163 } 3085 }
3164 }, 3086 },
3165 { 3087 {
3166 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", 3088 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.",
3167 "end": { 3089 "end": {
3168 "column": 3, 3090 "column": 3,
3169 "line": 108 3091 "line": 104
3170 }, 3092 },
3171 "file": "src/components/settings/settings/EditSettingsForm.js", 3093 "file": "src/components/settings/settings/EditSettingsForm.js",
3172 "id": "settings.app.cacheInfo", 3094 "id": "settings.app.cacheInfo",
3173 "start": { 3095 "start": {
3174 "column": 13, 3096 "column": 13,
3175 "line": 105 3097 "line": 101
3176 } 3098 }
3177 }, 3099 },
3178 { 3100 {
3179 "defaultMessage": "!!!Couldn't clear all cache", 3101 "defaultMessage": "!!!Couldn't clear all cache",
3180 "end": { 3102 "end": {
3181 "column": 3, 3103 "column": 3,
3182 "line": 112 3104 "line": 108
3183 }, 3105 },
3184 "file": "src/components/settings/settings/EditSettingsForm.js", 3106 "file": "src/components/settings/settings/EditSettingsForm.js",
3185 "id": "settings.app.cacheNotCleared", 3107 "id": "settings.app.cacheNotCleared",
3186 "start": { 3108 "start": {
3187 "column": 19, 3109 "column": 19,
3188 "line": 109 3110 "line": 105
3189 } 3111 }
3190 }, 3112 },
3191 { 3113 {
3192 "defaultMessage": "!!!Clear cache", 3114 "defaultMessage": "!!!Clear cache",
3193 "end": { 3115 "end": {
3194 "column": 3, 3116 "column": 3,
3195 "line": 116 3117 "line": 112
3196 }, 3118 },
3197 "file": "src/components/settings/settings/EditSettingsForm.js", 3119 "file": "src/components/settings/settings/EditSettingsForm.js",
3198 "id": "settings.app.buttonClearAllCache", 3120 "id": "settings.app.buttonClearAllCache",
3199 "start": { 3121 "start": {
3200 "column": 23, 3122 "column": 23,
3201 "line": 113 3123 "line": 109
3202 } 3124 }
3203 }, 3125 },
3204 { 3126 {
3205 "defaultMessage": "!!!Ferdi Profile", 3127 "defaultMessage": "!!!Ferdi Profile",
3206 "end": { 3128 "end": {
3207 "column": 3, 3129 "column": 3,
3208 "line": 120 3130 "line": 116
3209 }, 3131 },
3210 "file": "src/components/settings/settings/EditSettingsForm.js", 3132 "file": "src/components/settings/settings/EditSettingsForm.js",
3211 "id": "settings.app.subheadlineFerdiProfile", 3133 "id": "settings.app.subheadlineFerdiProfile",
3212 "start": { 3134 "start": {
3213 "column": 27, 3135 "column": 27,
3214 "line": 117 3136 "line": 113
3215 } 3137 }
3216 }, 3138 },
3217 { 3139 {
3218 "defaultMessage": "!!!Open Profile folder", 3140 "defaultMessage": "!!!Open Profile folder",
3219 "end": { 3141 "end": {
3220 "column": 3, 3142 "column": 3,
3221 "line": 124 3143 "line": 120
3222 }, 3144 },
3223 "file": "src/components/settings/settings/EditSettingsForm.js", 3145 "file": "src/components/settings/settings/EditSettingsForm.js",
3224 "id": "settings.app.buttonOpenFerdiProfileFolder", 3146 "id": "settings.app.buttonOpenFerdiProfileFolder",
3225 "start": { 3147 "start": {
3226 "column": 32, 3148 "column": 32,
3227 "line": 121 3149 "line": 117
3228 } 3150 }
3229 }, 3151 },
3230 { 3152 {
3231 "defaultMessage": "!!!Open Service Recipes folder", 3153 "defaultMessage": "!!!Open Service Recipes folder",
3232 "end": { 3154 "end": {
3233 "column": 3, 3155 "column": 3,
3234 "line": 128 3156 "line": 124
3235 }, 3157 },
3236 "file": "src/components/settings/settings/EditSettingsForm.js", 3158 "file": "src/components/settings/settings/EditSettingsForm.js",
3237 "id": "settings.app.buttonOpenFerdiServiceRecipesFolder", 3159 "id": "settings.app.buttonOpenFerdiServiceRecipesFolder",
3238 "start": { 3160 "start": {
3239 "column": 39, 3161 "column": 39,
3240 "line": 125 3162 "line": 121
3241 } 3163 }
3242 }, 3164 },
3243 { 3165 {
3244 "defaultMessage": "!!!Check for updates", 3166 "defaultMessage": "!!!Check for updates",
3245 "end": { 3167 "end": {
3246 "column": 3, 3168 "column": 3,
3247 "line": 132 3169 "line": 128
3248 }, 3170 },
3249 "file": "src/components/settings/settings/EditSettingsForm.js", 3171 "file": "src/components/settings/settings/EditSettingsForm.js",
3250 "id": "settings.app.buttonSearchForUpdate", 3172 "id": "settings.app.buttonSearchForUpdate",
3251 "start": { 3173 "start": {
3252 "column": 25, 3174 "column": 25,
3253 "line": 129 3175 "line": 125
3254 } 3176 }
3255 }, 3177 },
3256 { 3178 {
3257 "defaultMessage": "!!!Restart & install update", 3179 "defaultMessage": "!!!Restart & install update",
3258 "end": { 3180 "end": {
3259 "column": 3, 3181 "column": 3,
3260 "line": 136 3182 "line": 132
3261 }, 3183 },
3262 "file": "src/components/settings/settings/EditSettingsForm.js", 3184 "file": "src/components/settings/settings/EditSettingsForm.js",
3263 "id": "settings.app.buttonInstallUpdate", 3185 "id": "settings.app.buttonInstallUpdate",
3264 "start": { 3186 "start": {
3265 "column": 23, 3187 "column": 23,
3266 "line": 133 3188 "line": 129
3267 } 3189 }
3268 }, 3190 },
3269 { 3191 {
3270 "defaultMessage": "!!!Is searching for update", 3192 "defaultMessage": "!!!Is searching for update",
3271 "end": { 3193 "end": {
3272 "column": 3, 3194 "column": 3,
3273 "line": 140 3195 "line": 136
3274 }, 3196 },
3275 "file": "src/components/settings/settings/EditSettingsForm.js", 3197 "file": "src/components/settings/settings/EditSettingsForm.js",
3276 "id": "settings.app.updateStatusSearching", 3198 "id": "settings.app.updateStatusSearching",
3277 "start": { 3199 "start": {
3278 "column": 25, 3200 "column": 25,
3279 "line": 137 3201 "line": 133
3280 } 3202 }
3281 }, 3203 },
3282 { 3204 {
3283 "defaultMessage": "!!!Update available, downloading...", 3205 "defaultMessage": "!!!Update available, downloading...",
3284 "end": { 3206 "end": {
3285 "column": 3, 3207 "column": 3,
3286 "line": 144 3208 "line": 140
3287 }, 3209 },
3288 "file": "src/components/settings/settings/EditSettingsForm.js", 3210 "file": "src/components/settings/settings/EditSettingsForm.js",
3289 "id": "settings.app.updateStatusAvailable", 3211 "id": "settings.app.updateStatusAvailable",
3290 "start": { 3212 "start": {
3291 "column": 25, 3213 "column": 25,
3292 "line": 141 3214 "line": 137
3293 } 3215 }
3294 }, 3216 },
3295 { 3217 {
3296 "defaultMessage": "!!!You are using the latest version of Ferdi", 3218 "defaultMessage": "!!!You are using the latest version of Ferdi",
3297 "end": { 3219 "end": {
3298 "column": 3, 3220 "column": 3,
3299 "line": 148 3221 "line": 144
3300 }, 3222 },
3301 "file": "src/components/settings/settings/EditSettingsForm.js", 3223 "file": "src/components/settings/settings/EditSettingsForm.js",
3302 "id": "settings.app.updateStatusUpToDate", 3224 "id": "settings.app.updateStatusUpToDate",
3303 "start": { 3225 "start": {
3304 "column": 24, 3226 "column": 24,
3305 "line": 145 3227 "line": 141
3306 } 3228 }
3307 }, 3229 },
3308 { 3230 {
3309 "defaultMessage": "!!!Current version:", 3231 "defaultMessage": "!!!Current version:",
3310 "end": { 3232 "end": {
3311 "column": 3, 3233 "column": 3,
3312 "line": 152 3234 "line": 148
3313 }, 3235 },
3314 "file": "src/components/settings/settings/EditSettingsForm.js", 3236 "file": "src/components/settings/settings/EditSettingsForm.js",
3315 "id": "settings.app.currentVersion", 3237 "id": "settings.app.currentVersion",
3316 "start": { 3238 "start": {
3317 "column": 18, 3239 "column": 18,
3318 "line": 149 3240 "line": 145
3319 } 3241 }
3320 }, 3242 },
3321 { 3243 {
3322 "defaultMessage": "!!!Changes require restart", 3244 "defaultMessage": "!!!Changes require restart",
3323 "end": { 3245 "end": {
3324 "column": 3, 3246 "column": 3,
3325 "line": 156 3247 "line": 152
3326 }, 3248 },
3327 "file": "src/components/settings/settings/EditSettingsForm.js", 3249 "file": "src/components/settings/settings/EditSettingsForm.js",
3328 "id": "settings.app.restartRequired", 3250 "id": "settings.app.restartRequired",
3329 "start": { 3251 "start": {
3330 "column": 22, 3252 "column": 22,
3331 "line": 153 3253 "line": 149
3332 } 3254 }
3333 }, 3255 },
3334 { 3256 {
3335 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", 3257 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
3336 "end": { 3258 "end": {
3337 "column": 3, 3259 "column": 3,
3338 "line": 160 3260 "line": 156
3339 }, 3261 },
3340 "file": "src/components/settings/settings/EditSettingsForm.js", 3262 "file": "src/components/settings/settings/EditSettingsForm.js",
3341 "id": "settings.app.languageDisclaimer", 3263 "id": "settings.app.languageDisclaimer",
3342 "start": { 3264 "start": {
3343 "column": 22, 3265 "column": 22,
3344 "line": 157 3266 "line": 153
3345 } 3267 }
3346 } 3268 }
3347 ], 3269 ],
@@ -4302,536 +4224,549 @@
4302 } 4224 }
4303 }, 4225 },
4304 { 4226 {
4305 "defaultMessage": "!!!Always show Ferdi in System Tray", 4227 "defaultMessage": "!!!Confirm when quitting Ferdi",
4306 "end": { 4228 "end": {
4307 "column": 3, 4229 "column": 3,
4308 "line": 51 4230 "line": 51
4309 }, 4231 },
4310 "file": "src/containers/settings/EditSettingsScreen.js", 4232 "file": "src/containers/settings/EditSettingsScreen.js",
4233 "id": "settings.app.form.confirmOnQuit",
4234 "start": {
4235 "column": 17,
4236 "line": 48
4237 }
4238 },
4239 {
4240 "defaultMessage": "!!!Always show Ferdi in System Tray",
4241 "end": {
4242 "column": 3,
4243 "line": 55
4244 },
4245 "file": "src/containers/settings/EditSettingsScreen.js",
4311 "id": "settings.app.form.enableSystemTray", 4246 "id": "settings.app.form.enableSystemTray",
4312 "start": { 4247 "start": {
4313 "column": 20, 4248 "column": 20,
4314 "line": 48 4249 "line": 52
4315 } 4250 }
4316 }, 4251 },
4317 { 4252 {
4318 "defaultMessage": "!!!Always show Ferdi in Menu Bar", 4253 "defaultMessage": "!!!Always show Ferdi in Menu Bar",
4319 "end": { 4254 "end": {
4320 "column": 3, 4255 "column": 3,
4321 "line": 55 4256 "line": 59
4322 }, 4257 },
4323 "file": "src/containers/settings/EditSettingsScreen.js", 4258 "file": "src/containers/settings/EditSettingsScreen.js",
4324 "id": "settings.app.form.enableMenuBar", 4259 "id": "settings.app.form.enableMenuBar",
4325 "start": { 4260 "start": {
4326 "column": 17, 4261 "column": 17,
4327 "line": 52 4262 "line": 56
4328 } 4263 }
4329 }, 4264 },
4330 { 4265 {
4331 "defaultMessage": "!!!Reload Ferdi after system resume", 4266 "defaultMessage": "!!!Reload Ferdi after system resume",
4332 "end": { 4267 "end": {
4333 "column": 3, 4268 "column": 3,
4334 "line": 59 4269 "line": 63
4335 }, 4270 },
4336 "file": "src/containers/settings/EditSettingsScreen.js", 4271 "file": "src/containers/settings/EditSettingsScreen.js",
4337 "id": "settings.app.form.reloadAfterResume", 4272 "id": "settings.app.form.reloadAfterResume",
4338 "start": { 4273 "start": {
4339 "column": 21, 4274 "column": 21,
4340 "line": 56 4275 "line": 60
4341 } 4276 }
4342 }, 4277 },
4343 { 4278 {
4344 "defaultMessage": "!!!Minimize Ferdi to system tray", 4279 "defaultMessage": "!!!Minimize Ferdi to system tray",
4345 "end": { 4280 "end": {
4346 "column": 3, 4281 "column": 3,
4347 "line": 63 4282 "line": 67
4348 }, 4283 },
4349 "file": "src/containers/settings/EditSettingsScreen.js", 4284 "file": "src/containers/settings/EditSettingsScreen.js",
4350 "id": "settings.app.form.minimizeToSystemTray", 4285 "id": "settings.app.form.minimizeToSystemTray",
4351 "start": { 4286 "start": {
4352 "column": 24, 4287 "column": 24,
4353 "line": 60 4288 "line": 64
4354 } 4289 }
4355 }, 4290 },
4356 { 4291 {
4357 "defaultMessage": "!!!Close Ferdi to system tray", 4292 "defaultMessage": "!!!Close Ferdi to system tray",
4358 "end": { 4293 "end": {
4359 "column": 3, 4294 "column": 3,
4360 "line": 67 4295 "line": 71
4361 }, 4296 },
4362 "file": "src/containers/settings/EditSettingsScreen.js", 4297 "file": "src/containers/settings/EditSettingsScreen.js",
4363 "id": "settings.app.form.closeToSystemTray", 4298 "id": "settings.app.form.closeToSystemTray",
4364 "start": { 4299 "start": {
4365 "column": 21, 4300 "column": 21,
4366 "line": 64 4301 "line": 68
4367 } 4302 }
4368 }, 4303 },
4369 { 4304 {
4370 "defaultMessage": "!!!Don't show message content in notifications", 4305 "defaultMessage": "!!!Don't show message content in notifications",
4371 "end": { 4306 "end": {
4372 "column": 3, 4307 "column": 3,
4373 "line": 71 4308 "line": 75
4374 }, 4309 },
4375 "file": "src/containers/settings/EditSettingsScreen.js", 4310 "file": "src/containers/settings/EditSettingsScreen.js",
4376 "id": "settings.app.form.privateNotifications", 4311 "id": "settings.app.form.privateNotifications",
4377 "start": { 4312 "start": {
4378 "column": 24, 4313 "column": 24,
4379 "line": 68 4314 "line": 72
4380 } 4315 }
4381 }, 4316 },
4382 { 4317 {
4383 "defaultMessage": "!!!Don't show notifications for clipboard events", 4318 "defaultMessage": "!!!Don't show notifications for clipboard events",
4384 "end": { 4319 "end": {
4385 "column": 3, 4320 "column": 3,
4386 "line": 75 4321 "line": 79
4387 }, 4322 },
4388 "file": "src/containers/settings/EditSettingsScreen.js", 4323 "file": "src/containers/settings/EditSettingsScreen.js",
4389 "id": "settings.app.form.clipboardNotifications", 4324 "id": "settings.app.form.clipboardNotifications",
4390 "start": { 4325 "start": {
4391 "column": 26, 4326 "column": 26,
4392 "line": 72 4327 "line": 76
4393 } 4328 }
4394 }, 4329 },
4395 { 4330 {
4396 "defaultMessage": "!!!Notify TaskBar/Dock on new message", 4331 "defaultMessage": "!!!Notify TaskBar/Dock on new message",
4397 "end": { 4332 "end": {
4398 "column": 3, 4333 "column": 3,
4399 "line": 79 4334 "line": 83
4400 }, 4335 },
4401 "file": "src/containers/settings/EditSettingsScreen.js", 4336 "file": "src/containers/settings/EditSettingsScreen.js",
4402 "id": "settings.app.form.notifyTaskBarOnMessage", 4337 "id": "settings.app.form.notifyTaskBarOnMessage",
4403 "start": { 4338 "start": {
4404 "column": 26, 4339 "column": 26,
4405 "line": 76 4340 "line": 80
4406 } 4341 }
4407 }, 4342 },
4408 { 4343 {
4409 "defaultMessage": "!!!Navigation bar behaviour", 4344 "defaultMessage": "!!!Navigation bar behaviour",
4410 "end": { 4345 "end": {
4411 "column": 3, 4346 "column": 3,
4412 "line": 83 4347 "line": 87
4413 }, 4348 },
4414 "file": "src/containers/settings/EditSettingsScreen.js", 4349 "file": "src/containers/settings/EditSettingsScreen.js",
4415 "id": "settings.app.form.navigationBarBehaviour", 4350 "id": "settings.app.form.navigationBarBehaviour",
4416 "start": { 4351 "start": {
4417 "column": 26, 4352 "column": 26,
4418 "line": 80 4353 "line": 84
4419 } 4354 }
4420 }, 4355 },
4421 { 4356 {
4422 "defaultMessage": "!!!Search engine", 4357 "defaultMessage": "!!!Search engine",
4423 "end": { 4358 "end": {
4424 "column": 3, 4359 "column": 3,
4425 "line": 87 4360 "line": 91
4426 }, 4361 },
4427 "file": "src/containers/settings/EditSettingsScreen.js", 4362 "file": "src/containers/settings/EditSettingsScreen.js",
4428 "id": "settings.app.form.searchEngine", 4363 "id": "settings.app.form.searchEngine",
4429 "start": { 4364 "start": {
4430 "column": 16, 4365 "column": 16,
4431 "line": 84 4366 "line": 88
4432 } 4367 }
4433 }, 4368 },
4434 { 4369 {
4435 "defaultMessage": "!!!Send telemetry data", 4370 "defaultMessage": "!!!Send telemetry data",
4436 "end": { 4371 "end": {
4437 "column": 3, 4372 "column": 3,
4438 "line": 91 4373 "line": 95
4439 }, 4374 },
4440 "file": "src/containers/settings/EditSettingsScreen.js", 4375 "file": "src/containers/settings/EditSettingsScreen.js",
4441 "id": "settings.app.form.sentry", 4376 "id": "settings.app.form.sentry",
4442 "start": { 4377 "start": {
4443 "column": 10, 4378 "column": 10,
4444 "line": 88 4379 "line": 92
4445 } 4380 }
4446 }, 4381 },
4447 { 4382 {
4448 "defaultMessage": "!!!Keep services in hibernation on startup", 4383 "defaultMessage": "!!!Keep services in hibernation on startup",
4449 "end": { 4384 "end": {
4450 "column": 3, 4385 "column": 3,
4451 "line": 95 4386 "line": 99
4452 }, 4387 },
4453 "file": "src/containers/settings/EditSettingsScreen.js", 4388 "file": "src/containers/settings/EditSettingsScreen.js",
4454 "id": "settings.app.form.hibernateOnStartup", 4389 "id": "settings.app.form.hibernateOnStartup",
4455 "start": { 4390 "start": {
4456 "column": 22, 4391 "column": 22,
4457 "line": 92 4392 "line": 96
4458 } 4393 }
4459 }, 4394 },
4460 { 4395 {
4461 "defaultMessage": "!!!Hibernation strategy", 4396 "defaultMessage": "!!!Hibernation strategy",
4462 "end": { 4397 "end": {
4463 "column": 3, 4398 "column": 3,
4464 "line": 99 4399 "line": 103
4465 }, 4400 },
4466 "file": "src/containers/settings/EditSettingsScreen.js", 4401 "file": "src/containers/settings/EditSettingsScreen.js",
4467 "id": "settings.app.form.hibernationStrategy", 4402 "id": "settings.app.form.hibernationStrategy",
4468 "start": { 4403 "start": {
4469 "column": 23, 4404 "column": 23,
4470 "line": 96 4405 "line": 100
4471 } 4406 }
4472 }, 4407 },
4473 { 4408 {
4474 "defaultMessage": "!!!Wake up strategy", 4409 "defaultMessage": "!!!Wake up strategy",
4475 "end": { 4410 "end": {
4476 "column": 3, 4411 "column": 3,
4477 "line": 103 4412 "line": 107
4478 }, 4413 },
4479 "file": "src/containers/settings/EditSettingsScreen.js", 4414 "file": "src/containers/settings/EditSettingsScreen.js",
4480 "id": "settings.app.form.wakeUpStrategy", 4415 "id": "settings.app.form.wakeUpStrategy",
4481 "start": { 4416 "start": {
4482 "column": 18, 4417 "column": 18,
4483 "line": 100 4418 "line": 104
4484 } 4419 }
4485 }, 4420 },
4486 { 4421 {
4487 "defaultMessage": "!!!Todo Server", 4422 "defaultMessage": "!!!Todo Server",
4488 "end": { 4423 "end": {
4489 "column": 3, 4424 "column": 3,
4490 "line": 107 4425 "line": 111
4491 }, 4426 },
4492 "file": "src/containers/settings/EditSettingsScreen.js", 4427 "file": "src/containers/settings/EditSettingsScreen.js",
4493 "id": "settings.app.form.predefinedTodoServer", 4428 "id": "settings.app.form.predefinedTodoServer",
4494 "start": { 4429 "start": {
4495 "column": 24, 4430 "column": 24,
4496 "line": 104 4431 "line": 108
4497 } 4432 }
4498 }, 4433 },
4499 { 4434 {
4500 "defaultMessage": "!!!Custom TodoServer", 4435 "defaultMessage": "!!!Custom TodoServer",
4501 "end": { 4436 "end": {
4502 "column": 3, 4437 "column": 3,
4503 "line": 111 4438 "line": 115
4504 }, 4439 },
4505 "file": "src/containers/settings/EditSettingsScreen.js", 4440 "file": "src/containers/settings/EditSettingsScreen.js",
4506 "id": "settings.app.form.customTodoServer", 4441 "id": "settings.app.form.customTodoServer",
4507 "start": { 4442 "start": {
4508 "column": 20, 4443 "column": 20,
4509 "line": 108 4444 "line": 112
4510 } 4445 }
4511 }, 4446 },
4512 { 4447 {
4513 "defaultMessage": "!!!Enable Password Lock", 4448 "defaultMessage": "!!!Enable Password Lock",
4514 "end": { 4449 "end": {
4515 "column": 3, 4450 "column": 3,
4516 "line": 115 4451 "line": 119
4517 }, 4452 },
4518 "file": "src/containers/settings/EditSettingsScreen.js", 4453 "file": "src/containers/settings/EditSettingsScreen.js",
4519 "id": "settings.app.form.enableLock", 4454 "id": "settings.app.form.enableLock",
4520 "start": { 4455 "start": {
4521 "column": 14, 4456 "column": 14,
4522 "line": 112 4457 "line": 116
4523 } 4458 }
4524 }, 4459 },
4525 { 4460 {
4526 "defaultMessage": "!!!Password", 4461 "defaultMessage": "!!!Password",
4527 "end": { 4462 "end": {
4528 "column": 3, 4463 "column": 3,
4529 "line": 119 4464 "line": 123
4530 }, 4465 },
4531 "file": "src/containers/settings/EditSettingsScreen.js", 4466 "file": "src/containers/settings/EditSettingsScreen.js",
4532 "id": "settings.app.form.lockPassword", 4467 "id": "settings.app.form.lockPassword",
4533 "start": { 4468 "start": {
4534 "column": 16, 4469 "column": 16,
4535 "line": 116 4470 "line": 120
4536 } 4471 }
4537 }, 4472 },
4538 { 4473 {
4539 "defaultMessage": "!!!Allow using Touch ID to unlock", 4474 "defaultMessage": "!!!Allow using Touch ID to unlock",
4540 "end": { 4475 "end": {
4541 "column": 3, 4476 "column": 3,
4542 "line": 123 4477 "line": 127
4543 }, 4478 },
4544 "file": "src/containers/settings/EditSettingsScreen.js", 4479 "file": "src/containers/settings/EditSettingsScreen.js",
4545 "id": "settings.app.form.useTouchIdToUnlock", 4480 "id": "settings.app.form.useTouchIdToUnlock",
4546 "start": { 4481 "start": {
4547 "column": 22, 4482 "column": 22,
4548 "line": 120 4483 "line": 124
4549 } 4484 }
4550 }, 4485 },
4551 { 4486 {
4552 "defaultMessage": "!!!Lock after inactivity", 4487 "defaultMessage": "!!!Lock after inactivity",
4553 "end": { 4488 "end": {
4554 "column": 3, 4489 "column": 3,
4555 "line": 127 4490 "line": 131
4556 }, 4491 },
4557 "file": "src/containers/settings/EditSettingsScreen.js", 4492 "file": "src/containers/settings/EditSettingsScreen.js",
4558 "id": "settings.app.form.inactivityLock", 4493 "id": "settings.app.form.inactivityLock",
4559 "start": { 4494 "start": {
4560 "column": 18, 4495 "column": 18,
4561 "line": 124 4496 "line": 128
4562 } 4497 }
4563 }, 4498 },
4564 { 4499 {
4565 "defaultMessage": "!!!Enable scheduled Do-not-Disturb", 4500 "defaultMessage": "!!!Enable scheduled Do-not-Disturb",
4566 "end": { 4501 "end": {
4567 "column": 3, 4502 "column": 3,
4568 "line": 131 4503 "line": 135
4569 }, 4504 },
4570 "file": "src/containers/settings/EditSettingsScreen.js", 4505 "file": "src/containers/settings/EditSettingsScreen.js",
4571 "id": "settings.app.form.scheduledDNDEnabled", 4506 "id": "settings.app.form.scheduledDNDEnabled",
4572 "start": { 4507 "start": {
4573 "column": 23, 4508 "column": 23,
4574 "line": 128 4509 "line": 132
4575 } 4510 }
4576 }, 4511 },
4577 { 4512 {
4578 "defaultMessage": "!!!From", 4513 "defaultMessage": "!!!From",
4579 "end": { 4514 "end": {
4580 "column": 3, 4515 "column": 3,
4581 "line": 135 4516 "line": 139
4582 }, 4517 },
4583 "file": "src/containers/settings/EditSettingsScreen.js", 4518 "file": "src/containers/settings/EditSettingsScreen.js",
4584 "id": "settings.app.form.scheduledDNDStart", 4519 "id": "settings.app.form.scheduledDNDStart",
4585 "start": { 4520 "start": {
4586 "column": 21, 4521 "column": 21,
4587 "line": 132 4522 "line": 136
4588 } 4523 }
4589 }, 4524 },
4590 { 4525 {
4591 "defaultMessage": "!!!To", 4526 "defaultMessage": "!!!To",
4592 "end": { 4527 "end": {
4593 "column": 3, 4528 "column": 3,
4594 "line": 139 4529 "line": 143
4595 }, 4530 },
4596 "file": "src/containers/settings/EditSettingsScreen.js", 4531 "file": "src/containers/settings/EditSettingsScreen.js",
4597 "id": "settings.app.form.scheduledDNDEnd", 4532 "id": "settings.app.form.scheduledDNDEnd",
4598 "start": { 4533 "start": {
4599 "column": 19, 4534 "column": 19,
4600 "line": 136 4535 "line": 140
4601 } 4536 }
4602 }, 4537 },
4603 { 4538 {
4604 "defaultMessage": "!!!Language", 4539 "defaultMessage": "!!!Language",
4605 "end": { 4540 "end": {
4606 "column": 3, 4541 "column": 3,
4607 "line": 143 4542 "line": 147
4608 }, 4543 },
4609 "file": "src/containers/settings/EditSettingsScreen.js", 4544 "file": "src/containers/settings/EditSettingsScreen.js",
4610 "id": "settings.app.form.language", 4545 "id": "settings.app.form.language",
4611 "start": { 4546 "start": {
4612 "column": 12, 4547 "column": 12,
4613 "line": 140 4548 "line": 144
4614 } 4549 }
4615 }, 4550 },
4616 { 4551 {
4617 "defaultMessage": "!!!Dark Mode", 4552 "defaultMessage": "!!!Dark Mode",
4618 "end": { 4553 "end": {
4619 "column": 3, 4554 "column": 3,
4620 "line": 147 4555 "line": 151
4621 }, 4556 },
4622 "file": "src/containers/settings/EditSettingsScreen.js", 4557 "file": "src/containers/settings/EditSettingsScreen.js",
4623 "id": "settings.app.form.darkMode", 4558 "id": "settings.app.form.darkMode",
4624 "start": { 4559 "start": {
4625 "column": 12, 4560 "column": 12,
4626 "line": 144 4561 "line": 148
4627 } 4562 }
4628 }, 4563 },
4629 { 4564 {
4630 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", 4565 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting",
4631 "end": { 4566 "end": {
4632 "column": 3, 4567 "column": 3,
4633 "line": 151 4568 "line": 155
4634 }, 4569 },
4635 "file": "src/containers/settings/EditSettingsScreen.js", 4570 "file": "src/containers/settings/EditSettingsScreen.js",
4636 "id": "settings.app.form.adaptableDarkMode", 4571 "id": "settings.app.form.adaptableDarkMode",
4637 "start": { 4572 "start": {
4638 "column": 21, 4573 "column": 21,
4639 "line": 148 4574 "line": 152
4640 } 4575 }
4641 }, 4576 },
4642 { 4577 {
4643 "defaultMessage": "!!!Enable universal Dark Mode", 4578 "defaultMessage": "!!!Enable universal Dark Mode",
4644 "end": { 4579 "end": {
4645 "column": 3, 4580 "column": 3,
4646 "line": 155 4581 "line": 159
4647 }, 4582 },
4648 "file": "src/containers/settings/EditSettingsScreen.js", 4583 "file": "src/containers/settings/EditSettingsScreen.js",
4649 "id": "settings.app.form.universalDarkMode", 4584 "id": "settings.app.form.universalDarkMode",
4650 "start": { 4585 "start": {
4651 "column": 21, 4586 "column": 21,
4652 "line": 152 4587 "line": 156
4653 } 4588 }
4654 }, 4589 },
4655 { 4590 {
4656 "defaultMessage": "!!!Sidebar width", 4591 "defaultMessage": "!!!Sidebar width",
4657 "end": { 4592 "end": {
4658 "column": 3, 4593 "column": 3,
4659 "line": 159 4594 "line": 163
4660 }, 4595 },
4661 "file": "src/containers/settings/EditSettingsScreen.js", 4596 "file": "src/containers/settings/EditSettingsScreen.js",
4662 "id": "settings.app.form.serviceRibbonWidth", 4597 "id": "settings.app.form.serviceRibbonWidth",
4663 "start": { 4598 "start": {
4664 "column": 22, 4599 "column": 22,
4665 "line": 156 4600 "line": 160
4666 } 4601 }
4667 }, 4602 },
4668 { 4603 {
4669 "defaultMessage": "!!!Service icon size", 4604 "defaultMessage": "!!!Service icon size",
4670 "end": { 4605 "end": {
4671 "column": 3, 4606 "column": 3,
4672 "line": 163 4607 "line": 167
4673 }, 4608 },
4674 "file": "src/containers/settings/EditSettingsScreen.js", 4609 "file": "src/containers/settings/EditSettingsScreen.js",
4675 "id": "settings.app.form.iconSize", 4610 "id": "settings.app.form.iconSize",
4676 "start": { 4611 "start": {
4677 "column": 12, 4612 "column": 12,
4678 "line": 160 4613 "line": 164
4679 } 4614 }
4680 }, 4615 },
4681 { 4616 {
4682 "defaultMessage": "!!!Use horizontal style", 4617 "defaultMessage": "!!!Use horizontal style",
4683 "end": { 4618 "end": {
4684 "column": 3, 4619 "column": 3,
4685 "line": 167 4620 "line": 171
4686 }, 4621 },
4687 "file": "src/containers/settings/EditSettingsScreen.js", 4622 "file": "src/containers/settings/EditSettingsScreen.js",
4688 "id": "settings.app.form.useVerticalStyle", 4623 "id": "settings.app.form.useVerticalStyle",
4689 "start": { 4624 "start": {
4690 "column": 20, 4625 "column": 20,
4691 "line": 164 4626 "line": 168
4692 } 4627 }
4693 }, 4628 },
4694 { 4629 {
4695 "defaultMessage": "!!!Always show workspace drawer", 4630 "defaultMessage": "!!!Always show workspace drawer",
4696 "end": { 4631 "end": {
4697 "column": 3, 4632 "column": 3,
4698 "line": 171 4633 "line": 175
4699 }, 4634 },
4700 "file": "src/containers/settings/EditSettingsScreen.js", 4635 "file": "src/containers/settings/EditSettingsScreen.js",
4701 "id": "settings.app.form.alwaysShowWorkspaces", 4636 "id": "settings.app.form.alwaysShowWorkspaces",
4702 "start": { 4637 "start": {
4703 "column": 24, 4638 "column": 24,
4704 "line": 168 4639 "line": 172
4705 } 4640 }
4706 }, 4641 },
4707 { 4642 {
4708 "defaultMessage": "!!!Accent color", 4643 "defaultMessage": "!!!Accent color",
4709 "end": { 4644 "end": {
4710 "column": 3, 4645 "column": 3,
4711 "line": 175 4646 "line": 179
4712 }, 4647 },
4713 "file": "src/containers/settings/EditSettingsScreen.js", 4648 "file": "src/containers/settings/EditSettingsScreen.js",
4714 "id": "settings.app.form.accentColor", 4649 "id": "settings.app.form.accentColor",
4715 "start": { 4650 "start": {
4716 "column": 15, 4651 "column": 15,
4717 "line": 172 4652 "line": 176
4718 } 4653 }
4719 }, 4654 },
4720 { 4655 {
4721 "defaultMessage": "!!!Display disabled services tabs", 4656 "defaultMessage": "!!!Display disabled services tabs",
4722 "end": { 4657 "end": {
4723 "column": 3, 4658 "column": 3,
4724 "line": 179 4659 "line": 183
4725 }, 4660 },
4726 "file": "src/containers/settings/EditSettingsScreen.js", 4661 "file": "src/containers/settings/EditSettingsScreen.js",
4727 "id": "settings.app.form.showDisabledServices", 4662 "id": "settings.app.form.showDisabledServices",
4728 "start": { 4663 "start": {
4729 "column": 24, 4664 "column": 24,
4730 "line": 176 4665 "line": 180
4731 } 4666 }
4732 }, 4667 },
4733 { 4668 {
4734 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 4669 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
4735 "end": { 4670 "end": {
4736 "column": 3, 4671 "column": 3,
4737 "line": 183 4672 "line": 187
4738 }, 4673 },
4739 "file": "src/containers/settings/EditSettingsScreen.js", 4674 "file": "src/containers/settings/EditSettingsScreen.js",
4740 "id": "settings.app.form.showMessagesBadgesWhenMuted", 4675 "id": "settings.app.form.showMessagesBadgesWhenMuted",
4741 "start": { 4676 "start": {
4742 "column": 29, 4677 "column": 29,
4743 "line": 180 4678 "line": 184
4744 } 4679 }
4745 }, 4680 },
4746 { 4681 {
4747 "defaultMessage": "!!!Show draggable area on window", 4682 "defaultMessage": "!!!Show draggable area on window",
4748 "end": { 4683 "end": {
4749 "column": 3, 4684 "column": 3,
4750 "line": 187 4685 "line": 191
4751 }, 4686 },
4752 "file": "src/containers/settings/EditSettingsScreen.js", 4687 "file": "src/containers/settings/EditSettingsScreen.js",
4753 "id": "settings.app.form.showDragArea", 4688 "id": "settings.app.form.showDragArea",
4754 "start": { 4689 "start": {
4755 "column": 16, 4690 "column": 16,
4756 "line": 184 4691 "line": 188
4757 } 4692 }
4758 }, 4693 },
4759 { 4694 {
4760 "defaultMessage": "!!!Enable spell checking", 4695 "defaultMessage": "!!!Enable spell checking",
4761 "end": { 4696 "end": {
4762 "column": 3, 4697 "column": 3,
4763 "line": 191 4698 "line": 195
4764 }, 4699 },
4765 "file": "src/containers/settings/EditSettingsScreen.js", 4700 "file": "src/containers/settings/EditSettingsScreen.js",
4766 "id": "settings.app.form.enableSpellchecking", 4701 "id": "settings.app.form.enableSpellchecking",
4767 "start": { 4702 "start": {
4768 "column": 23, 4703 "column": 23,
4769 "line": 188 4704 "line": 192
4770 } 4705 }
4771 }, 4706 },
4772 { 4707 {
4773 "defaultMessage": "!!!Enable GPU Acceleration", 4708 "defaultMessage": "!!!Enable GPU Acceleration",
4774 "end": { 4709 "end": {
4775 "column": 3, 4710 "column": 3,
4776 "line": 195 4711 "line": 199
4777 }, 4712 },
4778 "file": "src/containers/settings/EditSettingsScreen.js", 4713 "file": "src/containers/settings/EditSettingsScreen.js",
4779 "id": "settings.app.form.enableGPUAcceleration", 4714 "id": "settings.app.form.enableGPUAcceleration",
4780 "start": { 4715 "start": {
4781 "column": 25, 4716 "column": 25,
4782 "line": 192 4717 "line": 196
4783 } 4718 }
4784 }, 4719 },
4785 { 4720 {
4786 "defaultMessage": "!!!Include beta versions", 4721 "defaultMessage": "!!!Include beta versions",
4787 "end": { 4722 "end": {
4788 "column": 3, 4723 "column": 3,
4789 "line": 199 4724 "line": 203
4790 }, 4725 },
4791 "file": "src/containers/settings/EditSettingsScreen.js", 4726 "file": "src/containers/settings/EditSettingsScreen.js",
4792 "id": "settings.app.form.beta", 4727 "id": "settings.app.form.beta",
4793 "start": { 4728 "start": {
4794 "column": 8, 4729 "column": 8,
4795 "line": 196 4730 "line": 200
4796 } 4731 }
4797 }, 4732 },
4798 { 4733 {
4799 "defaultMessage": "!!!Enable updates", 4734 "defaultMessage": "!!!Enable updates",
4800 "end": { 4735 "end": {
4801 "column": 3, 4736 "column": 3,
4802 "line": 203 4737 "line": 207
4803 }, 4738 },
4804 "file": "src/containers/settings/EditSettingsScreen.js", 4739 "file": "src/containers/settings/EditSettingsScreen.js",
4805 "id": "settings.app.form.automaticUpdates", 4740 "id": "settings.app.form.automaticUpdates",
4806 "start": { 4741 "start": {
4807 "column": 20, 4742 "column": 20,
4808 "line": 200 4743 "line": 204
4809 } 4744 }
4810 }, 4745 },
4811 { 4746 {
4812 "defaultMessage": "!!!Enable Franz Todos", 4747 "defaultMessage": "!!!Enable Franz Todos",
4813 "end": { 4748 "end": {
4814 "column": 3, 4749 "column": 3,
4815 "line": 207 4750 "line": 211
4816 }, 4751 },
4817 "file": "src/containers/settings/EditSettingsScreen.js", 4752 "file": "src/containers/settings/EditSettingsScreen.js",
4818 "id": "settings.app.form.enableTodos", 4753 "id": "settings.app.form.enableTodos",
4819 "start": { 4754 "start": {
4820 "column": 15, 4755 "column": 15,
4821 "line": 204 4756 "line": 208
4822 } 4757 }
4823 }, 4758 },
4824 { 4759 {
4825 "defaultMessage": "!!!Keep all workspaces loaded", 4760 "defaultMessage": "!!!Keep all workspaces loaded",
4826 "end": { 4761 "end": {
4827 "column": 3, 4762 "column": 3,
4828 "line": 211 4763 "line": 215
4829 }, 4764 },
4830 "file": "src/containers/settings/EditSettingsScreen.js", 4765 "file": "src/containers/settings/EditSettingsScreen.js",
4831 "id": "settings.app.form.keepAllWorkspacesLoaded", 4766 "id": "settings.app.form.keepAllWorkspacesLoaded",
4832 "start": { 4767 "start": {
4833 "column": 27, 4768 "column": 27,
4834 "line": 208 4769 "line": 212
4835 } 4770 }
4836 } 4771 }
4837 ], 4772 ],
@@ -4962,20 +4897,20 @@
4962 { 4897 {
4963 "descriptors": [ 4898 "descriptors": [
4964 { 4899 {
4965 "defaultMessage": "!!!Changes in Ferdi {version}", 4900 "defaultMessage": "!!!Sign In",
4966 "end": { 4901 "end": {
4967 "column": 3, 4902 "column": 3,
4968 "line": 23 4903 "line": 27
4969 }, 4904 },
4970 "file": "src/features/announcements/components/AnnouncementScreen.js", 4905 "file": "src/features/basicAuth/Component.js",
4971 "id": "feature.announcements.changelog.headline", 4906 "id": "feature.basicAuth.signIn",
4972 "start": { 4907 "start": {
4973 "column": 12, 4908 "column": 10,
4974 "line": 20 4909 "line": 24
4975 } 4910 }
4976 } 4911 }
4977 ], 4912 ],
4978 "path": "src/features/announcements/components/AnnouncementScreen.json" 4913 "path": "src/features/basicAuth/Component.json"
4979 }, 4914 },
4980 { 4915 {
4981 "descriptors": [ 4916 "descriptors": [
@@ -5001,52 +4936,39 @@
5001 "defaultMessage": "!!!Nightly Builds", 4936 "defaultMessage": "!!!Nightly Builds",
5002 "end": { 4937 "end": {
5003 "column": 3, 4938 "column": 3,
5004 "line": 19 4939 "line": 20
5005 }, 4940 },
5006 "file": "src/features/nightlyBuilds/Component.js", 4941 "file": "src/features/nightlyBuilds/Component.js",
5007 "id": "feature.nightlyBuilds.title", 4942 "id": "feature.nightlyBuilds.title",
5008 "start": { 4943 "start": {
5009 "column": 9, 4944 "column": 9,
5010 "line": 16 4945 "line": 17
5011 } 4946 }
5012 }, 4947 },
5013 { 4948 {
5014 "defaultMessage": "!!!Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 4949 "defaultMessage": "!!!Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
5015 "end": { 4950 "end": {
5016 "column": 3, 4951 "column": 3,
5017 "line": 23 4952 "line": 24
5018 }, 4953 },
5019 "file": "src/features/nightlyBuilds/Component.js", 4954 "file": "src/features/nightlyBuilds/Component.js",
5020 "id": "feature.nightlyBuilds.info", 4955 "id": "feature.nightlyBuilds.info",
5021 "start": { 4956 "start": {
5022 "column": 8, 4957 "column": 8,
5023 "line": 20 4958 "line": 21
5024 } 4959 }
5025 }, 4960 },
5026 { 4961 {
5027 "defaultMessage": "!!!Activate", 4962 "defaultMessage": "!!!Activate",
5028 "end": { 4963 "end": {
5029 "column": 3, 4964 "column": 3,
5030 "line": 27 4965 "line": 28
5031 }, 4966 },
5032 "file": "src/features/nightlyBuilds/Component.js", 4967 "file": "src/features/nightlyBuilds/Component.js",
5033 "id": "feature.nightlyBuilds.activate", 4968 "id": "feature.nightlyBuilds.activate",
5034 "start": { 4969 "start": {
5035 "column": 12, 4970 "column": 12,
5036 "line": 24 4971 "line": 25
5037 }
5038 },
5039 {
5040 "defaultMessage": "!!!Cancel",
5041 "end": {
5042 "column": 3,
5043 "line": 31
5044 },
5045 "file": "src/features/nightlyBuilds/Component.js",
5046 "id": "feature.nightlyBuilds.cancel",
5047 "start": {
5048 "column": 10,
5049 "line": 28
5050 } 4972 }
5051 } 4973 }
5052 ], 4974 ],
@@ -5888,6 +5810,136 @@
5888 "column": 17, 5810 "column": 17,
5889 "line": 32 5811 "line": 32
5890 } 5812 }
5813 },
5814 {
5815 "defaultMessage": "!!!Yes",
5816 "end": {
5817 "column": 3,
5818 "line": 39
5819 },
5820 "file": "src/i18n/globalMessages.js",
5821 "id": "global.yes",
5822 "start": {
5823 "column": 7,
5824 "line": 36
5825 }
5826 },
5827 {
5828 "defaultMessage": "!!!No",
5829 "end": {
5830 "column": 3,
5831 "line": 43
5832 },
5833 "file": "src/i18n/globalMessages.js",
5834 "id": "global.no",
5835 "start": {
5836 "column": 6,
5837 "line": 40
5838 }
5839 },
5840 {
5841 "defaultMessage": "!!!Ok",
5842 "end": {
5843 "column": 3,
5844 "line": 47
5845 },
5846 "file": "src/i18n/globalMessages.js",
5847 "id": "global.ok",
5848 "start": {
5849 "column": 6,
5850 "line": 44
5851 }
5852 },
5853 {
5854 "defaultMessage": "!!!Cancel",
5855 "end": {
5856 "column": 3,
5857 "line": 51
5858 },
5859 "file": "src/i18n/globalMessages.js",
5860 "id": "global.cancel",
5861 "start": {
5862 "column": 10,
5863 "line": 48
5864 }
5865 },
5866 {
5867 "defaultMessage": "!!!Save",
5868 "end": {
5869 "column": 3,
5870 "line": 55
5871 },
5872 "file": "src/i18n/globalMessages.js",
5873 "id": "global.save",
5874 "start": {
5875 "column": 8,
5876 "line": 52
5877 }
5878 },
5879 {
5880 "defaultMessage": "!!!Submit",
5881 "end": {
5882 "column": 3,
5883 "line": 59
5884 },
5885 "file": "src/i18n/globalMessages.js",
5886 "id": "global.submit",
5887 "start": {
5888 "column": 10,
5889 "line": 56
5890 }
5891 },
5892 {
5893 "defaultMessage": "!!!Quit",
5894 "end": {
5895 "column": 3,
5896 "line": 63
5897 },
5898 "file": "src/i18n/globalMessages.js",
5899 "id": "global.quit",
5900 "start": {
5901 "column": 8,
5902 "line": 60
5903 }
5904 },
5905 {
5906 "defaultMessage": "!!!Do you really want to quit Ferdi?",
5907 "end": {
5908 "column": 3,
5909 "line": 68
5910 },
5911 "file": "src/i18n/globalMessages.js",
5912 "id": "global.quitConfirmation",
5913 "start": {
5914 "column": 20,
5915 "line": 64
5916 }
5917 },
5918 {
5919 "defaultMessage": "!!!Settings",
5920 "end": {
5921 "column": 3,
5922 "line": 72
5923 },
5924 "file": "src/i18n/globalMessages.js",
5925 "id": "global.settings",
5926 "start": {
5927 "column": 12,
5928 "line": 69
5929 }
5930 },
5931 {
5932 "defaultMessage": "!!!Edit",
5933 "end": {
5934 "column": 3,
5935 "line": 76
5936 },
5937 "file": "src/i18n/globalMessages.js",
5938 "id": "global.edit",
5939 "start": {
5940 "column": 8,
5941 "line": 73
5942 }
5891 } 5943 }
5892 ], 5944 ],
5893 "path": "src/i18n/globalMessages.json" 5945 "path": "src/i18n/globalMessages.json"
@@ -5898,949 +5950,910 @@
5898 "defaultMessage": "!!!Edit", 5950 "defaultMessage": "!!!Edit",
5899 "end": { 5951 "end": {
5900 "column": 3, 5952 "column": 3,
5901 "line": 22 5953 "line": 36
5902 }, 5954 },
5903 "file": "src/lib/Menu.js", 5955 "file": "src/lib/Menu.js",
5904 "id": "menu.edit", 5956 "id": "menu.edit",
5905 "start": { 5957 "start": {
5906 "column": 8, 5958 "column": 8,
5907 "line": 19 5959 "line": 33
5908 } 5960 }
5909 }, 5961 },
5910 { 5962 {
5911 "defaultMessage": "!!!Undo", 5963 "defaultMessage": "!!!Undo",
5912 "end": { 5964 "end": {
5913 "column": 3, 5965 "column": 3,
5914 "line": 26 5966 "line": 40
5915 }, 5967 },
5916 "file": "src/lib/Menu.js", 5968 "file": "src/lib/Menu.js",
5917 "id": "menu.edit.undo", 5969 "id": "menu.edit.undo",
5918 "start": { 5970 "start": {
5919 "column": 8, 5971 "column": 8,
5920 "line": 23 5972 "line": 37
5921 } 5973 }
5922 }, 5974 },
5923 { 5975 {
5924 "defaultMessage": "!!!Redo", 5976 "defaultMessage": "!!!Redo",
5925 "end": { 5977 "end": {
5926 "column": 3, 5978 "column": 3,
5927 "line": 30 5979 "line": 44
5928 }, 5980 },
5929 "file": "src/lib/Menu.js", 5981 "file": "src/lib/Menu.js",
5930 "id": "menu.edit.redo", 5982 "id": "menu.edit.redo",
5931 "start": { 5983 "start": {
5932 "column": 8, 5984 "column": 8,
5933 "line": 27 5985 "line": 41
5934 } 5986 }
5935 }, 5987 },
5936 { 5988 {
5937 "defaultMessage": "!!!Cut", 5989 "defaultMessage": "!!!Cut",
5938 "end": { 5990 "end": {
5939 "column": 3, 5991 "column": 3,
5940 "line": 34 5992 "line": 48
5941 }, 5993 },
5942 "file": "src/lib/Menu.js", 5994 "file": "src/lib/Menu.js",
5943 "id": "menu.edit.cut", 5995 "id": "menu.edit.cut",
5944 "start": { 5996 "start": {
5945 "column": 7, 5997 "column": 7,
5946 "line": 31 5998 "line": 45
5947 } 5999 }
5948 }, 6000 },
5949 { 6001 {
5950 "defaultMessage": "!!!Copy", 6002 "defaultMessage": "!!!Copy",
5951 "end": { 6003 "end": {
5952 "column": 3, 6004 "column": 3,
5953 "line": 38 6005 "line": 52
5954 }, 6006 },
5955 "file": "src/lib/Menu.js", 6007 "file": "src/lib/Menu.js",
5956 "id": "menu.edit.copy", 6008 "id": "menu.edit.copy",
5957 "start": { 6009 "start": {
5958 "column": 8, 6010 "column": 8,
5959 "line": 35 6011 "line": 49
5960 } 6012 }
5961 }, 6013 },
5962 { 6014 {
5963 "defaultMessage": "!!!Paste", 6015 "defaultMessage": "!!!Paste",
5964 "end": { 6016 "end": {
5965 "column": 3, 6017 "column": 3,
5966 "line": 42 6018 "line": 56
5967 }, 6019 },
5968 "file": "src/lib/Menu.js", 6020 "file": "src/lib/Menu.js",
5969 "id": "menu.edit.paste", 6021 "id": "menu.edit.paste",
5970 "start": { 6022 "start": {
5971 "column": 9, 6023 "column": 9,
5972 "line": 39 6024 "line": 53
5973 } 6025 }
5974 }, 6026 },
5975 { 6027 {
5976 "defaultMessage": "!!!Paste And Match Style", 6028 "defaultMessage": "!!!Paste And Match Style",
5977 "end": { 6029 "end": {
5978 "column": 3, 6030 "column": 3,
5979 "line": 46 6031 "line": 60
5980 }, 6032 },
5981 "file": "src/lib/Menu.js", 6033 "file": "src/lib/Menu.js",
5982 "id": "menu.edit.pasteAndMatchStyle", 6034 "id": "menu.edit.pasteAndMatchStyle",
5983 "start": { 6035 "start": {
5984 "column": 22, 6036 "column": 22,
5985 "line": 43 6037 "line": 57
5986 } 6038 }
5987 }, 6039 },
5988 { 6040 {
5989 "defaultMessage": "!!!Delete", 6041 "defaultMessage": "!!!Delete",
5990 "end": { 6042 "end": {
5991 "column": 3, 6043 "column": 3,
5992 "line": 50 6044 "line": 64
5993 }, 6045 },
5994 "file": "src/lib/Menu.js", 6046 "file": "src/lib/Menu.js",
5995 "id": "menu.edit.delete", 6047 "id": "menu.edit.delete",
5996 "start": { 6048 "start": {
5997 "column": 10, 6049 "column": 10,
5998 "line": 47 6050 "line": 61
5999 } 6051 }
6000 }, 6052 },
6001 { 6053 {
6002 "defaultMessage": "!!!Select All", 6054 "defaultMessage": "!!!Select All",
6003 "end": { 6055 "end": {
6004 "column": 3, 6056 "column": 3,
6005 "line": 54 6057 "line": 68
6006 }, 6058 },
6007 "file": "src/lib/Menu.js", 6059 "file": "src/lib/Menu.js",
6008 "id": "menu.edit.selectAll", 6060 "id": "menu.edit.selectAll",
6009 "start": { 6061 "start": {
6010 "column": 13, 6062 "column": 13,
6011 "line": 51 6063 "line": 65
6012 } 6064 }
6013 }, 6065 },
6014 { 6066 {
6015 "defaultMessage": "!!!Find in Page", 6067 "defaultMessage": "!!!Find in Page",
6016 "end": { 6068 "end": {
6017 "column": 3, 6069 "column": 3,
6018 "line": 58 6070 "line": 72
6019 }, 6071 },
6020 "file": "src/lib/Menu.js", 6072 "file": "src/lib/Menu.js",
6021 "id": "menu.edit.findInPage", 6073 "id": "menu.edit.findInPage",
6022 "start": { 6074 "start": {
6023 "column": 14, 6075 "column": 14,
6024 "line": 55 6076 "line": 69
6025 } 6077 }
6026 }, 6078 },
6027 { 6079 {
6028 "defaultMessage": "!!!Speech", 6080 "defaultMessage": "!!!Speech",
6029 "end": { 6081 "end": {
6030 "column": 3, 6082 "column": 3,
6031 "line": 62 6083 "line": 76
6032 }, 6084 },
6033 "file": "src/lib/Menu.js", 6085 "file": "src/lib/Menu.js",
6034 "id": "menu.edit.speech", 6086 "id": "menu.edit.speech",
6035 "start": { 6087 "start": {
6036 "column": 10, 6088 "column": 10,
6037 "line": 59 6089 "line": 73
6038 } 6090 }
6039 }, 6091 },
6040 { 6092 {
6041 "defaultMessage": "!!!Start Speaking", 6093 "defaultMessage": "!!!Start Speaking",
6042 "end": { 6094 "end": {
6043 "column": 3, 6095 "column": 3,
6044 "line": 66 6096 "line": 80
6045 }, 6097 },
6046 "file": "src/lib/Menu.js", 6098 "file": "src/lib/Menu.js",
6047 "id": "menu.edit.startSpeaking", 6099 "id": "menu.edit.startSpeaking",
6048 "start": { 6100 "start": {
6049 "column": 17, 6101 "column": 17,
6050 "line": 63 6102 "line": 77
6051 } 6103 }
6052 }, 6104 },
6053 { 6105 {
6054 "defaultMessage": "!!!Stop Speaking", 6106 "defaultMessage": "!!!Stop Speaking",
6055 "end": { 6107 "end": {
6056 "column": 3, 6108 "column": 3,
6057 "line": 70 6109 "line": 84
6058 }, 6110 },
6059 "file": "src/lib/Menu.js", 6111 "file": "src/lib/Menu.js",
6060 "id": "menu.edit.stopSpeaking", 6112 "id": "menu.edit.stopSpeaking",
6061 "start": { 6113 "start": {
6062 "column": 16, 6114 "column": 16,
6063 "line": 67 6115 "line": 81
6064 } 6116 }
6065 }, 6117 },
6066 { 6118 {
6067 "defaultMessage": "!!!Start Dictation", 6119 "defaultMessage": "!!!Start Dictation",
6068 "end": { 6120 "end": {
6069 "column": 3, 6121 "column": 3,
6070 "line": 74 6122 "line": 88
6071 }, 6123 },
6072 "file": "src/lib/Menu.js", 6124 "file": "src/lib/Menu.js",
6073 "id": "menu.edit.startDictation", 6125 "id": "menu.edit.startDictation",
6074 "start": { 6126 "start": {
6075 "column": 18, 6127 "column": 18,
6076 "line": 71 6128 "line": 85
6077 } 6129 }
6078 }, 6130 },
6079 { 6131 {
6080 "defaultMessage": "!!!Emoji & Symbols", 6132 "defaultMessage": "!!!Emoji & Symbols",
6081 "end": { 6133 "end": {
6082 "column": 3, 6134 "column": 3,
6083 "line": 78 6135 "line": 92
6084 }, 6136 },
6085 "file": "src/lib/Menu.js", 6137 "file": "src/lib/Menu.js",
6086 "id": "menu.edit.emojiSymbols", 6138 "id": "menu.edit.emojiSymbols",
6087 "start": { 6139 "start": {
6088 "column": 16, 6140 "column": 16,
6089 "line": 75 6141 "line": 89
6090 } 6142 }
6091 }, 6143 },
6092 { 6144 {
6093 "defaultMessage": "!!!Open Quick Switch", 6145 "defaultMessage": "!!!Open Quick Switch",
6094 "end": { 6146 "end": {
6095 "column": 3, 6147 "column": 3,
6096 "line": 82 6148 "line": 96
6097 }, 6149 },
6098 "file": "src/lib/Menu.js", 6150 "file": "src/lib/Menu.js",
6099 "id": "menu.view.openQuickSwitch", 6151 "id": "menu.view.openQuickSwitch",
6100 "start": { 6152 "start": {
6101 "column": 19, 6153 "column": 19,
6102 "line": 79 6154 "line": 93
6103 } 6155 }
6104 }, 6156 },
6105 { 6157 {
6106 "defaultMessage": "!!!Back", 6158 "defaultMessage": "!!!Back",
6107 "end": { 6159 "end": {
6108 "column": 3, 6160 "column": 3,
6109 "line": 86 6161 "line": 100
6110 }, 6162 },
6111 "file": "src/lib/Menu.js", 6163 "file": "src/lib/Menu.js",
6112 "id": "menu.view.back", 6164 "id": "menu.view.back",
6113 "start": { 6165 "start": {
6114 "column": 8, 6166 "column": 8,
6115 "line": 83 6167 "line": 97
6116 } 6168 }
6117 }, 6169 },
6118 { 6170 {
6119 "defaultMessage": "!!!Forward", 6171 "defaultMessage": "!!!Forward",
6120 "end": { 6172 "end": {
6121 "column": 3, 6173 "column": 3,
6122 "line": 90 6174 "line": 104
6123 }, 6175 },
6124 "file": "src/lib/Menu.js", 6176 "file": "src/lib/Menu.js",
6125 "id": "menu.view.forward", 6177 "id": "menu.view.forward",
6126 "start": { 6178 "start": {
6127 "column": 11, 6179 "column": 11,
6128 "line": 87 6180 "line": 101
6129 } 6181 }
6130 }, 6182 },
6131 { 6183 {
6132 "defaultMessage": "!!!Actual Size", 6184 "defaultMessage": "!!!Actual Size",
6133 "end": { 6185 "end": {
6134 "column": 3, 6186 "column": 3,
6135 "line": 94 6187 "line": 108
6136 }, 6188 },
6137 "file": "src/lib/Menu.js", 6189 "file": "src/lib/Menu.js",
6138 "id": "menu.view.resetZoom", 6190 "id": "menu.view.resetZoom",
6139 "start": { 6191 "start": {
6140 "column": 13, 6192 "column": 13,
6141 "line": 91 6193 "line": 105
6142 } 6194 }
6143 }, 6195 },
6144 { 6196 {
6145 "defaultMessage": "!!!Zoom In", 6197 "defaultMessage": "!!!Zoom In",
6146 "end": { 6198 "end": {
6147 "column": 3, 6199 "column": 3,
6148 "line": 98 6200 "line": 112
6149 }, 6201 },
6150 "file": "src/lib/Menu.js", 6202 "file": "src/lib/Menu.js",
6151 "id": "menu.view.zoomIn", 6203 "id": "menu.view.zoomIn",
6152 "start": { 6204 "start": {
6153 "column": 10, 6205 "column": 10,
6154 "line": 95 6206 "line": 109
6155 } 6207 }
6156 }, 6208 },
6157 { 6209 {
6158 "defaultMessage": "!!!Zoom Out", 6210 "defaultMessage": "!!!Zoom Out",
6159 "end": { 6211 "end": {
6160 "column": 3, 6212 "column": 3,
6161 "line": 102 6213 "line": 116
6162 }, 6214 },
6163 "file": "src/lib/Menu.js", 6215 "file": "src/lib/Menu.js",
6164 "id": "menu.view.zoomOut", 6216 "id": "menu.view.zoomOut",
6165 "start": { 6217 "start": {
6166 "column": 11, 6218 "column": 11,
6167 "line": 99 6219 "line": 113
6168 } 6220 }
6169 }, 6221 },
6170 { 6222 {
6171 "defaultMessage": "!!!Toggle Full Screen", 6223 "defaultMessage": "!!!Toggle Full Screen",
6172 "end": { 6224 "end": {
6173 "column": 3, 6225 "column": 3,
6174 "line": 106 6226 "line": 120
6175 }, 6227 },
6176 "file": "src/lib/Menu.js", 6228 "file": "src/lib/Menu.js",
6177 "id": "menu.view.toggleFullScreen", 6229 "id": "menu.view.toggleFullScreen",
6178 "start": { 6230 "start": {
6179 "column": 20, 6231 "column": 20,
6180 "line": 103 6232 "line": 117
6181 } 6233 }
6182 }, 6234 },
6183 { 6235 {
6184 "defaultMessage": "!!!Toggle Dark Mode", 6236 "defaultMessage": "!!!Toggle Dark Mode",
6185 "end": { 6237 "end": {
6186 "column": 3, 6238 "column": 3,
6187 "line": 110 6239 "line": 124
6188 }, 6240 },
6189 "file": "src/lib/Menu.js", 6241 "file": "src/lib/Menu.js",
6190 "id": "menu.view.toggleDarkMode", 6242 "id": "menu.view.toggleDarkMode",
6191 "start": { 6243 "start": {
6192 "column": 18, 6244 "column": 18,
6193 "line": 107 6245 "line": 121
6194 } 6246 }
6195 }, 6247 },
6196 { 6248 {
6197 "defaultMessage": "!!!Toggle Developer Tools", 6249 "defaultMessage": "!!!Toggle Developer Tools",
6198 "end": { 6250 "end": {
6199 "column": 3, 6251 "column": 3,
6200 "line": 114 6252 "line": 128
6201 }, 6253 },
6202 "file": "src/lib/Menu.js", 6254 "file": "src/lib/Menu.js",
6203 "id": "menu.view.toggleDevTools", 6255 "id": "menu.view.toggleDevTools",
6204 "start": { 6256 "start": {
6205 "column": 18, 6257 "column": 18,
6206 "line": 111 6258 "line": 125
6207 } 6259 }
6208 }, 6260 },
6209 { 6261 {
6210 "defaultMessage": "!!!Toggle Todos Developer Tools", 6262 "defaultMessage": "!!!Toggle Todos Developer Tools",
6211 "end": { 6263 "end": {
6212 "column": 3, 6264 "column": 3,
6213 "line": 118 6265 "line": 132
6214 }, 6266 },
6215 "file": "src/lib/Menu.js", 6267 "file": "src/lib/Menu.js",
6216 "id": "menu.view.toggleTodosDevTools", 6268 "id": "menu.view.toggleTodosDevTools",
6217 "start": { 6269 "start": {
6218 "column": 23, 6270 "column": 23,
6219 "line": 115 6271 "line": 129
6220 } 6272 }
6221 }, 6273 },
6222 { 6274 {
6223 "defaultMessage": "!!!Toggle Service Developer Tools", 6275 "defaultMessage": "!!!Toggle Service Developer Tools",
6224 "end": { 6276 "end": {
6225 "column": 3, 6277 "column": 3,
6226 "line": 122 6278 "line": 136
6227 }, 6279 },
6228 "file": "src/lib/Menu.js", 6280 "file": "src/lib/Menu.js",
6229 "id": "menu.view.toggleServiceDevTools", 6281 "id": "menu.view.toggleServiceDevTools",
6230 "start": { 6282 "start": {
6231 "column": 25, 6283 "column": 25,
6232 "line": 119 6284 "line": 133
6233 } 6285 }
6234 }, 6286 },
6235 { 6287 {
6236 "defaultMessage": "!!!Reload Service", 6288 "defaultMessage": "!!!Reload Service",
6237 "end": { 6289 "end": {
6238 "column": 3, 6290 "column": 3,
6239 "line": 126 6291 "line": 140
6240 }, 6292 },
6241 "file": "src/lib/Menu.js", 6293 "file": "src/lib/Menu.js",
6242 "id": "menu.view.reloadService", 6294 "id": "menu.view.reloadService",
6243 "start": { 6295 "start": {
6244 "column": 17, 6296 "column": 17,
6245 "line": 123 6297 "line": 137
6246 } 6298 }
6247 }, 6299 },
6248 { 6300 {
6249 "defaultMessage": "!!!Reload Ferdi", 6301 "defaultMessage": "!!!Reload Ferdi",
6250 "end": { 6302 "end": {
6251 "column": 3, 6303 "column": 3,
6252 "line": 130 6304 "line": 144
6253 }, 6305 },
6254 "file": "src/lib/Menu.js", 6306 "file": "src/lib/Menu.js",
6255 "id": "menu.view.reloadFerdi", 6307 "id": "menu.view.reloadFerdi",
6256 "start": { 6308 "start": {
6257 "column": 15, 6309 "column": 15,
6258 "line": 127 6310 "line": 141
6259 } 6311 }
6260 }, 6312 },
6261 { 6313 {
6262 "defaultMessage": "!!!Lock Ferdi", 6314 "defaultMessage": "!!!Lock Ferdi",
6263 "end": { 6315 "end": {
6264 "column": 3, 6316 "column": 3,
6265 "line": 134 6317 "line": 148
6266 }, 6318 },
6267 "file": "src/lib/Menu.js", 6319 "file": "src/lib/Menu.js",
6268 "id": "menu.view.lockFerdi", 6320 "id": "menu.view.lockFerdi",
6269 "start": { 6321 "start": {
6270 "column": 13, 6322 "column": 13,
6271 "line": 131 6323 "line": 145
6272 } 6324 }
6273 }, 6325 },
6274 { 6326 {
6275 "defaultMessage": "!!!Reload ToDos", 6327 "defaultMessage": "!!!Reload ToDos",
6276 "end": { 6328 "end": {
6277 "column": 3, 6329 "column": 3,
6278 "line": 138 6330 "line": 152
6279 }, 6331 },
6280 "file": "src/lib/Menu.js", 6332 "file": "src/lib/Menu.js",
6281 "id": "menu.view.reloadTodos", 6333 "id": "menu.view.reloadTodos",
6282 "start": { 6334 "start": {
6283 "column": 15, 6335 "column": 15,
6284 "line": 135 6336 "line": 149
6285 } 6337 }
6286 }, 6338 },
6287 { 6339 {
6288 "defaultMessage": "!!!Minimize", 6340 "defaultMessage": "!!!Minimize",
6289 "end": { 6341 "end": {
6290 "column": 3, 6342 "column": 3,
6291 "line": 142 6343 "line": 156
6292 }, 6344 },
6293 "file": "src/lib/Menu.js", 6345 "file": "src/lib/Menu.js",
6294 "id": "menu.window.minimize", 6346 "id": "menu.window.minimize",
6295 "start": { 6347 "start": {
6296 "column": 12, 6348 "column": 12,
6297 "line": 139 6349 "line": 153
6298 } 6350 }
6299 }, 6351 },
6300 { 6352 {
6301 "defaultMessage": "!!!Close", 6353 "defaultMessage": "!!!Close",
6302 "end": { 6354 "end": {
6303 "column": 3, 6355 "column": 3,
6304 "line": 146 6356 "line": 160
6305 }, 6357 },
6306 "file": "src/lib/Menu.js", 6358 "file": "src/lib/Menu.js",
6307 "id": "menu.window.close", 6359 "id": "menu.window.close",
6308 "start": { 6360 "start": {
6309 "column": 9, 6361 "column": 9,
6310 "line": 143 6362 "line": 157
6311 } 6363 }
6312 }, 6364 },
6313 { 6365 {
6314 "defaultMessage": "!!!Learn More", 6366 "defaultMessage": "!!!Learn More",
6315 "end": { 6367 "end": {
6316 "column": 3, 6368 "column": 3,
6317 "line": 150 6369 "line": 164
6318 }, 6370 },
6319 "file": "src/lib/Menu.js", 6371 "file": "src/lib/Menu.js",
6320 "id": "menu.help.learnMore", 6372 "id": "menu.help.learnMore",
6321 "start": { 6373 "start": {
6322 "column": 13, 6374 "column": 13,
6323 "line": 147 6375 "line": 161
6324 } 6376 }
6325 }, 6377 },
6326 { 6378 {
6327 "defaultMessage": "!!!Changelog", 6379 "defaultMessage": "!!!Changelog",
6328 "end": { 6380 "end": {
6329 "column": 3, 6381 "column": 3,
6330 "line": 154 6382 "line": 168
6331 }, 6383 },
6332 "file": "src/lib/Menu.js", 6384 "file": "src/lib/Menu.js",
6333 "id": "menu.help.changelog", 6385 "id": "menu.help.changelog",
6334 "start": { 6386 "start": {
6335 "column": 13, 6387 "column": 13,
6336 "line": 151 6388 "line": 165
6337 } 6389 }
6338 }, 6390 },
6339 { 6391 {
6340 "defaultMessage": "!!!Import/Export Configuration Data", 6392 "defaultMessage": "!!!Import/Export Configuration Data",
6341 "end": { 6393 "end": {
6342 "column": 3, 6394 "column": 3,
6343 "line": 158 6395 "line": 172
6344 }, 6396 },
6345 "file": "src/lib/Menu.js", 6397 "file": "src/lib/Menu.js",
6346 "id": "menu.help.importExportData", 6398 "id": "menu.help.importExportData",
6347 "start": { 6399 "start": {
6348 "column": 20, 6400 "column": 20,
6349 "line": 155 6401 "line": 169
6350 } 6402 }
6351 }, 6403 },
6352 { 6404 {
6353 "defaultMessage": "!!!Support", 6405 "defaultMessage": "!!!Support",
6354 "end": { 6406 "end": {
6355 "column": 3, 6407 "column": 3,
6356 "line": 162 6408 "line": 176
6357 }, 6409 },
6358 "file": "src/lib/Menu.js", 6410 "file": "src/lib/Menu.js",
6359 "id": "menu.help.support", 6411 "id": "menu.help.support",
6360 "start": { 6412 "start": {
6361 "column": 11, 6413 "column": 11,
6362 "line": 159 6414 "line": 173
6363 } 6415 }
6364 }, 6416 },
6365 { 6417 {
6366 "defaultMessage": "!!!Copy Debug Information", 6418 "defaultMessage": "!!!Copy Debug Information",
6367 "end": { 6419 "end": {
6368 "column": 3, 6420 "column": 3,
6369 "line": 166 6421 "line": 180
6370 }, 6422 },
6371 "file": "src/lib/Menu.js", 6423 "file": "src/lib/Menu.js",
6372 "id": "menu.help.debugInfo", 6424 "id": "menu.help.debugInfo",
6373 "start": { 6425 "start": {
6374 "column": 13, 6426 "column": 13,
6375 "line": 163 6427 "line": 177
6376 } 6428 }
6377 }, 6429 },
6378 { 6430 {
6379 "defaultMessage": "!!!Publish Debug Information", 6431 "defaultMessage": "!!!Publish Debug Information",
6380 "end": { 6432 "end": {
6381 "column": 3, 6433 "column": 3,
6382 "line": 170 6434 "line": 184
6383 }, 6435 },
6384 "file": "src/lib/Menu.js", 6436 "file": "src/lib/Menu.js",
6385 "id": "menu.help.publishDebugInfo", 6437 "id": "menu.help.publishDebugInfo",
6386 "start": { 6438 "start": {
6387 "column": 20, 6439 "column": 20,
6388 "line": 167 6440 "line": 181
6389 } 6441 }
6390 }, 6442 },
6391 { 6443 {
6392 "defaultMessage": "!!!Ferdi Debug Information", 6444 "defaultMessage": "!!!Ferdi Debug Information",
6393 "end": { 6445 "end": {
6394 "column": 3, 6446 "column": 3,
6395 "line": 174 6447 "line": 188
6396 }, 6448 },
6397 "file": "src/lib/Menu.js", 6449 "file": "src/lib/Menu.js",
6398 "id": "menu.help.debugInfoCopiedHeadline", 6450 "id": "menu.help.debugInfoCopiedHeadline",
6399 "start": { 6451 "start": {
6400 "column": 27, 6452 "column": 27,
6401 "line": 171 6453 "line": 185
6402 } 6454 }
6403 }, 6455 },
6404 { 6456 {
6405 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 6457 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
6406 "end": { 6458 "end": {
6407 "column": 3, 6459 "column": 3,
6408 "line": 178 6460 "line": 193
6409 }, 6461 },
6410 "file": "src/lib/Menu.js", 6462 "file": "src/lib/Menu.js",
6411 "id": "menu.help.debugInfoCopiedBody", 6463 "id": "menu.help.debugInfoCopiedBody",
6412 "start": { 6464 "start": {
6413 "column": 23, 6465 "column": 23,
6414 "line": 175 6466 "line": 189
6415 } 6467 }
6416 }, 6468 },
6417 { 6469 {
6418 "defaultMessage": "!!!Unlock with Touch ID", 6470 "defaultMessage": "!!!Unlock with Touch ID",
6419 "end": { 6471 "end": {
6420 "column": 3, 6472 "column": 3,
6421 "line": 182 6473 "line": 197
6422 }, 6474 },
6423 "file": "src/lib/Menu.js", 6475 "file": "src/lib/Menu.js",
6424 "id": "locked.touchId", 6476 "id": "locked.touchId",
6425 "start": { 6477 "start": {
6426 "column": 11, 6478 "column": 11,
6427 "line": 179 6479 "line": 194
6428 } 6480 }
6429 }, 6481 },
6430 { 6482 {
6431 "defaultMessage": "!!!unlock via Touch ID", 6483 "defaultMessage": "!!!unlock via Touch ID",
6432 "end": { 6484 "end": {
6433 "column": 3, 6485 "column": 3,
6434 "line": 186 6486 "line": 201
6435 }, 6487 },
6436 "file": "src/lib/Menu.js", 6488 "file": "src/lib/Menu.js",
6437 "id": "locked.touchIdPrompt", 6489 "id": "locked.touchIdPrompt",
6438 "start": { 6490 "start": {
6439 "column": 17, 6491 "column": 17,
6440 "line": 183 6492 "line": 198
6441 } 6493 }
6442 }, 6494 },
6443 { 6495 {
6444 "defaultMessage": "!!!Terms of Service", 6496 "defaultMessage": "!!!Terms of Service",
6445 "end": { 6497 "end": {
6446 "column": 3, 6498 "column": 3,
6447 "line": 190 6499 "line": 205
6448 }, 6500 },
6449 "file": "src/lib/Menu.js", 6501 "file": "src/lib/Menu.js",
6450 "id": "menu.help.tos", 6502 "id": "menu.help.tos",
6451 "start": { 6503 "start": {
6452 "column": 7, 6504 "column": 7,
6453 "line": 187 6505 "line": 202
6454 } 6506 }
6455 }, 6507 },
6456 { 6508 {
6457 "defaultMessage": "!!!Privacy Statement", 6509 "defaultMessage": "!!!Privacy Statement",
6458 "end": { 6510 "end": {
6459 "column": 3, 6511 "column": 3,
6460 "line": 194 6512 "line": 209
6461 }, 6513 },
6462 "file": "src/lib/Menu.js", 6514 "file": "src/lib/Menu.js",
6463 "id": "menu.help.privacy", 6515 "id": "menu.help.privacy",
6464 "start": { 6516 "start": {
6465 "column": 11, 6517 "column": 11,
6466 "line": 191 6518 "line": 206
6467 } 6519 }
6468 }, 6520 },
6469 { 6521 {
6470 "defaultMessage": "!!!File", 6522 "defaultMessage": "!!!File",
6471 "end": { 6523 "end": {
6472 "column": 3, 6524 "column": 3,
6473 "line": 198 6525 "line": 213
6474 }, 6526 },
6475 "file": "src/lib/Menu.js", 6527 "file": "src/lib/Menu.js",
6476 "id": "menu.file", 6528 "id": "menu.file",
6477 "start": { 6529 "start": {
6478 "column": 8, 6530 "column": 8,
6479 "line": 195 6531 "line": 210
6480 } 6532 }
6481 }, 6533 },
6482 { 6534 {
6483 "defaultMessage": "!!!View", 6535 "defaultMessage": "!!!View",
6484 "end": { 6536 "end": {
6485 "column": 3, 6537 "column": 3,
6486 "line": 202 6538 "line": 217
6487 }, 6539 },
6488 "file": "src/lib/Menu.js", 6540 "file": "src/lib/Menu.js",
6489 "id": "menu.view", 6541 "id": "menu.view",
6490 "start": { 6542 "start": {
6491 "column": 8, 6543 "column": 8,
6492 "line": 199 6544 "line": 214
6493 } 6545 }
6494 }, 6546 },
6495 { 6547 {
6496 "defaultMessage": "!!!Services", 6548 "defaultMessage": "!!!Services",
6497 "end": { 6549 "end": {
6498 "column": 3, 6550 "column": 3,
6499 "line": 206 6551 "line": 221
6500 }, 6552 },
6501 "file": "src/lib/Menu.js", 6553 "file": "src/lib/Menu.js",
6502 "id": "menu.services", 6554 "id": "menu.services",
6503 "start": { 6555 "start": {
6504 "column": 12, 6556 "column": 12,
6505 "line": 203 6557 "line": 218
6506 } 6558 }
6507 }, 6559 },
6508 { 6560 {
6509 "defaultMessage": "!!!Window", 6561 "defaultMessage": "!!!Window",
6510 "end": { 6562 "end": {
6511 "column": 3, 6563 "column": 3,
6512 "line": 210 6564 "line": 225
6513 }, 6565 },
6514 "file": "src/lib/Menu.js", 6566 "file": "src/lib/Menu.js",
6515 "id": "menu.window", 6567 "id": "menu.window",
6516 "start": { 6568 "start": {
6517 "column": 10, 6569 "column": 10,
6518 "line": 207 6570 "line": 222
6519 } 6571 }
6520 }, 6572 },
6521 { 6573 {
6522 "defaultMessage": "!!!Help", 6574 "defaultMessage": "!!!Help",
6523 "end": { 6575 "end": {
6524 "column": 3, 6576 "column": 3,
6525 "line": 214 6577 "line": 229
6526 }, 6578 },
6527 "file": "src/lib/Menu.js", 6579 "file": "src/lib/Menu.js",
6528 "id": "menu.help", 6580 "id": "menu.help",
6529 "start": { 6581 "start": {
6530 "column": 8, 6582 "column": 8,
6531 "line": 211 6583 "line": 226
6532 } 6584 }
6533 }, 6585 },
6534 { 6586 {
6535 "defaultMessage": "!!!About Ferdi", 6587 "defaultMessage": "!!!About Ferdi",
6536 "end": { 6588 "end": {
6537 "column": 3, 6589 "column": 3,
6538 "line": 218 6590 "line": 233
6539 }, 6591 },
6540 "file": "src/lib/Menu.js", 6592 "file": "src/lib/Menu.js",
6541 "id": "menu.app.about", 6593 "id": "menu.app.about",
6542 "start": { 6594 "start": {
6543 "column": 9, 6595 "column": 9,
6544 "line": 215 6596 "line": 230
6545 }
6546 },
6547 {
6548 "defaultMessage": "!!!What's new?",
6549 "end": {
6550 "column": 3,
6551 "line": 222
6552 },
6553 "file": "src/lib/Menu.js",
6554 "id": "menu.app.announcement",
6555 "start": {
6556 "column": 16,
6557 "line": 219
6558 }
6559 },
6560 {
6561 "defaultMessage": "!!!Settings",
6562 "end": {
6563 "column": 3,
6564 "line": 226
6565 },
6566 "file": "src/lib/Menu.js",
6567 "id": "menu.app.settings",
6568 "start": {
6569 "column": 12,
6570 "line": 223
6571 } 6597 }
6572 }, 6598 },
6573 { 6599 {
6574 "defaultMessage": "!!!Check for updates", 6600 "defaultMessage": "!!!Check for updates",
6575 "end": { 6601 "end": {
6576 "column": 3, 6602 "column": 3,
6577 "line": 230 6603 "line": 237
6578 }, 6604 },
6579 "file": "src/lib/Menu.js", 6605 "file": "src/lib/Menu.js",
6580 "id": "menu.app.checkForUpdates", 6606 "id": "menu.app.checkForUpdates",
6581 "start": { 6607 "start": {
6582 "column": 19, 6608 "column": 19,
6583 "line": 227 6609 "line": 234
6584 } 6610 }
6585 }, 6611 },
6586 { 6612 {
6587 "defaultMessage": "!!!Hide", 6613 "defaultMessage": "!!!Hide",
6588 "end": { 6614 "end": {
6589 "column": 3, 6615 "column": 3,
6590 "line": 234 6616 "line": 241
6591 }, 6617 },
6592 "file": "src/lib/Menu.js", 6618 "file": "src/lib/Menu.js",
6593 "id": "menu.app.hide", 6619 "id": "menu.app.hide",
6594 "start": { 6620 "start": {
6595 "column": 8, 6621 "column": 8,
6596 "line": 231 6622 "line": 238
6597 } 6623 }
6598 }, 6624 },
6599 { 6625 {
6600 "defaultMessage": "!!!Hide Others", 6626 "defaultMessage": "!!!Hide Others",
6601 "end": { 6627 "end": {
6602 "column": 3, 6628 "column": 3,
6603 "line": 238 6629 "line": 245
6604 }, 6630 },
6605 "file": "src/lib/Menu.js", 6631 "file": "src/lib/Menu.js",
6606 "id": "menu.app.hideOthers", 6632 "id": "menu.app.hideOthers",
6607 "start": { 6633 "start": {
6608 "column": 14, 6634 "column": 14,
6609 "line": 235 6635 "line": 242
6610 } 6636 }
6611 }, 6637 },
6612 { 6638 {
6613 "defaultMessage": "!!!Unhide", 6639 "defaultMessage": "!!!Unhide",
6614 "end": { 6640 "end": {
6615 "column": 3, 6641 "column": 3,
6616 "line": 242 6642 "line": 249
6617 }, 6643 },
6618 "file": "src/lib/Menu.js", 6644 "file": "src/lib/Menu.js",
6619 "id": "menu.app.unhide", 6645 "id": "menu.app.unhide",
6620 "start": { 6646 "start": {
6621 "column": 10, 6647 "column": 10,
6622 "line": 239 6648 "line": 246
6623 } 6649 }
6624 }, 6650 },
6625 { 6651 {
6626 "defaultMessage": "!!!Auto-hide menu bar", 6652 "defaultMessage": "!!!Auto-hide menu bar",
6627 "end": { 6653 "end": {
6628 "column": 3, 6654 "column": 3,
6629 "line": 246 6655 "line": 253
6630 }, 6656 },
6631 "file": "src/lib/Menu.js", 6657 "file": "src/lib/Menu.js",
6632 "id": "menu.app.autohideMenuBar", 6658 "id": "menu.app.autohideMenuBar",
6633 "start": { 6659 "start": {
6634 "column": 19, 6660 "column": 19,
6635 "line": 243
6636 }
6637 },
6638 {
6639 "defaultMessage": "!!!Quit",
6640 "end": {
6641 "column": 3,
6642 "line": 250 6661 "line": 250
6643 },
6644 "file": "src/lib/Menu.js",
6645 "id": "menu.app.quit",
6646 "start": {
6647 "column": 8,
6648 "line": 247
6649 } 6662 }
6650 }, 6663 },
6651 { 6664 {
6652 "defaultMessage": "!!!Add New Service...", 6665 "defaultMessage": "!!!Add New Service...",
6653 "end": { 6666 "end": {
6654 "column": 3, 6667 "column": 3,
6655 "line": 254 6668 "line": 257
6656 }, 6669 },
6657 "file": "src/lib/Menu.js", 6670 "file": "src/lib/Menu.js",
6658 "id": "menu.services.addNewService", 6671 "id": "menu.services.addNewService",
6659 "start": { 6672 "start": {
6660 "column": 17, 6673 "column": 17,
6661 "line": 251 6674 "line": 254
6662 } 6675 }
6663 }, 6676 },
6664 { 6677 {
6665 "defaultMessage": "!!!Add New Workspace...", 6678 "defaultMessage": "!!!Add New Workspace...",
6666 "end": { 6679 "end": {
6667 "column": 3, 6680 "column": 3,
6668 "line": 258 6681 "line": 261
6669 }, 6682 },
6670 "file": "src/lib/Menu.js", 6683 "file": "src/lib/Menu.js",
6671 "id": "menu.workspaces.addNewWorkspace", 6684 "id": "menu.workspaces.addNewWorkspace",
6672 "start": { 6685 "start": {
6673 "column": 19, 6686 "column": 19,
6674 "line": 255 6687 "line": 258
6675 } 6688 }
6676 }, 6689 },
6677 { 6690 {
6678 "defaultMessage": "!!!Open workspace drawer", 6691 "defaultMessage": "!!!Open workspace drawer",
6679 "end": { 6692 "end": {
6680 "column": 3, 6693 "column": 3,
6681 "line": 262 6694 "line": 265
6682 }, 6695 },
6683 "file": "src/lib/Menu.js", 6696 "file": "src/lib/Menu.js",
6684 "id": "menu.workspaces.openWorkspaceDrawer", 6697 "id": "menu.workspaces.openWorkspaceDrawer",
6685 "start": { 6698 "start": {
6686 "column": 23, 6699 "column": 23,
6687 "line": 259 6700 "line": 262
6688 } 6701 }
6689 }, 6702 },
6690 { 6703 {
6691 "defaultMessage": "!!!Close workspace drawer", 6704 "defaultMessage": "!!!Close workspace drawer",
6692 "end": { 6705 "end": {
6693 "column": 3, 6706 "column": 3,
6694 "line": 266 6707 "line": 269
6695 }, 6708 },
6696 "file": "src/lib/Menu.js", 6709 "file": "src/lib/Menu.js",
6697 "id": "menu.workspaces.closeWorkspaceDrawer", 6710 "id": "menu.workspaces.closeWorkspaceDrawer",
6698 "start": { 6711 "start": {
6699 "column": 24, 6712 "column": 24,
6700 "line": 263 6713 "line": 266
6701 } 6714 }
6702 }, 6715 },
6703 { 6716 {
6704 "defaultMessage": "!!!Activate next service...", 6717 "defaultMessage": "!!!Activate next service...",
6705 "end": { 6718 "end": {
6706 "column": 3, 6719 "column": 3,
6707 "line": 270 6720 "line": 273
6708 }, 6721 },
6709 "file": "src/lib/Menu.js", 6722 "file": "src/lib/Menu.js",
6710 "id": "menu.services.setNextServiceActive", 6723 "id": "menu.services.setNextServiceActive",
6711 "start": { 6724 "start": {
6712 "column": 23, 6725 "column": 23,
6713 "line": 267 6726 "line": 270
6714 } 6727 }
6715 }, 6728 },
6716 { 6729 {
6717 "defaultMessage": "!!!Activate previous service...", 6730 "defaultMessage": "!!!Activate previous service...",
6718 "end": { 6731 "end": {
6719 "column": 3, 6732 "column": 3,
6720 "line": 274 6733 "line": 277
6721 }, 6734 },
6722 "file": "src/lib/Menu.js", 6735 "file": "src/lib/Menu.js",
6723 "id": "menu.services.activatePreviousService", 6736 "id": "menu.services.activatePreviousService",
6724 "start": { 6737 "start": {
6725 "column": 27, 6738 "column": 27,
6726 "line": 271 6739 "line": 274
6727 } 6740 }
6728 }, 6741 },
6729 { 6742 {
6730 "defaultMessage": "!!!Disable notifications & audio", 6743 "defaultMessage": "!!!Disable notifications & audio",
6731 "end": { 6744 "end": {
6732 "column": 3, 6745 "column": 3,
6733 "line": 278 6746 "line": 281
6734 }, 6747 },
6735 "file": "src/lib/Menu.js", 6748 "file": "src/lib/Menu.js",
6736 "id": "sidebar.muteApp", 6749 "id": "sidebar.muteApp",
6737 "start": { 6750 "start": {
6738 "column": 11, 6751 "column": 11,
6739 "line": 275 6752 "line": 278
6740 } 6753 }
6741 }, 6754 },
6742 { 6755 {
6743 "defaultMessage": "!!!Enable notifications & audio", 6756 "defaultMessage": "!!!Enable notifications & audio",
6744 "end": { 6757 "end": {
6745 "column": 3, 6758 "column": 3,
6746 "line": 282 6759 "line": 285
6747 }, 6760 },
6748 "file": "src/lib/Menu.js", 6761 "file": "src/lib/Menu.js",
6749 "id": "sidebar.unmuteApp", 6762 "id": "sidebar.unmuteApp",
6750 "start": { 6763 "start": {
6751 "column": 13, 6764 "column": 13,
6752 "line": 279 6765 "line": 282
6753 } 6766 }
6754 }, 6767 },
6755 { 6768 {
6756 "defaultMessage": "!!!Workspaces", 6769 "defaultMessage": "!!!Workspaces",
6757 "end": { 6770 "end": {
6758 "column": 3, 6771 "column": 3,
6759 "line": 286 6772 "line": 289
6760 }, 6773 },
6761 "file": "src/lib/Menu.js", 6774 "file": "src/lib/Menu.js",
6762 "id": "menu.workspaces", 6775 "id": "menu.workspaces",
6763 "start": { 6776 "start": {
6764 "column": 14, 6777 "column": 14,
6765 "line": 283 6778 "line": 286
6766 } 6779 }
6767 }, 6780 },
6768 { 6781 {
6769 "defaultMessage": "!!!Default", 6782 "defaultMessage": "!!!Default",
6770 "end": { 6783 "end": {
6771 "column": 3, 6784 "column": 3,
6772 "line": 290 6785 "line": 293
6773 }, 6786 },
6774 "file": "src/lib/Menu.js", 6787 "file": "src/lib/Menu.js",
6775 "id": "menu.workspaces.defaultWorkspace", 6788 "id": "menu.workspaces.defaultWorkspace",
6776 "start": { 6789 "start": {
6777 "column": 20, 6790 "column": 20,
6778 "line": 287 6791 "line": 290
6779 } 6792 }
6780 }, 6793 },
6781 { 6794 {
6782 "defaultMessage": "!!!Todos", 6795 "defaultMessage": "!!!Todos",
6783 "end": { 6796 "end": {
6784 "column": 3, 6797 "column": 3,
6785 "line": 294 6798 "line": 297
6786 }, 6799 },
6787 "file": "src/lib/Menu.js", 6800 "file": "src/lib/Menu.js",
6788 "id": "menu.todos", 6801 "id": "menu.todos",
6789 "start": { 6802 "start": {
6790 "column": 9, 6803 "column": 9,
6791 "line": 291 6804 "line": 294
6792 } 6805 }
6793 }, 6806 },
6794 { 6807 {
6795 "defaultMessage": "!!!Open Todos drawer", 6808 "defaultMessage": "!!!Open Todos drawer",
6796 "end": { 6809 "end": {
6797 "column": 3, 6810 "column": 3,
6798 "line": 298 6811 "line": 301
6799 }, 6812 },
6800 "file": "src/lib/Menu.js", 6813 "file": "src/lib/Menu.js",
6801 "id": "menu.Todoss.openTodosDrawer", 6814 "id": "menu.Todoss.openTodosDrawer",
6802 "start": { 6815 "start": {
6803 "column": 19, 6816 "column": 19,
6804 "line": 295 6817 "line": 298
6805 } 6818 }
6806 }, 6819 },
6807 { 6820 {
6808 "defaultMessage": "!!!Close Todos drawer", 6821 "defaultMessage": "!!!Close Todos drawer",
6809 "end": { 6822 "end": {
6810 "column": 3, 6823 "column": 3,
6811 "line": 302 6824 "line": 305
6812 }, 6825 },
6813 "file": "src/lib/Menu.js", 6826 "file": "src/lib/Menu.js",
6814 "id": "menu.Todoss.closeTodosDrawer", 6827 "id": "menu.Todoss.closeTodosDrawer",
6815 "start": { 6828 "start": {
6816 "column": 20, 6829 "column": 20,
6817 "line": 299 6830 "line": 302
6818 } 6831 }
6819 }, 6832 },
6820 { 6833 {
6821 "defaultMessage": "!!!Enable Todos", 6834 "defaultMessage": "!!!Enable Todos",
6822 "end": { 6835 "end": {
6823 "column": 3, 6836 "column": 3,
6824 "line": 306 6837 "line": 309
6825 }, 6838 },
6826 "file": "src/lib/Menu.js", 6839 "file": "src/lib/Menu.js",
6827 "id": "menu.todos.enableTodos", 6840 "id": "menu.todos.enableTodos",
6828 "start": { 6841 "start": {
6829 "column": 15, 6842 "column": 15,
6830 "line": 303 6843 "line": 306
6831 } 6844 }
6832 }, 6845 },
6833 { 6846 {
6834 "defaultMessage": "!!!Home", 6847 "defaultMessage": "!!!Home",
6835 "end": { 6848 "end": {
6836 "column": 3, 6849 "column": 3,
6837 "line": 310 6850 "line": 313
6838 }, 6851 },
6839 "file": "src/lib/Menu.js", 6852 "file": "src/lib/Menu.js",
6840 "id": "menu.services.goHome", 6853 "id": "menu.services.goHome",
6841 "start": { 6854 "start": {
6842 "column": 17, 6855 "column": 17,
6843 "line": 307 6856 "line": 310
6844 } 6857 }
6845 } 6858 }
6846 ], 6859 ],
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index 679720748..6964a93f1 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Προσαρμοσμένος διακομιστής", 4 "changeserver.customServerLabel": "Προσαρμοσμένος διακομιστής",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Διακομιστής", 6 "changeserver.label": "Διακομιστής",
7 "changeserver.submit": "Υποβολή",
8 "changeserver.urlError": "Εισάγετε μια έγκυρη διεύθυνση URL", 7 "changeserver.urlError": "Εισάγετε μια έγκυρη διεύθυνση URL",
9 "changeserver.warning": "Οι επιπλέον ρυθμίσεις από το Ferdi δεν θα αποθηκευτούν", 8 "changeserver.warning": "Οι επιπλέον ρυθμίσεις από το Ferdi δεν θα αποθηκευτούν",
10 "connectionLostBanner.cta": "Ανανέωση Υπηρεσίας", 9 "connectionLostBanner.cta": "Ανανέωση Υπηρεσίας",
11 "connectionLostBanner.informationLink": "Τι συνέβη;", 10 "connectionLostBanner.informationLink": "Τι συνέβη;",
12 "connectionLostBanner.message": "Ωχ όχι! Ο Ferdi έχασε την επικοινωνία με το", 11 "connectionLostBanner.message": "Ωχ όχι! Ο Ferdi έχασε την επικοινωνία με το",
13 "feature.announcements.changelog.headline": "Αλλαγές σχετικά με το Ferdi", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Εγγραφή πληροφοριών εντοπισμού σφαλμάτων", 13 "feature.debugger.title": "Εγγραφή πληροφοριών εντοπισμού σφαλμάτων",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Ακύρωση",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi", 27 "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi",
28 "global.cancel": "Ακύρωση",
29 "global.edit": "Επεξεργασία",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Έχετε αποσυνδεθεί από το Διαδίκτυο", 31 "global.notConnectedToTheInternet": "Έχετε αποσυνδεθεί από το Διαδίκτυο",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Ρυθμίσεις",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Υποβολή",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Εισαγάγετε τις υπηρεσίες σας Ferdi 4", 45 "import.headline": "Εισαγάγετε τις υπηρεσίες σας Ferdi 4",
38 "import.notSupportedHeadline": "Υπηρεσίες που δεν υποστηρίζονται ακόμα στο Ferdi 5", 46 "import.notSupportedHeadline": "Υπηρεσίες που δεν υποστηρίζονται ακόμα στο Ferdi 5",
39 "import.skip.label": "Θέλω να προσθέσω υπηρεσίες χειροκίνητα", 47 "import.skip.label": "Θέλω να προσθέσω υπηρεσίες χειροκίνητα",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Σχετικά με το Ferdi", 86 "menu.app.about": "Σχετικά με το Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Έλεγχος για ενημερώσεις", 88 "menu.app.checkForUpdates": "Έλεγχος για ενημερώσεις",
82 "menu.app.hide": "Απόκρυψη", 89 "menu.app.hide": "Απόκρυψη",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Ρυθμίσεις",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Επεξεργασία", 92 "menu.edit": "Επεξεργασία",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Σύνδεση στο λογαριασμό σας", 152 "password.link.login": "Σύνδεση στο λογαριασμό σας",
148 "password.link.signup": "Δημιουργία δωρεάν λογαριασμού", 153 "password.link.signup": "Δημιουργία δωρεάν λογαριασμού",
149 "password.noUser": "Δεν βρέθηκε χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου", 154 "password.noUser": "Δεν βρέθηκε χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου",
150 "password.submit.label": "Υποβολή",
151 "password.successInfo": "Ελέγξτε το email σας", 155 "password.successInfo": "Ελέγξτε το email σας",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Συμπεριλάβετε εκδόσεις beta", 218 "settings.app.form.beta": "Συμπεριλάβετε εκδόσεις beta",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Ενεργοποιήση Ενίσχυσης GPU ", 224 "settings.app.form.enableGPUAcceleration": "Ενεργοποιήση Ενίσχυσης GPU ",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Ρυθμίσεις",
255 "settings.app.headlineAdvanced": "Για προχωρημένους", 259 "settings.app.headlineAdvanced": "Για προχωρημένους",
256 "settings.app.headlineAppearance": "Εμφάνιση", 260 "settings.app.headlineAppearance": "Εμφάνιση",
257 "settings.app.headlineGeneral": "Γενικά", 261 "settings.app.headlineGeneral": "Γενικά",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Λογαριασμός", 285 "settings.navigation.account": "Λογαριασμός",
282 "settings.navigation.availableServices": "Διαθέσιμες υπηρεσίες", 286 "settings.navigation.availableServices": "Διαθέσιμες υπηρεσίες",
283 "settings.navigation.logout": "Αποσύνδεση", 287 "settings.navigation.logout": "Αποσύνδεση",
284 "settings.navigation.settings": "Ρυθμίσεις",
285 "settings.navigation.supportFerdi": "Σχετικά με το Ferdi", 288 "settings.navigation.supportFerdi": "Σχετικά με το Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Οι υπηρεσίες σας", 290 "settings.navigation.yourServices": "Οι υπηρεσίες σας",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Απενεργοποίηση ειδοποιήσεων & ήχου", 417 "sidebar.muteApp": "Απενεργοποίηση ειδοποιήσεων & ήχου",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Ρυθμίσεις",
418 "sidebar.unmuteApp": "Ενεργοποίηση ειδοποιήσεων & ήχου", 420 "sidebar.unmuteApp": "Ενεργοποίηση ειδοποιήσεων & ήχου",
419 "signup.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", 421 "signup.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
420 "signup.emailDuplicate": "Ένας χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη", 422 "signup.emailDuplicate": "Ένας χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Απενεργοποίηση ειδοποιήσεων", 436 "tabs.item.disableNotifications": "Απενεργοποίηση ειδοποιήσεων",
435 "tabs.item.disableService": "Απενεργοποίηση υπηρεσίας", 437 "tabs.item.disableService": "Απενεργοποίηση υπηρεσίας",
436 "tabs.item.edit": "Επεξεργασία",
437 "tabs.item.enableAudio": "Ενεργοποίηση ήχου", 438 "tabs.item.enableAudio": "Ενεργοποίηση ήχου",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Ενεργοποίηση ειδοποιήσεων", 440 "tabs.item.enableNotification": "Ενεργοποίηση ειδοποιήσεων",
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index f7e3d662a..be9bbb961 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Can't connect to Ferdi online services", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "You are not connected to the internet.", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index ae558c98f..9a5c248a2 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Servidor personalizado", 4 "changeserver.customServerLabel": "Servidor personalizado",
5 "changeserver.headline": "Cambiar servidor", 5 "changeserver.headline": "Cambiar servidor",
6 "changeserver.label": "Servidor", 6 "changeserver.label": "Servidor",
7 "changeserver.submit": "Enviar",
8 "changeserver.urlError": "Ingrese una URL válida", 7 "changeserver.urlError": "Ingrese una URL válida",
9 "changeserver.warning": "Los ajustes extra ofrecidos por Ferdi no serán guardados", 8 "changeserver.warning": "Los ajustes extra ofrecidos por Ferdi no serán guardados",
10 "connectionLostBanner.cta": "Recargar Servicio", 9 "connectionLostBanner.cta": "Recargar Servicio",
11 "connectionLostBanner.informationLink": "¿Qué ocurrió?", 10 "connectionLostBanner.informationLink": "¿Qué ocurrió?",
12 "connectionLostBanner.message": "¡Oh no! Ferdi perdió la conexión con {name}.", 11 "connectionLostBanner.message": "¡Oh no! Ferdi perdió la conexión con {name}.",
13 "feature.announcements.changelog.headline": "Cambios en Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publica la información de depuración", 13 "feature.debugger.title": "Publica la información de depuración",
15 "feature.nightlyBuilds.activate": "Activar", 14 "feature.nightlyBuilds.activate": "Activar",
16 "feature.nightlyBuilds.cancel": "Cancelar",
17 "feature.nightlyBuilds.info": "Las \"Nightly builds\" son versiones altamente experimentales de Ferdi que pueden contener características sin pulir o sin completar. Estas versiones son utilizadas principalmente por los desarrolladores para probar sus nuevas características desarrolladas y cómo se comportarán en la versión final. Si no sabe lo que está haciendo, le sugerimos que no active las estas versiones.", 15 "feature.nightlyBuilds.info": "Las \"Nightly builds\" son versiones altamente experimentales de Ferdi que pueden contener características sin pulir o sin completar. Estas versiones son utilizadas principalmente por los desarrolladores para probar sus nuevas características desarrolladas y cómo se comportarán en la versión final. Si no sabe lo que está haciendo, le sugerimos que no active las estas versiones.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Hubo un error al intentar publicar la información de depuración. Por favor, inténtalo de nuevo más tarde o revisa la consola para más información.", 17 "feature.publishDebugInfo.error": "Hubo un error al intentar publicar la información de depuración. Por favor, inténtalo de nuevo más tarde o revisa la consola para más información.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Buscar...", 25 "feature.quickSwitch.search": "Buscar...",
28 "feature.quickSwitch.title": "Cambiar rápidamente", 26 "feature.quickSwitch.title": "Cambiar rápidamente",
29 "global.api.unhealthy": "No es posible conectarse a los servicios en línea de Ferdi.", 27 "global.api.unhealthy": "No es posible conectarse a los servicios en línea de Ferdi.",
28 "global.cancel": "Cancelar",
29 "global.edit": "Editar",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "No estás conectado a Internet", 31 "global.notConnectedToTheInternet": "No estás conectado a Internet",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Configuración",
31 "global.spellchecker.useDefault": "Utilizar estándar del sistema ({default})", 37 "global.spellchecker.useDefault": "Utilizar estándar del sistema ({default})",
32 "global.spellchecking.autodetect": "Detectar el idioma automáticamente", 38 "global.spellchecking.autodetect": "Detectar el idioma automáticamente",
33 "global.spellchecking.autodetect.short": "Automático", 39 "global.spellchecking.autodetect.short": "Automático",
34 "global.spellchecking.language": "Corrector de ortografía", 40 "global.spellchecking.language": "Corrector de ortografía",
41 "global.submit": "Enviar",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "Navegador", 43 "global.userAgentPref": "Navegador",
44 "global.yes": "Yes",
37 "import.headline": "Importa tus servicios de Ferdi 4", 45 "import.headline": "Importa tus servicios de Ferdi 4",
38 "import.notSupportedHeadline": "Servicios aún no admitidos en Ferdi 5", 46 "import.notSupportedHeadline": "Servicios aún no admitidos en Ferdi 5",
39 "import.skip.label": "Quiero agregar servicios manualmente", 47 "import.skip.label": "Quiero agregar servicios manualmente",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Cerrar la pestaña de Tareas", 84 "menu.Todoss.closeTodosDrawer": "Cerrar la pestaña de Tareas",
77 "menu.Todoss.openTodosDrawer": "Abrir la pestaña de tareas", 85 "menu.Todoss.openTodosDrawer": "Abrir la pestaña de tareas",
78 "menu.app.about": "Acerca de Ferdi", 86 "menu.app.about": "Acerca de Ferdi",
79 "menu.app.announcement": "¿Qué hay de nuevo?",
80 "menu.app.autohideMenuBar": "Auto-ocultar barra de menú", 87 "menu.app.autohideMenuBar": "Auto-ocultar barra de menú",
81 "menu.app.checkForUpdates": "Comprobar actualizaciones", 88 "menu.app.checkForUpdates": "Comprobar actualizaciones",
82 "menu.app.hide": "Ocultar", 89 "menu.app.hide": "Ocultar",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Configuración",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Editar", 92 "menu.edit": "Editar",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Inicia sesión en tu cuenta", 152 "password.link.login": "Inicia sesión en tu cuenta",
148 "password.link.signup": "Crear una cuenta gratuita", 153 "password.link.signup": "Crear una cuenta gratuita",
149 "password.noUser": "No se encontró un usuario con esa dirección de correo electrónico", 154 "password.noUser": "No se encontró un usuario con esa dirección de correo electrónico",
150 "password.submit.label": "Enviar",
151 "password.successInfo": "Por favor revisa tu correo electrónico", 155 "password.successInfo": "Por favor revisa tu correo electrónico",
152 "pricing.features.accountSync": "Sincronización de cuenta", 156 "pricing.features.accountSync": "Sincronización de cuenta",
153 "pricing.features.customWebsites": "Agregue sitios personalizados", 157 "pricing.features.customWebsites": "Agregue sitios personalizados",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Incluir versiones beta", 218 "settings.app.form.beta": "Incluir versiones beta",
215 "settings.app.form.clipboardNotifications": "Dejar de mostrar notificaciones acerca del portapapeles", 219 "settings.app.form.clipboardNotifications": "Dejar de mostrar notificaciones acerca del portapapeles",
216 "settings.app.form.closeToSystemTray": "Cerrar Ferdi a la barra de tareas", 220 "settings.app.form.closeToSystemTray": "Cerrar Ferdi a la barra de tareas",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Servidor de Todo personalizado", 222 "settings.app.form.customTodoServer": "Servidor de Todo personalizado",
218 "settings.app.form.darkMode": "Activar tema oscuro", 223 "settings.app.form.darkMode": "Activar tema oscuro",
219 "settings.app.form.enableGPUAcceleration": "Habilitar aceleración de GPU", 224 "settings.app.form.enableGPUAcceleration": "Habilitar aceleración de GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Permitir usar TouchID para desbloquear Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Permitir usar TouchID para desbloquear Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Configuración",
255 "settings.app.headlineAdvanced": "Avanzado", 259 "settings.app.headlineAdvanced": "Avanzado",
256 "settings.app.headlineAppearance": "Apariencia", 260 "settings.app.headlineAppearance": "Apariencia",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Cuenta", 285 "settings.navigation.account": "Cuenta",
282 "settings.navigation.availableServices": "Servicios disponibles", 286 "settings.navigation.availableServices": "Servicios disponibles",
283 "settings.navigation.logout": "Cerrar sesión", 287 "settings.navigation.logout": "Cerrar sesión",
284 "settings.navigation.settings": "Configuración",
285 "settings.navigation.supportFerdi": "Acerca de Ferdi", 288 "settings.navigation.supportFerdi": "Acerca de Ferdi",
286 "settings.navigation.team": "Gestionar equipo", 289 "settings.navigation.team": "Gestionar equipo",
287 "settings.navigation.yourServices": "Tus servicios", 290 "settings.navigation.yourServices": "Tus servicios",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Desactivar notificaciones y sonido", 417 "sidebar.muteApp": "Desactivar notificaciones y sonido",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Abrir diseñador de espacios de trabajo", 419 "sidebar.openWorkspaceDrawer": "Abrir diseñador de espacios de trabajo",
417 "sidebar.settings": "Configuración",
418 "sidebar.unmuteApp": "Activar notificaciones y sonido", 420 "sidebar.unmuteApp": "Activar notificaciones y sonido",
419 "signup.email.label": "Dirección de correo electrónico", 421 "signup.email.label": "Dirección de correo electrónico",
420 "signup.emailDuplicate": "Ya existe un usuario con esa dirección de correo electrónico", 422 "signup.emailDuplicate": "Ya existe un usuario con esa dirección de correo electrónico",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Desactivar notificaciones", 436 "tabs.item.disableNotifications": "Desactivar notificaciones",
435 "tabs.item.disableService": "Desactivar servicio", 437 "tabs.item.disableService": "Desactivar servicio",
436 "tabs.item.edit": "Editar",
437 "tabs.item.enableAudio": "Habilitar audio", 438 "tabs.item.enableAudio": "Habilitar audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Activar notificaciones", 440 "tabs.item.enableNotification": "Activar notificaciones",
diff --git a/src/i18n/locales/et.json b/src/i18n/locales/et.json
index 62efbc5aa..46c249768 100644
--- a/src/i18n/locales/et.json
+++ b/src/i18n/locales/et.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "Olen lisanud Ferdi'i {count} teenust! Hankige tasuta rakendus WhatsApp'ile, Messenger'ile, Slack'ile, Skype'ile ja muule veebiaadressilt www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "Olen lisanud Ferdi'i {count} teenust! Hankige tasuta rakendus WhatsApp'ile, Messenger'ile, Slack'ile, Skype'ile ja muule veebiaadressilt www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Rääkige oma sõpradele ja kolleegidele, kui vinge Ferdi on, ja aidake meil seda sõna levitada.", 14 "feature.shareFranz.text": "Rääkige oma sõpradele ja kolleegidele, kui vinge Ferdi on, ja aidake meil seda sõna levitada.",
15 "global.api.unhealthy": "Ups! Ferdi'i võrguteenustega ei saa ühendust luua", 15 "global.api.unhealthy": "Ups! Ferdi'i võrguteenustega ei saa ühendust luua",
16 "global.edit": "Muuda",
16 "global.franzProRequired": "Vajalik Ferdi Professional tellimus", 17 "global.franzProRequired": "Vajalik Ferdi Professional tellimus",
17 "global.notConnectedToTheInternet": "Teil pole Interneti-ühendust.", 18 "global.notConnectedToTheInternet": "Teil pole Interneti-ühendust.",
19 "global.quit": "Sulge",
20 "global.settings": "Sätted",
18 "global.spellchecker.useDefault": "Kasuta süsteemi vaikeväärtust ({default})", 21 "global.spellchecker.useDefault": "Kasuta süsteemi vaikeväärtust ({default})",
19 "global.spellchecking.autodetect": "Tuvastage keel automaatselt", 22 "global.spellchecking.autodetect": "Tuvastage keel automaatselt",
20 "global.spellchecking.autodetect.short": "Automaatne", 23 "global.spellchecking.autodetect.short": "Automaatne",
21 "global.spellchecking.language": "Õigekirja kontrollimise keel", 24 "global.spellchecking.language": "Õigekirja kontrollimise keel",
25 "global.submit": "Saada",
22 "import.headline": "Importige oma Ferdi 4 teenused", 26 "import.headline": "Importige oma Ferdi 4 teenused",
23 "import.notSupportedHeadline": "Teenused, mida Ferdi 5 veel ei toeta", 27 "import.notSupportedHeadline": "Teenused, mida Ferdi 5 veel ei toeta",
24 "import.skip.label": "Soovin teenuseid käsitsi lisada", 28 "import.skip.label": "Soovin teenuseid käsitsi lisada",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Kontrolli kas värskendused on saadaval", 55 "menu.app.checkForUpdates": "Kontrolli kas värskendused on saadaval",
52 "menu.app.hide": "Peida", 56 "menu.app.hide": "Peida",
53 "menu.app.hideOthers": "Peida teised", 57 "menu.app.hideOthers": "Peida teised",
54 "menu.app.quit": "Sulge",
55 "menu.app.settings": "Sätted",
56 "menu.app.unhide": "Näita", 58 "menu.app.unhide": "Näita",
57 "menu.edit": "Muuda", 59 "menu.edit": "Muuda",
58 "menu.edit.copy": "Kopeeri", 60 "menu.edit.copy": "Kopeeri",
@@ -109,7 +111,6 @@
109 "password.link.login": "Logige sisse oma kontole", 111 "password.link.login": "Logige sisse oma kontole",
110 "password.link.signup": "Loo tasuta konto", 112 "password.link.signup": "Loo tasuta konto",
111 "password.noUser": "Ühtegi selle e-posti aadressiga kasutajat ei leitud", 113 "password.noUser": "Ühtegi selle e-posti aadressiga kasutajat ei leitud",
112 "password.submit.label": "Saada",
113 "password.successInfo": "Palun kontrollige oma e-posti aadressi", 114 "password.successInfo": "Palun kontrollige oma e-posti aadressi",
114 "pricing.features.accountSync": "Konto sünkroonimine", 115 "pricing.features.accountSync": "Konto sünkroonimine",
115 "pricing.features.adFree": "Igavesti reklaamivaba", 116 "pricing.features.adFree": "Igavesti reklaamivaba",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "Hoia akna sulgemisel Ferdi taustal töös", 179 "settings.app.form.runInBackground": "Hoia akna sulgemisel Ferdi taustal töös",
179 "settings.app.form.showDisabledServices": "Kuva keelatud teenuste vahelehed", 180 "settings.app.form.showDisabledServices": "Kuva keelatud teenuste vahelehed",
180 "settings.app.form.showMessagesBadgesWhenMuted": "Kuva lugemata sõnumimärk, kui teated on keelatud", 181 "settings.app.form.showMessagesBadgesWhenMuted": "Kuva lugemata sõnumimärk, kui teated on keelatud",
181 "settings.app.headline": "Sätted",
182 "settings.app.headlineAdvanced": "Täpsemalt", 182 "settings.app.headlineAdvanced": "Täpsemalt",
183 "settings.app.headlineAppearance": "Välimus", 183 "settings.app.headlineAppearance": "Välimus",
184 "settings.app.headlineGeneral": "Üldine", 184 "settings.app.headlineGeneral": "Üldine",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "Saadaolevad teenused", 196 "settings.navigation.availableServices": "Saadaolevad teenused",
197 "settings.navigation.inviteFriends": "Kutsu sõpru", 197 "settings.navigation.inviteFriends": "Kutsu sõpru",
198 "settings.navigation.logout": "Logi välja", 198 "settings.navigation.logout": "Logi välja",
199 "settings.navigation.settings": "Sätted",
200 "settings.navigation.team": "Halda meeskonda", 199 "settings.navigation.team": "Halda meeskonda",
201 "settings.navigation.yourServices": "Teie teenused", 200 "settings.navigation.yourServices": "Teie teenused",
202 "settings.navigation.yourWorkspaces": "Teie tööruumid", 201 "settings.navigation.yourWorkspaces": "Teie tööruumid",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "Keela teated ja heli", 301 "sidebar.muteApp": "Keela teated ja heli",
303 "sidebar.openTodosDrawer": "Ava Ferdi ülesanded", 302 "sidebar.openTodosDrawer": "Ava Ferdi ülesanded",
304 "sidebar.openWorkspaceDrawer": "Ava tööruumide sahtel", 303 "sidebar.openWorkspaceDrawer": "Ava tööruumide sahtel",
305 "sidebar.settings": "Sätted",
306 "sidebar.unmuteApp": "Luba teated ja heli", 304 "sidebar.unmuteApp": "Luba teated ja heli",
307 "signup.email.label": "E-posti aadress", 305 "signup.email.label": "E-posti aadress",
308 "signup.emailDuplicate": "Selle e-posti aadressiga kasutaja on juba olemas", 306 "signup.emailDuplicate": "Selle e-posti aadressiga kasutaja on juba olemas",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "Keela heli", 317 "tabs.item.disableAudio": "Keela heli",
320 "tabs.item.disableNotifications": "Keela teated", 318 "tabs.item.disableNotifications": "Keela teated",
321 "tabs.item.disableService": "Keela teenus", 319 "tabs.item.disableService": "Keela teenus",
322 "tabs.item.edit": "Muuda",
323 "tabs.item.enableAudio": "Luba heli", 320 "tabs.item.enableAudio": "Luba heli",
324 "tabs.item.enableNotification": "Luba teated", 321 "tabs.item.enableNotification": "Luba teated",
325 "tabs.item.enableService": "Luba teenus", 322 "tabs.item.enableService": "Luba teenus",
diff --git a/src/i18n/locales/fa.json b/src/i18n/locales/fa.json
index bfc275e58..be8b1be20 100644
--- a/src/i18n/locales/fa.json
+++ b/src/i18n/locales/fa.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "من {count} تا سرویس تو فرَنز اضافه کردم! برنامه رایگان برای واتسآپ، اسکایپ، مسنجر، اسلک رو از سایت www.getferdi.com دانلود کن /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "من {count} تا سرویس تو فرَنز اضافه کردم! برنامه رایگان برای واتسآپ، اسکایپ، مسنجر، اسلک رو از سایت www.getferdi.com دانلود کن /cc @FerdiMessenger",
14 "feature.shareFranz.text": "به دوستات بگو فرَنز چقدر باحاله و بهمون کمک کن گسترش پیدا کنیم.", 14 "feature.shareFranz.text": "به دوستات بگو فرَنز چقدر باحاله و بهمون کمک کن گسترش پیدا کنیم.",
15 "global.api.unhealthy": "به سرویس های آنلاین فرَنز متصل نشدی", 15 "global.api.unhealthy": "به سرویس های آنلاین فرَنز متصل نشدی",
16 "global.edit": "ویرایش",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "اینترنت وصل نیست", 18 "global.notConnectedToTheInternet": "اینترنت وصل نیست",
19 "global.quit": "خروج ",
20 "global.settings": "تنظیمات",
18 "global.spellchecker.useDefault": "استفاده از پیشفرض سیستم ({default})", 21 "global.spellchecker.useDefault": "استفاده از پیشفرض سیستم ({default})",
19 "global.spellchecking.autodetect": "تشخیص خودکار زبان", 22 "global.spellchecking.autodetect": "تشخیص خودکار زبان",
20 "global.spellchecking.autodetect.short": "خودکار", 23 "global.spellchecking.autodetect.short": "خودکار",
21 "global.spellchecking.language": "زبان غلط یاب املایی", 24 "global.spellchecking.language": "زبان غلط یاب املایی",
25 "global.submit": "ارسال ",
22 "import.headline": "جانشانی سرویس های فرانز 4", 26 "import.headline": "جانشانی سرویس های فرانز 4",
23 "import.notSupportedHeadline": "این سرویس ها در Ferdi ۵ پشتیبانی نمیشوند.", 27 "import.notSupportedHeadline": "این سرویس ها در Ferdi ۵ پشتیبانی نمیشوند.",
24 "import.skip.label": "میخواهم سرویس ها را به صورت دستی اضافه کنم.", 28 "import.skip.label": "میخواهم سرویس ها را به صورت دستی اضافه کنم.",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "بررسی وجود نسخه جدید ", 55 "menu.app.checkForUpdates": "بررسی وجود نسخه جدید ",
52 "menu.app.hide": "مخفی‌کردن ", 56 "menu.app.hide": "مخفی‌کردن ",
53 "menu.app.hideOthers": "مخفی کردن بقیه ", 57 "menu.app.hideOthers": "مخفی کردن بقیه ",
54 "menu.app.quit": "خروج ",
55 "menu.app.settings": "تنظیمات ",
56 "menu.app.unhide": "آشکارسازی", 58 "menu.app.unhide": "آشکارسازی",
57 "menu.edit": "ویرایش ", 59 "menu.edit": "ویرایش ",
58 "menu.edit.copy": "کپی", 60 "menu.edit.copy": "کپی",
@@ -109,7 +111,6 @@
109 "password.link.login": "وارد شدن به اکانت خود", 111 "password.link.login": "وارد شدن به اکانت خود",
110 "password.link.signup": "ساخت یک حساب کاربری", 112 "password.link.signup": "ساخت یک حساب کاربری",
111 "password.noUser": "هیچ کاربری با این نشانی ایمیل یافت نشد ", 113 "password.noUser": "هیچ کاربری با این نشانی ایمیل یافت نشد ",
112 "password.submit.label": "ارسال ",
113 "password.successInfo": "لطفا ایمیل خود را چک کنید", 114 "password.successInfo": "لطفا ایمیل خود را چک کنید",
114 "pricing.features.accountSync": "Account Synchronisation", 115 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free", 116 "pricing.features.adFree": "Forever ad-free",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "فرانز را در پشت زمینه نگه دار زمانی که پنجره آن بسته میشود", 179 "settings.app.form.runInBackground": "فرانز را در پشت زمینه نگه دار زمانی که پنجره آن بسته میشود",
179 "settings.app.form.showDisabledServices": "سرویس های غیرفعال را نشان بده ", 180 "settings.app.form.showDisabledServices": "سرویس های غیرفعال را نشان بده ",
180 "settings.app.form.showMessagesBadgesWhenMuted": "نماد پیام خوانده نشده را زمانی که نوتیفیکیشن ها غیرفعالند نشان بده", 181 "settings.app.form.showMessagesBadgesWhenMuted": "نماد پیام خوانده نشده را زمانی که نوتیفیکیشن ها غیرفعالند نشان بده",
181 "settings.app.headline": "تنظیمات ",
182 "settings.app.headlineAdvanced": "پیشرفته ", 182 "settings.app.headlineAdvanced": "پیشرفته ",
183 "settings.app.headlineAppearance": "ظاهر ", 183 "settings.app.headlineAppearance": "ظاهر ",
184 "settings.app.headlineGeneral": "عمومی ", 184 "settings.app.headlineGeneral": "عمومی ",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "سرویس های موجود", 196 "settings.navigation.availableServices": "سرویس های موجود",
197 "settings.navigation.inviteFriends": "دعوت دوستان", 197 "settings.navigation.inviteFriends": "دعوت دوستان",
198 "settings.navigation.logout": "خروج از سیستم ", 198 "settings.navigation.logout": "خروج از سیستم ",
199 "settings.navigation.settings": "تنظیمات ",
200 "settings.navigation.team": "مدیریت گروه", 199 "settings.navigation.team": "مدیریت گروه",
201 "settings.navigation.yourServices": "سرویس های شما", 200 "settings.navigation.yourServices": "سرویس های شما",
202 "settings.navigation.yourWorkspaces": "فضای کاری شما", 201 "settings.navigation.yourWorkspaces": "فضای کاری شما",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "غیرفعال کردن اعلان ها و صدا", 301 "sidebar.muteApp": "غیرفعال کردن اعلان ها و صدا",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 302 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "بازکردن کشوی فضای کاری", 303 "sidebar.openWorkspaceDrawer": "بازکردن کشوی فضای کاری",
305 "sidebar.settings": "تنظیمات",
306 "sidebar.unmuteApp": "فعال سازی اعلان ها و صدا", 304 "sidebar.unmuteApp": "فعال سازی اعلان ها و صدا",
307 "signup.email.label": "نشانی ایمیل", 305 "signup.email.label": "نشانی ایمیل",
308 "signup.emailDuplicate": "یک کاربر با این ایمیل هم اکنون موجود است.", 306 "signup.emailDuplicate": "یک کاربر با این ایمیل هم اکنون موجود است.",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "غیرفعال کردن صدا", 317 "tabs.item.disableAudio": "غیرفعال کردن صدا",
320 "tabs.item.disableNotifications": "غیر فعال کردن اعلان ها", 318 "tabs.item.disableNotifications": "غیر فعال کردن اعلان ها",
321 "tabs.item.disableService": "غیر فعال کردن سرویس", 319 "tabs.item.disableService": "غیر فعال کردن سرویس",
322 "tabs.item.edit": "ویرایش",
323 "tabs.item.enableAudio": "فعال‌سازی صدا", 320 "tabs.item.enableAudio": "فعال‌سازی صدا",
324 "tabs.item.enableNotification": "فعال سازی اعلان‌ها", 321 "tabs.item.enableNotification": "فعال سازی اعلان‌ها",
325 "tabs.item.enableService": "فعال سازی سرویس", 322 "tabs.item.enableService": "فعال سازی سرویس",
diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json
index 544c54c77..5ccea37e5 100644
--- a/src/i18n/locales/fi.json
+++ b/src/i18n/locales/fi.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Mukautettu palvelin", 4 "changeserver.customServerLabel": "Mukautettu palvelin",
5 "changeserver.headline": "Vaihda palvelinta", 5 "changeserver.headline": "Vaihda palvelinta",
6 "changeserver.label": "Palvelin", 6 "changeserver.label": "Palvelin",
7 "changeserver.submit": "Jatka",
8 "changeserver.urlError": "Anna kelvollinen URL-osoite", 7 "changeserver.urlError": "Anna kelvollinen URL-osoite",
9 "changeserver.warning": "Ferdin tarjoamia lisäasetuksia ei tallenneta", 8 "changeserver.warning": "Ferdin tarjoamia lisäasetuksia ei tallenneta",
10 "connectionLostBanner.cta": "Lataa Palvelu uudelleen", 9 "connectionLostBanner.cta": "Lataa Palvelu uudelleen",
11 "connectionLostBanner.informationLink": "Mitä tapahtui?", 10 "connectionLostBanner.informationLink": "Mitä tapahtui?",
12 "connectionLostBanner.message": "Voi ei! Ferdi menetti yhteyden {name}.", 11 "connectionLostBanner.message": "Voi ei! Ferdi menetti yhteyden {name}.",
13 "feature.announcements.changelog.headline": "Muutoksia Ferdissä {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Julkaise virheraportti", 13 "feature.debugger.title": "Julkaise virheraportti",
15 "feature.nightlyBuilds.activate": "Aktivoi", 14 "feature.nightlyBuilds.activate": "Aktivoi",
16 "feature.nightlyBuilds.cancel": "Peruuta",
17 "feature.nightlyBuilds.info": "Uusimmat versiot ovat Ferdin kokeellisia versioita, jotka voivat sisältää viimeistelemättömiä tai keskeneräisiä ominaisuuksia. Näitä uusimpia versioita käyttävät pääasiassa kehittäjät testaamaan uusia ominaisuuksia ja miten ne toimivat lopullisessa versiossa. Jos et tiedä mitä olet tekemässä, suosittelemme ettet aktivoi uusimpia versioita.", 15 "feature.nightlyBuilds.info": "Uusimmat versiot ovat Ferdin kokeellisia versioita, jotka voivat sisältää viimeistelemättömiä tai keskeneräisiä ominaisuuksia. Näitä uusimpia versioita käyttävät pääasiassa kehittäjät testaamaan uusia ominaisuuksia ja miten ne toimivat lopullisessa versiossa. Jos et tiedä mitä olet tekemässä, suosittelemme ettet aktivoi uusimpia versioita.",
18 "feature.nightlyBuilds.title": "Uusimmat versiot", 16 "feature.nightlyBuilds.title": "Uusimmat versiot",
19 "feature.publishDebugInfo.error": "Virheraportin julkaisussa tapahtui virhe. Yritä myöhemmin uudelleen tai katso konsolista saadaksesi lisätietoja.", 17 "feature.publishDebugInfo.error": "Virheraportin julkaisussa tapahtui virhe. Yritä myöhemmin uudelleen tai katso konsolista saadaksesi lisätietoja.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Etsi...", 25 "feature.quickSwitch.search": "Etsi...",
28 "feature.quickSwitch.title": "Pikavalitsin", 26 "feature.quickSwitch.title": "Pikavalitsin",
29 "global.api.unhealthy": "Ferdin verkkopalveluihin ei saada yhteyttä", 27 "global.api.unhealthy": "Ferdin verkkopalveluihin ei saada yhteyttä",
28 "global.cancel": "Peruuta",
29 "global.edit": "Muokkaa",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Et ole yhteydessä internetiin.", 31 "global.notConnectedToTheInternet": "Et ole yhteydessä internetiin.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Asetukset",
31 "global.spellchecker.useDefault": "Käytä järjestelmän oletusasetusta ({default})", 37 "global.spellchecker.useDefault": "Käytä järjestelmän oletusasetusta ({default})",
32 "global.spellchecking.autodetect": "Tunnista kieli automaattisesti", 38 "global.spellchecking.autodetect": "Tunnista kieli automaattisesti",
33 "global.spellchecking.autodetect.short": "Automaattinen", 39 "global.spellchecking.autodetect.short": "Automaattinen",
34 "global.spellchecking.language": "Oikeinkirjoituksen tarkistuskieli", 40 "global.spellchecking.language": "Oikeinkirjoituksen tarkistuskieli",
41 "global.submit": "Jatka",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Tuo Ferdin 4 palveluasi", 45 "import.headline": "Tuo Ferdin 4 palveluasi",
38 "import.notSupportedHeadline": "Palvelut eivät vielä tue Ferdi 5-versiota", 46 "import.notSupportedHeadline": "Palvelut eivät vielä tue Ferdi 5-versiota",
39 "import.skip.label": "Haluan lisätä palvelut manuaalisesti", 47 "import.skip.label": "Haluan lisätä palvelut manuaalisesti",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Sulje Todos-valikko", 84 "menu.Todoss.closeTodosDrawer": "Sulje Todos-valikko",
77 "menu.Todoss.openTodosDrawer": "Avaa Todos-valikko", 85 "menu.Todoss.openTodosDrawer": "Avaa Todos-valikko",
78 "menu.app.about": "Tietoja Ferdistä", 86 "menu.app.about": "Tietoja Ferdistä",
79 "menu.app.announcement": "Mitä uutta?",
80 "menu.app.autohideMenuBar": "Piilota valikko automaattisesti", 87 "menu.app.autohideMenuBar": "Piilota valikko automaattisesti",
81 "menu.app.checkForUpdates": "Tarkista päivitykset", 88 "menu.app.checkForUpdates": "Tarkista päivitykset",
82 "menu.app.hide": "Piilota", 89 "menu.app.hide": "Piilota",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Asetukset",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Muokkaa", 92 "menu.edit": "Muokkaa",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Kirjaudu tilillesi", 152 "password.link.login": "Kirjaudu tilillesi",
148 "password.link.signup": "Luo ilmainen tili", 153 "password.link.signup": "Luo ilmainen tili",
149 "password.noUser": "Tälle sähköpostiosoiteelle ei löytynyt käyttäjää", 154 "password.noUser": "Tälle sähköpostiosoiteelle ei löytynyt käyttäjää",
150 "password.submit.label": "Jatka",
151 "password.successInfo": "Ole hyvä ja tarkista sähköpostisi", 155 "password.successInfo": "Ole hyvä ja tarkista sähköpostisi",
152 "pricing.features.accountSync": "Tilin Synkronointi", 156 "pricing.features.accountSync": "Tilin Synkronointi",
153 "pricing.features.customWebsites": "Lisää mukautettuja sivustoja", 157 "pricing.features.customWebsites": "Lisää mukautettuja sivustoja",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Sisällytä beta-versiot", 218 "settings.app.form.beta": "Sisällytä beta-versiot",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Mukautettu Todo-Palvelin", 222 "settings.app.form.customTodoServer": "Mukautettu Todo-Palvelin",
218 "settings.app.form.darkMode": "Ota tumma tila käyttöön", 223 "settings.app.form.darkMode": "Ota tumma tila käyttöön",
219 "settings.app.form.enableGPUAcceleration": "Ota Gpu-kiihdytys käyttöön", 224 "settings.app.form.enableGPUAcceleration": "Ota Gpu-kiihdytys käyttöön",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Salli TouchID:n käyttö Ferdin avaamiseksi", 256 "settings.app.form.useTouchIdToUnlock": "Salli TouchID:n käyttö Ferdin avaamiseksi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Asetukset",
255 "settings.app.headlineAdvanced": "Lisäasetukset", 259 "settings.app.headlineAdvanced": "Lisäasetukset",
256 "settings.app.headlineAppearance": "Ulkoasu", 260 "settings.app.headlineAppearance": "Ulkoasu",
257 "settings.app.headlineGeneral": "Yleinen", 261 "settings.app.headlineGeneral": "Yleinen",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Tili", 285 "settings.navigation.account": "Tili",
282 "settings.navigation.availableServices": "Käytettävissä olevat palvelut", 286 "settings.navigation.availableServices": "Käytettävissä olevat palvelut",
283 "settings.navigation.logout": "Kirjaudu ulos", 287 "settings.navigation.logout": "Kirjaudu ulos",
284 "settings.navigation.settings": "Asetukset",
285 "settings.navigation.supportFerdi": "Tietoja Ferdistä", 288 "settings.navigation.supportFerdi": "Tietoja Ferdistä",
286 "settings.navigation.team": "Hallinnoi tiimiä", 289 "settings.navigation.team": "Hallinnoi tiimiä",
287 "settings.navigation.yourServices": "Sinun palvelusi", 290 "settings.navigation.yourServices": "Sinun palvelusi",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Poista ilmoitukset ja äänet käytöstä", 417 "sidebar.muteApp": "Poista ilmoitukset ja äänet käytöstä",
415 "sidebar.openTodosDrawer": "Avaa Ferdi Todos", 418 "sidebar.openTodosDrawer": "Avaa Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Avaa työtilan valikko", 419 "sidebar.openWorkspaceDrawer": "Avaa työtilan valikko",
417 "sidebar.settings": "Asetukset",
418 "sidebar.unmuteApp": "Käytä ilmoituksia ja ääniä", 420 "sidebar.unmuteApp": "Käytä ilmoituksia ja ääniä",
419 "signup.email.label": "Sähköpostiosoite", 421 "signup.email.label": "Sähköpostiosoite",
420 "signup.emailDuplicate": "Käyttäjä, jolla on tämä sähköpostiosoite, on jo olemassa", 422 "signup.emailDuplicate": "Käyttäjä, jolla on tämä sähköpostiosoite, on jo olemassa",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Poista ilmoitukset käytöstä", 436 "tabs.item.disableNotifications": "Poista ilmoitukset käytöstä",
435 "tabs.item.disableService": "Poista palvelu", 437 "tabs.item.disableService": "Poista palvelu",
436 "tabs.item.edit": "Muokkaa",
437 "tabs.item.enableAudio": "Ota ääni käyttöön", 438 "tabs.item.enableAudio": "Ota ääni käyttöön",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Ota ilmoitukset käyttöön", 440 "tabs.item.enableNotification": "Ota ilmoitukset käyttöön",
diff --git a/src/i18n/locales/fil.json b/src/i18n/locales/fil.json
index 0bcaad1ee..54326b84b 100644
--- a/src/i18n/locales/fil.json
+++ b/src/i18n/locales/fil.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
15 "global.api.unhealthy": "Hindi maka connect sa 'Ferdi online services'", 15 "global.api.unhealthy": "Hindi maka connect sa 'Ferdi online services'",
16 "global.edit": "Edit",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "Hindi ka naka connect sa internet.", 18 "global.notConnectedToTheInternet": "Hindi ka naka connect sa internet.",
19 "global.quit": "Quit",
20 "global.settings": "Settings",
18 "global.spellchecker.useDefault": "Use System Default ({default})", 21 "global.spellchecker.useDefault": "Use System Default ({default})",
19 "global.spellchecking.autodetect": "Detect language automatically", 22 "global.spellchecking.autodetect": "Detect language automatically",
20 "global.spellchecking.autodetect.short": "Automatic", 23 "global.spellchecking.autodetect.short": "Automatic",
21 "global.spellchecking.language": "Spell checking language", 24 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "Submit",
22 "import.headline": "Ilagay ang iyonhg Ferdi 4 services", 26 "import.headline": "Ilagay ang iyonhg Ferdi 4 services",
23 "import.notSupportedHeadline": "Ang mga services ay hindi pa supported ni Ferdi 5", 27 "import.notSupportedHeadline": "Ang mga services ay hindi pa supported ni Ferdi 5",
24 "import.skip.label": "Gusto kong magdagdag", 28 "import.skip.label": "Gusto kong magdagdag",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Check for updates", 55 "menu.app.checkForUpdates": "Check for updates",
52 "menu.app.hide": "Hide", 56 "menu.app.hide": "Hide",
53 "menu.app.hideOthers": "Hide Others", 57 "menu.app.hideOthers": "Hide Others",
54 "menu.app.quit": "Quit",
55 "menu.app.settings": "Settings",
56 "menu.app.unhide": "Unhide", 58 "menu.app.unhide": "Unhide",
57 "menu.edit": "Edit", 59 "menu.edit": "Edit",
58 "menu.edit.copy": "Copy", 60 "menu.edit.copy": "Copy",
@@ -109,7 +111,6 @@
109 "password.link.login": "Sign in to your account", 111 "password.link.login": "Sign in to your account",
110 "password.link.signup": "Create a free account", 112 "password.link.signup": "Create a free account",
111 "password.noUser": "No user with that email address was found", 113 "password.noUser": "No user with that email address was found",
112 "password.submit.label": "Submit",
113 "password.successInfo": "Please check your email", 114 "password.successInfo": "Please check your email",
114 "pricing.features.accountSync": "Account Synchronisation", 115 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free", 116 "pricing.features.adFree": "Forever ad-free",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 179 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
179 "settings.app.form.showDisabledServices": "Display disabled services tabs", 180 "settings.app.form.showDisabledServices": "Display disabled services tabs",
180 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 181 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
181 "settings.app.headline": "Settings",
182 "settings.app.headlineAdvanced": "Advanced", 182 "settings.app.headlineAdvanced": "Advanced",
183 "settings.app.headlineAppearance": "Appearance", 183 "settings.app.headlineAppearance": "Appearance",
184 "settings.app.headlineGeneral": "General", 184 "settings.app.headlineGeneral": "General",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "Available services", 196 "settings.navigation.availableServices": "Available services",
197 "settings.navigation.inviteFriends": "Invite Friends", 197 "settings.navigation.inviteFriends": "Invite Friends",
198 "settings.navigation.logout": "Logout", 198 "settings.navigation.logout": "Logout",
199 "settings.navigation.settings": "Settings",
200 "settings.navigation.team": "Manage Team", 199 "settings.navigation.team": "Manage Team",
201 "settings.navigation.yourServices": "Your services", 200 "settings.navigation.yourServices": "Your services",
202 "settings.navigation.yourWorkspaces": "Your workspaces", 201 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "Disable notifications & audio", 301 "sidebar.muteApp": "Disable notifications & audio",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 302 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 303 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
305 "sidebar.settings": "Settings",
306 "sidebar.unmuteApp": "Enable notifications & audio", 304 "sidebar.unmuteApp": "Enable notifications & audio",
307 "signup.email.label": "Email Address", 305 "signup.email.label": "Email Address",
308 "signup.emailDuplicate": "A user with that email address already exists", 306 "signup.emailDuplicate": "A user with that email address already exists",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "Disable audio", 317 "tabs.item.disableAudio": "Disable audio",
320 "tabs.item.disableNotifications": "Disable notifications", 318 "tabs.item.disableNotifications": "Disable notifications",
321 "tabs.item.disableService": "Disable service", 319 "tabs.item.disableService": "Disable service",
322 "tabs.item.edit": "Edit",
323 "tabs.item.enableAudio": "Enable audio", 320 "tabs.item.enableAudio": "Enable audio",
324 "tabs.item.enableNotification": "Enable notifications", 321 "tabs.item.enableNotification": "Enable notifications",
325 "tabs.item.enableService": "Enable service", 322 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index c3968b2c0..d81d23d79 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Serveur personnalisé", 4 "changeserver.customServerLabel": "Serveur personnalisé",
5 "changeserver.headline": "Changer de serveur", 5 "changeserver.headline": "Changer de serveur",
6 "changeserver.label": "Serveur", 6 "changeserver.label": "Serveur",
7 "changeserver.submit": "Soumettre",
8 "changeserver.urlError": "Entrez une URL valide", 7 "changeserver.urlError": "Entrez une URL valide",
9 "changeserver.warning": "Les paramètres supplémentaires proposés par Ferdi ne seront pas sauvegardés", 8 "changeserver.warning": "Les paramètres supplémentaires proposés par Ferdi ne seront pas sauvegardés",
10 "connectionLostBanner.cta": "Redémarrer le service", 9 "connectionLostBanner.cta": "Redémarrer le service",
11 "connectionLostBanner.informationLink": "Que s'est-il passé?", 10 "connectionLostBanner.informationLink": "Que s'est-il passé?",
12 "connectionLostBanner.message": "Oh non ! Ferdi a perdu la connexion avec {name}.", 11 "connectionLostBanner.message": "Oh non ! Ferdi a perdu la connexion avec {name}.",
13 "feature.announcements.changelog.headline": "Les nouveaux changements dans Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publier les informations de débogage", 13 "feature.debugger.title": "Publier les informations de débogage",
15 "feature.nightlyBuilds.activate": "Activer", 14 "feature.nightlyBuilds.activate": "Activer",
16 "feature.nightlyBuilds.cancel": "Annuler",
17 "feature.nightlyBuilds.info": "Les versions de développement sont des versions expérimentales de Ferdi qui peuvent contenir des fonctionnalités non optimisées ou incomplètes. Ces versions de développement sont principalement utilisés par les développeurs pour tester leurs nouvelles fonctionnalités et leurs performances. Si vous ne savez pas ce que vous faites, nous vous suggérons de ne pas activer les versions de développement.", 15 "feature.nightlyBuilds.info": "Les versions de développement sont des versions expérimentales de Ferdi qui peuvent contenir des fonctionnalités non optimisées ou incomplètes. Ces versions de développement sont principalement utilisés par les développeurs pour tester leurs nouvelles fonctionnalités et leurs performances. Si vous ne savez pas ce que vous faites, nous vous suggérons de ne pas activer les versions de développement.",
18 "feature.nightlyBuilds.title": "Versions de développement", 16 "feature.nightlyBuilds.title": "Versions de développement",
19 "feature.publishDebugInfo.error": "Il y a eu une erreur en essayant de publier les informations de débogage. Veuillez réessayer plus tard ou consulter la console pour plus d'informations.", 17 "feature.publishDebugInfo.error": "Il y a eu une erreur en essayant de publier les informations de débogage. Veuillez réessayer plus tard ou consulter la console pour plus d'informations.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Rechercher...", 25 "feature.quickSwitch.search": "Rechercher...",
28 "feature.quickSwitch.title": "Changement rapide", 26 "feature.quickSwitch.title": "Changement rapide",
29 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi", 27 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi",
28 "global.cancel": "Annuler",
29 "global.edit": "Éditer",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", 31 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Paramètres",
31 "global.spellchecker.useDefault": "Par défaut ({default})", 37 "global.spellchecker.useDefault": "Par défaut ({default})",
32 "global.spellchecking.autodetect": "Détecter automatiquement la langue", 38 "global.spellchecking.autodetect": "Détecter automatiquement la langue",
33 "global.spellchecking.autodetect.short": "Automatiquement", 39 "global.spellchecking.autodetect.short": "Automatiquement",
34 "global.spellchecking.language": "Langue de la vérification orthographique", 40 "global.spellchecking.language": "Langue de la vérification orthographique",
41 "global.submit": "Soumettre",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importez vos services depuis la version 4 de Ferdi", 45 "import.headline": "Importez vos services depuis la version 4 de Ferdi",
38 "import.notSupportedHeadline": "Ces services ne sont pas encore supportés par la version 5 de Ferdi", 46 "import.notSupportedHeadline": "Ces services ne sont pas encore supportés par la version 5 de Ferdi",
39 "import.skip.label": "Je veux ajouter des services manuellement", 47 "import.skip.label": "Je veux ajouter des services manuellement",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Fermer le tiroir Todos", 84 "menu.Todoss.closeTodosDrawer": "Fermer le tiroir Todos",
77 "menu.Todoss.openTodosDrawer": "Ouvrir le tiroir Todos", 85 "menu.Todoss.openTodosDrawer": "Ouvrir le tiroir Todos",
78 "menu.app.about": "À propos de Ferdi", 86 "menu.app.about": "À propos de Ferdi",
79 "menu.app.announcement": "Quoi de neuf?",
80 "menu.app.autohideMenuBar": "Cacher automatiquement la barre de menu", 87 "menu.app.autohideMenuBar": "Cacher automatiquement la barre de menu",
81 "menu.app.checkForUpdates": "Vérifier les mises à jour", 88 "menu.app.checkForUpdates": "Vérifier les mises à jour",
82 "menu.app.hide": "Masquer", 89 "menu.app.hide": "Masquer",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Paramètres",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Éditer", 92 "menu.edit": "Éditer",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Connectez-vous à votre compte", 152 "password.link.login": "Connectez-vous à votre compte",
148 "password.link.signup": "Créer un compte gratuit", 153 "password.link.signup": "Créer un compte gratuit",
149 "password.noUser": "Aucun utilisateur n'a été trouvé avec cette adresse email", 154 "password.noUser": "Aucun utilisateur n'a été trouvé avec cette adresse email",
150 "password.submit.label": "Soumettre",
151 "password.successInfo": "Merci de consulter vos emails", 155 "password.successInfo": "Merci de consulter vos emails",
152 "pricing.features.accountSync": "Synchronisation de compte", 156 "pricing.features.accountSync": "Synchronisation de compte",
153 "pricing.features.customWebsites": "Ajouter des sites web modifiés", 157 "pricing.features.customWebsites": "Ajouter des sites web modifiés",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Accepter les versions bêta", 218 "settings.app.form.beta": "Accepter les versions bêta",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Afficher Ferdi dans la barre d'état système", 220 "settings.app.form.closeToSystemTray": "Afficher Ferdi dans la barre d'état système",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Serveur Todo personnalisé", 222 "settings.app.form.customTodoServer": "Serveur Todo personnalisé",
218 "settings.app.form.darkMode": "Activer le mode sombre", 223 "settings.app.form.darkMode": "Activer le mode sombre",
219 "settings.app.form.enableGPUAcceleration": "Activer l'accélération GPU", 224 "settings.app.form.enableGPUAcceleration": "Activer l'accélération GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Autoriser l'utilisation de TouchID pour déverrouiller Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Autoriser l'utilisation de TouchID pour déverrouiller Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Paramètres",
255 "settings.app.headlineAdvanced": "Paramètres avancés", 259 "settings.app.headlineAdvanced": "Paramètres avancés",
256 "settings.app.headlineAppearance": "Apparence", 260 "settings.app.headlineAppearance": "Apparence",
257 "settings.app.headlineGeneral": "Général", 261 "settings.app.headlineGeneral": "Général",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Compte", 285 "settings.navigation.account": "Compte",
282 "settings.navigation.availableServices": "Services disponibles", 286 "settings.navigation.availableServices": "Services disponibles",
283 "settings.navigation.logout": "Se déconnecter", 287 "settings.navigation.logout": "Se déconnecter",
284 "settings.navigation.settings": "Paramètres",
285 "settings.navigation.supportFerdi": "À propos de Ferdi", 288 "settings.navigation.supportFerdi": "À propos de Ferdi",
286 "settings.navigation.team": "Gérer l'équipe", 289 "settings.navigation.team": "Gérer l'équipe",
287 "settings.navigation.yourServices": "Vos services", 290 "settings.navigation.yourServices": "Vos services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Désactiver les notifications et les sons", 417 "sidebar.muteApp": "Désactiver les notifications et les sons",
415 "sidebar.openTodosDrawer": "Ouvrir Ferdi Todos", 418 "sidebar.openTodosDrawer": "Ouvrir Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Ouvrir l'espace de travail", 419 "sidebar.openWorkspaceDrawer": "Ouvrir l'espace de travail",
417 "sidebar.settings": "Paramètres",
418 "sidebar.unmuteApp": "Activer les notifications et les sons", 420 "sidebar.unmuteApp": "Activer les notifications et les sons",
419 "signup.email.label": "Adresse Email", 421 "signup.email.label": "Adresse Email",
420 "signup.emailDuplicate": "Cette adresse email est déjà utilisée", 422 "signup.emailDuplicate": "Cette adresse email est déjà utilisée",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Désactiver les notifications", 436 "tabs.item.disableNotifications": "Désactiver les notifications",
435 "tabs.item.disableService": "Désactiver le service", 437 "tabs.item.disableService": "Désactiver le service",
436 "tabs.item.edit": "Éditer",
437 "tabs.item.enableAudio": "Activer l'audio", 438 "tabs.item.enableAudio": "Activer l'audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Activer les notifications", 440 "tabs.item.enableNotification": "Activer les notifications",
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index da1f17bca..a78c90771 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Freastalaí saincheaptha", 4 "changeserver.customServerLabel": "Freastalaí saincheaptha",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Cuir isteach",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Athlódáil seirbhís", 9 "connectionLostBanner.cta": "Athlódáil seirbhís",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cealaigh",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Ní féidir nascadh le seirbhísí Ferdi ar líne", 27 "global.api.unhealthy": "Ní féidir nascadh le seirbhísí Ferdi ar líne",
28 "global.cancel": "Cealaigh",
29 "global.edit": "Cuir in eagar",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Níl tú nasctha leis an Idirlíon.", 31 "global.notConnectedToTheInternet": "Níl tú nasctha leis an Idirlíon.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Socruithe",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Cuir isteach",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Iompórtáil do sheirbhísí Ferdi 4", 45 "import.headline": "Iompórtáil do sheirbhísí Ferdi 4",
38 "import.notSupportedHeadline": "Níl na seirbhísí seo taca ag Ferdi 5 go fóill", 46 "import.notSupportedHeadline": "Níl na seirbhísí seo taca ag Ferdi 5 go fóill",
39 "import.skip.label": "Ba mhaith liom seirbhísí a chur de láimh", 47 "import.skip.label": "Ba mhaith liom seirbhísí a chur de láimh",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Faoi Ferdi", 86 "menu.app.about": "Faoi Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Cuardaigh le nuashonruithe", 88 "menu.app.checkForUpdates": "Cuardaigh le nuashonruithe",
82 "menu.app.hide": "Cuir Ferdi i bhfolach", 89 "menu.app.hide": "Cuir Ferdi i bhfolach",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Socruithe",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Cuir in eagar", 92 "menu.edit": "Cuir in eagar",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Logáil isteach i do chuntas", 152 "password.link.login": "Logáil isteach i do chuntas",
148 "password.link.signup": "Cruthaigh cuntas saor in aisce", 153 "password.link.signup": "Cruthaigh cuntas saor in aisce",
149 "password.noUser": "Níor aimsíodh úsáideoir leis an seoladh ríomhphoist seo", 154 "password.noUser": "Níor aimsíodh úsáideoir leis an seoladh ríomhphoist seo",
150 "password.submit.label": "Cuir isteach",
151 "password.successInfo": "Seiceáil do chuid ríomhphoist le do thoil", 155 "password.successInfo": "Seiceáil do chuid ríomhphoist le do thoil",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Cuir leagain béite san áireamh", 218 "settings.app.form.beta": "Cuir leagain béite san áireamh",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Cumasaigh luasghéarú APG", 224 "settings.app.form.enableGPUAcceleration": "Cumasaigh luasghéarú APG",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Socruithe",
255 "settings.app.headlineAdvanced": "Casta", 259 "settings.app.headlineAdvanced": "Casta",
256 "settings.app.headlineAppearance": "Dealramh", 260 "settings.app.headlineAppearance": "Dealramh",
257 "settings.app.headlineGeneral": "Ginearálta", 261 "settings.app.headlineGeneral": "Ginearálta",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Cuntas", 285 "settings.navigation.account": "Cuntas",
282 "settings.navigation.availableServices": "Seirbhísí le fáil", 286 "settings.navigation.availableServices": "Seirbhísí le fáil",
283 "settings.navigation.logout": "Logáil amach", 287 "settings.navigation.logout": "Logáil amach",
284 "settings.navigation.settings": "Socruithe",
285 "settings.navigation.supportFerdi": "Faoi Ferdi", 288 "settings.navigation.supportFerdi": "Faoi Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Do sheirbhísí", 290 "settings.navigation.yourServices": "Do sheirbhísí",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Díchumasaigh fógraí ⁊ fuaim", 417 "sidebar.muteApp": "Díchumasaigh fógraí ⁊ fuaim",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Socruithe",
418 "sidebar.unmuteApp": "Cumasaigh fógraí ⁊ fuaim", 420 "sidebar.unmuteApp": "Cumasaigh fógraí ⁊ fuaim",
419 "signup.email.label": "Seoladh ríomhphoist", 421 "signup.email.label": "Seoladh ríomhphoist",
420 "signup.emailDuplicate": "Tá úsáideoir leis an seoladh ríomhphoist sin cheana féin", 422 "signup.emailDuplicate": "Tá úsáideoir leis an seoladh ríomhphoist sin cheana féin",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Díchumasaigh fógraí", 436 "tabs.item.disableNotifications": "Díchumasaigh fógraí",
435 "tabs.item.disableService": "Díchumasaigh seirbhís", 437 "tabs.item.disableService": "Díchumasaigh seirbhís",
436 "tabs.item.edit": "Cuir in eagar",
437 "tabs.item.enableAudio": "Cumasaigh fuaim", 438 "tabs.item.enableAudio": "Cumasaigh fuaim",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Cumasaigh fógraí", 440 "tabs.item.enableNotification": "Cumasaigh fógraí",
diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json
index 427e60640..79e1532b5 100644
--- a/src/i18n/locales/he.json
+++ b/src/i18n/locales/he.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "שרת מותאם אישית", 4 "changeserver.customServerLabel": "שרת מותאם אישית",
5 "changeserver.headline": "החלף שרת", 5 "changeserver.headline": "החלף שרת",
6 "changeserver.label": "שרת", 6 "changeserver.label": "שרת",
7 "changeserver.submit": "שלח",
8 "changeserver.urlError": "אנא הזן כתובת URL תקינה", 7 "changeserver.urlError": "אנא הזן כתובת URL תקינה",
9 "changeserver.warning": "הגדרות נוספות המוצעות על ידי פרדי לא ישמרו", 8 "changeserver.warning": "הגדרות נוספות המוצעות על ידי פרדי לא ישמרו",
10 "connectionLostBanner.cta": "טען מחדש את השירות", 9 "connectionLostBanner.cta": "טען מחדש את השירות",
11 "connectionLostBanner.informationLink": "מה קרה?", 10 "connectionLostBanner.informationLink": "מה קרה?",
12 "connectionLostBanner.message": "הו לא! פרדי איבד את החיבור ל {name}.", 11 "connectionLostBanner.message": "הו לא! פרדי איבד את החיבור ל {name}.",
13 "feature.announcements.changelog.headline": "שינויים בגרסת פרדי מספר {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "פרסם את פרטי ניפוי השגיאות", 13 "feature.debugger.title": "פרסם את פרטי ניפוי השגיאות",
15 "feature.nightlyBuilds.activate": "הפעל", 14 "feature.nightlyBuilds.activate": "הפעל",
16 "feature.nightlyBuilds.cancel": "בטל",
17 "feature.nightlyBuilds.info": "גרסאות נייטלי הם גרסאות נסיוניות ביותר של פרדי, העשויות להכיל פיצ'רים בלתי גמורים. גרסאות אלה מיועדות בעיקר לשימוש מפתחים על מנת לנסות את הפיצ'רים החדשים הנמצאים בפיתוח - לפני הכנסתם לגרסה הסופית. אם אתה לא יודע מה אתה עושה, אנו ממליצים שלא תפעיל את האופציה הזאת.", 15 "feature.nightlyBuilds.info": "גרסאות נייטלי הם גרסאות נסיוניות ביותר של פרדי, העשויות להכיל פיצ'רים בלתי גמורים. גרסאות אלה מיועדות בעיקר לשימוש מפתחים על מנת לנסות את הפיצ'רים החדשים הנמצאים בפיתוח - לפני הכנסתם לגרסה הסופית. אם אתה לא יודע מה אתה עושה, אנו ממליצים שלא תפעיל את האופציה הזאת.",
18 "feature.nightlyBuilds.title": "גרסאות נייטלי", 16 "feature.nightlyBuilds.title": "גרסאות נייטלי",
19 "feature.publishDebugInfo.error": "קיימת שגיאה בפרסום מידע ניפוי השגיאות, אנא נסה שנית מאוחר יותר או הסתכל בקובץ הלוג למידע נוסף.", 17 "feature.publishDebugInfo.error": "קיימת שגיאה בפרסום מידע ניפוי השגיאות, אנא נסה שנית מאוחר יותר או הסתכל בקובץ הלוג למידע נוסף.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "חיפוש...", 25 "feature.quickSwitch.search": "חיפוש...",
28 "feature.quickSwitch.title": "החלפה מהירה", 26 "feature.quickSwitch.title": "החלפה מהירה",
29 "global.api.unhealthy": "לא ניתן להתחבר לשרותי האינטרנת של Ferdi", 27 "global.api.unhealthy": "לא ניתן להתחבר לשרותי האינטרנת של Ferdi",
28 "global.cancel": "בטל",
29 "global.edit": "ערוך",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "נראה שאתה לא מחובר לאינטרנט.", 31 "global.notConnectedToTheInternet": "נראה שאתה לא מחובר לאינטרנט.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "הגדרות",
31 "global.spellchecker.useDefault": "השתמש בברירת המחדל של המערכת ({default})", 37 "global.spellchecker.useDefault": "השתמש בברירת המחדל של המערכת ({default})",
32 "global.spellchecking.autodetect": "זהה שפה באופן אוטומטי", 38 "global.spellchecking.autodetect": "זהה שפה באופן אוטומטי",
33 "global.spellchecking.autodetect.short": "אוטומטי", 39 "global.spellchecking.autodetect.short": "אוטומטי",
34 "global.spellchecking.language": "שפה לבדיקת איות", 40 "global.spellchecking.language": "שפה לבדיקת איות",
41 "global.submit": "שלח",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "סוכן משתמש", 43 "global.userAgentPref": "סוכן משתמש",
44 "global.yes": "Yes",
37 "import.headline": "ייבא את השירותים שלך מפרדי גרסה 4", 45 "import.headline": "ייבא את השירותים שלך מפרדי גרסה 4",
38 "import.notSupportedHeadline": "השירות עדיין אינו נתמך בפרדי גרסה 5", 46 "import.notSupportedHeadline": "השירות עדיין אינו נתמך בפרדי גרסה 5",
39 "import.skip.label": "אני רוצה להוסיף שירותים באופן ידני", 47 "import.skip.label": "אני רוצה להוסיף שירותים באופן ידני",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "סגור את רשימת המשימות", 84 "menu.Todoss.closeTodosDrawer": "סגור את רשימת המשימות",
77 "menu.Todoss.openTodosDrawer": "פתח את רשימת המשימות", 85 "menu.Todoss.openTodosDrawer": "פתח את רשימת המשימות",
78 "menu.app.about": "אודות פרדי", 86 "menu.app.about": "אודות פרדי",
79 "menu.app.announcement": "מה חדש?",
80 "menu.app.autohideMenuBar": "הסתרת שורת התפריטים באופן אוטומטי", 87 "menu.app.autohideMenuBar": "הסתרת שורת התפריטים באופן אוטומטי",
81 "menu.app.checkForUpdates": "חפש עדכונים", 88 "menu.app.checkForUpdates": "חפש עדכונים",
82 "menu.app.hide": "הסתר", 89 "menu.app.hide": "הסתר",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "הגדרות",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "ערוך", 92 "menu.edit": "ערוך",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "היכנס לחשבונך", 152 "password.link.login": "היכנס לחשבונך",
148 "password.link.signup": "צור חשבון חדש בחינם", 153 "password.link.signup": "צור חשבון חדש בחינם",
149 "password.noUser": "לא נמצא משתמש עם כתובת הדוא\"ל הזאת", 154 "password.noUser": "לא נמצא משתמש עם כתובת הדוא\"ל הזאת",
150 "password.submit.label": "שלח",
151 "password.successInfo": "אנא בדוק את הדוא\"ל שלך", 155 "password.successInfo": "אנא בדוק את הדוא\"ל שלך",
152 "pricing.features.accountSync": "סנכון החשבון", 156 "pricing.features.accountSync": "סנכון החשבון",
153 "pricing.features.customWebsites": "הוסף אתרים מותאמים אישית", 157 "pricing.features.customWebsites": "הוסף אתרים מותאמים אישית",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "כלול גרסאות בטא", 218 "settings.app.form.beta": "כלול גרסאות בטא",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "שרת מותאם אישית לרשימת המשימות", 222 "settings.app.form.customTodoServer": "שרת מותאם אישית לרשימת המשימות",
218 "settings.app.form.darkMode": "אפשר מצב לילה", 223 "settings.app.form.darkMode": "אפשר מצב לילה",
219 "settings.app.form.enableGPUAcceleration": "אפשר האצת חומרה (GPU)", 224 "settings.app.form.enableGPUAcceleration": "אפשר האצת חומרה (GPU)",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "הגדרות",
255 "settings.app.headlineAdvanced": "מתקדם", 259 "settings.app.headlineAdvanced": "מתקדם",
256 "settings.app.headlineAppearance": "תצוגה", 260 "settings.app.headlineAppearance": "תצוגה",
257 "settings.app.headlineGeneral": "כללי", 261 "settings.app.headlineGeneral": "כללי",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "חשבון", 285 "settings.navigation.account": "חשבון",
282 "settings.navigation.availableServices": "שירותים זמינים", 286 "settings.navigation.availableServices": "שירותים זמינים",
283 "settings.navigation.logout": "התנתק", 287 "settings.navigation.logout": "התנתק",
284 "settings.navigation.settings": "הגדרות",
285 "settings.navigation.supportFerdi": "אודות פרדי", 288 "settings.navigation.supportFerdi": "אודות פרדי",
286 "settings.navigation.team": "נהל צוות", 289 "settings.navigation.team": "נהל צוות",
287 "settings.navigation.yourServices": "השירותים שלך", 290 "settings.navigation.yourServices": "השירותים שלך",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "כבה התראות ואודיו", 417 "sidebar.muteApp": "כבה התראות ואודיו",
415 "sidebar.openTodosDrawer": "פתח את המשימות של פרדי", 418 "sidebar.openTodosDrawer": "פתח את המשימות של פרדי",
416 "sidebar.openWorkspaceDrawer": "פתח את סרגל סביבות העבודה", 419 "sidebar.openWorkspaceDrawer": "פתח את סרגל סביבות העבודה",
417 "sidebar.settings": "הגדרות",
418 "sidebar.unmuteApp": "אפשר התראות ואודיו", 420 "sidebar.unmuteApp": "אפשר התראות ואודיו",
419 "signup.email.label": "כתובת דוא\"ל", 421 "signup.email.label": "כתובת דוא\"ל",
420 "signup.emailDuplicate": "כבר קיים חשבון עם כתובת דוא\"ל זו", 422 "signup.emailDuplicate": "כבר קיים חשבון עם כתובת דוא\"ל זו",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "כבה התראות", 436 "tabs.item.disableNotifications": "כבה התראות",
435 "tabs.item.disableService": "כבה שירות", 437 "tabs.item.disableService": "כבה שירות",
436 "tabs.item.edit": "ערוך",
437 "tabs.item.enableAudio": "אפשר אודיו", 438 "tabs.item.enableAudio": "אפשר אודיו",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "אפשר התראות", 440 "tabs.item.enableNotification": "אפשר התראות",
diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json
index a4e4e4e85..be9bbb961 100644
--- a/src/i18n/locales/hi.json
+++ b/src/i18n/locales/hi.json
@@ -1,120 +1,159 @@
1{ 1{
2 "app.errorHandler.action": "पुन: लोड करें", 2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "कुछ तो गड़बड़ है, दया", 3 "app.errorHandler.headline": "Something went wrong",
4 "connectionLostBanner.cta": "सेवा पुनः लोड करें", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server",
7 "changeserver.urlError": "Enter a valid URL",
8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
9 "connectionLostBanner.cta": "Reload Service",
5 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
6 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
7 "feature.announcements.changelog.headline": "फ्रांज़ के संस्करण {version} में बदलाव:", 12 "feature.basicAuth.signIn": "Sign In",
8 "feature.shareFranz.action.email": "ईमेल के रूप में भेजें", 13 "feature.debugger.title": "Publish debugging information",
9 "feature.shareFranz.action.facebook": "फेसबुक पर सांझा करें", 14 "feature.nightlyBuilds.activate": "Activate",
10 "feature.shareFranz.action.twitter": "ट्विटर पर सांझा करें", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
11 "feature.shareFranz.headline": "फ्रांज़ एक साथ बेहतर है!", 16 "feature.nightlyBuilds.title": "Nightly Builds",
12 "feature.shareFranz.shareText.email": "मैंने फ्रांज में {count} सेवाएं जोड़ी हैं! व्हाट्सएप, मैसेंजर, स्लैक, स्काइप के लिए मुफ्त ऐप www.getferdi.com पर प्राप्त करें", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
13 "feature.shareFranz.shareText.twitter": "मैंने फ्रांज में {count} सेवाएं जोड़ी हैं! व्हाट्सएप, मैसेंजर, स्लैक, स्काइप के लिए मुफ्त ऐप www.getferdi.com पर प्राप्त करें / cc @FerdiMessenger", 18 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service",
14 "feature.shareFranz.text": "अपने दोस्तों और सहकर्मियों को बताएं की फ्रांज़ कितना बढ़िया है और हमें इस बात को फैलाने में मदद करें।", 19 "feature.publishDebugInfo.privacy": "Privacy policy",
15 "global.api.unhealthy": "फ्रांज़ ऑनलाइन सेवाओं से कनेक्ट नहीं किया जा सका", 20 "feature.publishDebugInfo.publish": "Accept and publish",
16 "global.franzProRequired": "Ferdi Professional Required", 21 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at",
17 "global.notConnectedToTheInternet": "आप इंटरनेट से नहीं जुड़े हैं।", 22 "feature.publishDebugInfo.terms": "Terms of service",
18 "global.spellchecker.useDefault": "सिस्टम डिफ़ॉल्ट ({default}) का उपयोग करें", 23 "feature.publishDebugInfo.title": "Publish debug information",
19 "global.spellchecking.autodetect": "स्वचालित रूप से भाषा का पता लगाएं", 24 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
20 "global.spellchecking.autodetect.short": "स्वचालित", 25 "feature.quickSwitch.search": "Search...",
21 "global.spellchecking.language": "वर्तनी जाँच भाषा", 26 "feature.quickSwitch.title": "QuickSwitch",
22 "import.headline": "अपनी फ्रांज़ 4 की सेवाओं का आयात करें", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
23 "import.notSupportedHeadline": "सेवाएं अभी तक फ्रांज़ 5 में समर्थित नहीं हैं", 28 "global.cancel": "Cancel",
24 "import.skip.label": "मैं स्वयं सेवाएं जोड़ना चाहता हूं", 29 "global.edit": "Edit",
25 "import.submit.label": "सेवाएं आयात करें", 30 "global.no": "No",
26 "infobar.buttonChangelog": "क्या-क्या नया है?", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
27 "infobar.buttonInstallUpdate": "पुनरारंभ करें, और अद्यतन स्थापित करें", 32 "global.ok": "Ok",
28 "infobar.buttonReloadServices": "सेवाओं को फिर से लोड करें", 33 "global.quit": "Quit",
29 "infobar.requiredRequestsFailed": "सेवाएं और उपयोगकर्ताओं की जानकारी लोड नहीं हो सकी", 34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
30 "infobar.servicesUpdated": "आपकी सेवाएं अपडेट कर दी गई हैं।", 35 "global.save": "Save",
31 "infobar.updateAvailable": "फ्रांज़ के लिए एक नया अपडेट उपलब्ध है।", 36 "global.settings": "Settings",
32 "invite.email.label": "ईमेल पता", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
33 "invite.headline.friends": "अपने दोस्तों या सहयोगियों में से 3 को आमंत्रित करें", 38 "global.spellchecking.autodetect": "Detect language automatically",
34 "invite.name.label": "नाम", 39 "global.spellchecking.autodetect.short": "Automatic",
35 "invite.skip.label": "मैं इसे बाद में करना चाहता हूं", 40 "global.spellchecking.language": "Spell checking language",
36 "invite.submit.label": "आमंत्रण भेजें", 41 "global.submit": "Submit",
37 "invite.successInfo": "निमंत्रण सफलतापूर्वक भेजे गए", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
38 "login.email.label": "ईमेल पता", 43 "global.userAgentPref": "User Agent",
39 "login.headline": "लॉग इन करें", 44 "global.yes": "Yes",
40 "login.invalidCredentials": "ईमेल या पासवर्ड मान्य नहीं है", 45 "import.headline": "Import your Ferdi 4 services",
41 "login.link.password": "पासवर्ड रीसेट", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
42 "login.link.signup": "एक नि: शुल्क खाता बनाए", 47 "import.skip.label": "I want to add services manually",
43 "login.password.label": "पासवर्ड", 48 "import.submit.label": "Import services",
44 "login.serverLogout": "आपका सत्र समाप्त हो गया है, कृपया फिर से लॉगिन करें।", 49 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
45 "login.submit.label": "लॉग इन करें", 50 "infobar.buttonChangelog": "What is new?",
46 "login.tokenExpired": "आपका सत्र समाप्त हो गया है, कृपया फिर से लॉगिन करें।", 51 "infobar.buttonInstallUpdate": "Restart & install update",
52 "infobar.buttonReloadServices": "Reload services",
53 "infobar.hide": "Hide",
54 "infobar.requiredRequestsFailed": "Could not load services and user information",
55 "infobar.servicesUpdated": "Your services have been updated.",
56 "infobar.updateAvailable": "A new update for Ferdi is available.",
57 "infobox.dismiss": "Dismiss",
58 "invite.email.label": "Email address",
59 "invite.headline.friends": "Invite 3 of your friends or colleagues",
60 "invite.name.label": "Name",
61 "invite.skip.label": "I want to do this later",
62 "invite.submit.label": "Send invites",
63 "invite.successInfo": "Invitations sent successfully",
64 "locked.headline": "Locked",
65 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
66 "locked.invalidCredentials": "Password invalid",
67 "locked.password.label": "Password",
68 "locked.submit.label": "Unlock",
69 "locked.touchId": "Unlock with Touch ID",
70 "locked.touchIdPrompt": "unlock via Touch ID",
71 "locked.unlockWithPassword": "Unlock with Password",
72 "login.changeServer": "Change server",
73 "login.customServerQuestion": "Using a Franz account to log in?",
74 "login.customServerSuggestion": "Try importing your Franz account into Ferdi",
75 "login.email.label": "Email address",
76 "login.headline": "Sign in",
77 "login.invalidCredentials": "Email or password not valid",
78 "login.link.password": "Reset password",
79 "login.link.signup": "Create a free account",
80 "login.password.label": "Password",
81 "login.serverLogout": "Your session expired, please login again.",
82 "login.submit.label": "Sign in",
83 "login.tokenExpired": "Your session expired, please login again.",
47 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
48 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
49 "menu.app.about": "फ्रांज के बारे में", 86 "menu.app.about": "About Ferdi",
50 "menu.app.announcement": "नया क्या है?", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
51 "menu.app.checkForUpdates": "अद्यतन के लिए जाँचें...", 88 "menu.app.checkForUpdates": "Check for updates",
52 "menu.app.hide": "छिपाएं ", 89 "menu.app.hide": "Hide",
53 "menu.app.hideOthers": "दूसरों को छिपाओ", 90 "menu.app.hideOthers": "Hide Others",
54 "menu.app.quit": "छोड़ो", 91 "menu.app.unhide": "Unhide",
55 "menu.app.settings": "सेटिंग्स", 92 "menu.edit": "Edit",
56 "menu.app.unhide": "सामने लाएँ", 93 "menu.edit.copy": "Copy",
57 "menu.edit": "संपादित करें", 94 "menu.edit.cut": "Cut",
58 "menu.edit.copy": "प्रतिलिपि", 95 "menu.edit.delete": "Delete",
59 "menu.edit.cut": "काटो", 96 "menu.edit.emojiSymbols": "Emoji & Symbols",
60 "menu.edit.delete": "मिटाओ", 97 "menu.edit.findInPage": "Find in Page",
61 "menu.edit.emojiSymbols": "इमोजी और प्रतीक", 98 "menu.edit.paste": "Paste",
62 "menu.edit.paste": "चिपकाएं", 99 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
63 "menu.edit.pasteAndMatchStyle": "पेस्ट और मैच स्टाइल", 100 "menu.edit.redo": "Redo",
64 "menu.edit.redo": "फिर से करना", 101 "menu.edit.selectAll": "Select All",
65 "menu.edit.selectAll": "सभी का चयन करे", 102 "menu.edit.speech": "Speech",
66 "menu.edit.speech": "भाषण", 103 "menu.edit.startDictation": "Start Dictation",
67 "menu.edit.startDictation": "श्रुतलेख शुरू करें", 104 "menu.edit.startSpeaking": "Start Speaking",
68 "menu.edit.startSpeaking": "बोलना शुरू करें", 105 "menu.edit.stopSpeaking": "Stop Speaking",
69 "menu.edit.stopSpeaking": "बोलना बंद करें", 106 "menu.edit.undo": "Undo",
70 "menu.edit.undo": "पूर्ववत् करें", 107 "menu.file": "File",
71 "menu.file": "फ़ाइल", 108 "menu.help": "Help",
72 "menu.help": "मदद", 109 "menu.help.changelog": "Changelog",
73 "menu.help.changelog": "चेंजलॉग",
74 "menu.help.debugInfo": "Copy Debug Information", 110 "menu.help.debugInfo": "Copy Debug Information",
75 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 111 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
76 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 112 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
77 "menu.help.learnMore": "अधिक जानें", 113 "menu.help.importExportData": "Import/Export Configuration Data",
78 "menu.help.privacy": "प्राइवेसी स्टेटमेंट", 114 "menu.help.learnMore": "Learn More",
79 "menu.help.support": "सहयोग", 115 "menu.help.privacy": "Privacy Statement",
80 "menu.help.tos": "सेवा की शर्तें", 116 "menu.help.publishDebugInfo": "Publish Debug Information",
81 "menu.services": "सेवाएं", 117 "menu.help.support": "Support",
82 "menu.services.activatePreviousService": "पिछली सेवा को सक्रिय करें", 118 "menu.help.tos": "Terms of Service",
119 "menu.services": "Services",
120 "menu.services.activatePreviousService": "Activate previous service",
83 "menu.services.addNewService": "Add New Service", 121 "menu.services.addNewService": "Add New Service",
84 "menu.services.goHome": "Home", 122 "menu.services.goHome": "Home",
85 "menu.services.setNextServiceActive": "अगली सेवा सक्रिय करें", 123 "menu.services.setNextServiceActive": "Activate next service",
86 "menu.todos": "Todos", 124 "menu.todos": "Todos",
87 "menu.todos.enableTodos": "Enable Todos", 125 "menu.todos.enableTodos": "Enable Todos",
88 "menu.view": "दृश्य", 126 "menu.view": "View",
89 "menu.view.reloadFerdi": "फ्रांज़ को पुनः लोड", 127 "menu.view.back": "Back",
90 "menu.view.reloadService": "सेवा पुनः लोड करें", 128 "menu.view.forward": "Forward",
129 "menu.view.lockFerdi": "Lock Ferdi",
130 "menu.view.openQuickSwitch": "Open Quick Switch",
131 "menu.view.reloadFerdi": "Reload Ferdi",
132 "menu.view.reloadService": "Reload Service",
91 "menu.view.reloadTodos": "Reload ToDos", 133 "menu.view.reloadTodos": "Reload ToDos",
92 "menu.view.resetZoom": "वास्तविक आकार", 134 "menu.view.resetZoom": "Actual Size",
93 "menu.view.toggleDevTools": "डेवलपर टूल टॉगल करें", 135 "menu.view.toggleDarkMode": "Toggle Dark Mode",
94 "menu.view.toggleFullScreen": "फुलस्क्रीन टॉगल करें", 136 "menu.view.toggleDevTools": "Toggle Developer Tools",
95 "menu.view.toggleServiceDevTools": "सेवा डेवलपर उपकरण टॉगल करें", 137 "menu.view.toggleFullScreen": "Toggle Full Screen",
138 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
96 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 139 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools",
97 "menu.view.zoomIn": "बड़ा करें", 140 "menu.view.zoomIn": "Zoom In",
98 "menu.view.zoomOut": "छोटा करें", 141 "menu.view.zoomOut": "Zoom Out",
99 "menu.window": "खिड़की", 142 "menu.window": "Window",
100 "menu.window.close": "बंद करें", 143 "menu.window.close": "Close",
101 "menu.window.minimize": "न्यूनतम करें", 144 "menu.window.minimize": "Minimize",
102 "menu.workspaces": "कार्यस्थान", 145 "menu.workspaces": "Workspaces",
103 "menu.workspaces.addNewWorkspace": "नया कार्यक्षेत्र जोड़ें ...", 146 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
104 "menu.workspaces.closeWorkspaceDrawer": "कार्यक्षेत्र दराज को बंद करें", 147 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
105 "menu.workspaces.defaultWorkspace": "सभी सेवाएं", 148 "menu.workspaces.defaultWorkspace": "All services",
106 "menu.workspaces.openWorkspaceDrawer": "कार्यक्षेत्र दराज खोलें", 149 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
107 "password.email.label": "ईमेल पता", 150 "password.email.label": "Email address",
108 "password.headline": "पासवर्ड रीसेट", 151 "password.headline": "Reset password",
109 "password.link.login": "अपने अकाउंट में लॉग इन करें", 152 "password.link.login": "Sign in to your account",
110 "password.link.signup": "एक नि: शुल्क खाता बनाए", 153 "password.link.signup": "Create a free account",
111 "password.noUser": "उस ईमेल पते वाला कोई उपयोगकर्ता नहीं मिला", 154 "password.noUser": "No user with that email address was found",
112 "password.submit.label": "जमा करें", 155 "password.successInfo": "Please check your email",
113 "password.successInfo": "कृपया अपनी ईमेल देखें",
114 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free",
116 "pricing.features.appDelays": "No Waiting Screens",
117 "pricing.features.appDelaysEnabled": "Occasional Waiting Screens",
118 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
119 "pricing.features.desktopNotifications": "Desktop Notifications", 158 "pricing.features.desktopNotifications": "Desktop Notifications",
120 "pricing.features.onPremise": "On-premise & other Hosted Services", 159 "pricing.features.onPremise": "On-premise & other Hosted Services",
@@ -124,83 +163,133 @@
124 "pricing.features.teamManagement": "Team Management", 163 "pricing.features.teamManagement": "Team Management",
125 "pricing.features.thirdPartyServices": "Install 3rd party services", 164 "pricing.features.thirdPartyServices": "Install 3rd party services",
126 "pricing.features.unlimitedServices": "Add unlimited services", 165 "pricing.features.unlimitedServices": "Add unlimited services",
127 "pricing.features.upToSixServices": "Add up to 6 services", 166 "pricing.features.workspaces": "Workspaces",
128 "pricing.features.upToThreeServices": "Add up to 3 services", 167 "service.crashHandler.action": "Reload {name}",
129 "pricing.features.workspaces": "कार्यस्थान", 168 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
130 "service.crashHandler.action": "{name} को पुनः लोड करें ", 169 "service.crashHandler.headline": "Oh no!",
131 "service.crashHandler.autoReload": "{name} को {seconds} सेकंड में स्वचालित रूप से पुनर्स्थापित करने की कोशिश जारी है", 170 "service.crashHandler.text": "{name} has caused an error.",
132 "service.crashHandler.headline": "अरे नहीं!", 171 "service.disabledHandler.action": "Enable {name}",
133 "service.crashHandler.text": "{name} में त्रुटि हुई है।", 172 "service.disabledHandler.headline": "{name} is disabled",
134 "service.disabledHandler.action": "{name} सक्षम करें", 173 "service.errorHandler.action": "Reload {name}",
135 "service.disabledHandler.headline": "{name} अक्षम है", 174 "service.errorHandler.editAction": "Edit {name}",
136 "service.errorHandler.action": "{name} को पुनः लोड करें", 175 "service.errorHandler.headline": "Oh no!",
137 "service.errorHandler.editAction": "{name} को संपादित करें", 176 "service.errorHandler.message": "Error",
138 "service.errorHandler.headline": "अरे नहीं!", 177 "service.errorHandler.text": "{name} has failed to load.",
139 "service.errorHandler.message": "त्रुटि", 178 "service.webviewLoader.loading": "Loading {service}",
140 "service.errorHandler.text": "{name} लोड करने में विफलता हुई ", 179 "services.getStarted": "Get started",
141 "service.webviewLoader.loading": "लोड हो रहा है", 180 "services.login": "Please login to use Ferdi.",
142 "services.getStarted": "आरंभ करें", 181 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
143 "services.welcome": "फ्रांज़ में आपका स्वागत है", 182 "services.serverless": "Use Ferdi without an Account",
144 "settings.account.account.editButton": "खाता संपादित करें", 183 "services.welcome": "Welcome to Ferdi",
145 "settings.account.accountType.basic": "मूल खाता", 184 "settings.account.account.editButton": "Edit account",
146 "settings.account.accountType.premium": "प्रीमियम समर्थक खाता", 185 "settings.account.accountUnavailable": "Account is unavailable",
147 "settings.account.buttonSave": "प्रोफ़ाइल अपडेट करें", 186 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
148 "settings.account.deleteAccount": "खाता मिटाएं", 187 "settings.account.buttonSave": "Update profile",
149 "settings.account.deleteEmailSent": "आपको अपने खाते को हटाने की पुष्टि करने के लिए एक लिंक प्राप्त हुआ है। आपके खाते और डेटा को पुनर्स्थापित नहीं किया जा सकता है!", 188 "settings.account.deleteAccount": "Delete account",
150 "settings.account.deleteInfo": "यदि आपको अपने फ्रांज़ खाते की आवश्यकता नहीं है, तो आप यहां अपना खाता और संबंधित डेटा हटा सकते हैं।", 189 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
151 "settings.account.headline": "खाता", 190 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
152 "settings.account.headlineAccount": "खाते की जानकारी", 191 "settings.account.headline": "Account",
153 "settings.account.headlineDangerZone": "खतरे का क्षेत्र", 192 "settings.account.headlineAccount": "Account information",
154 "settings.account.headlineInvoices": "चालान", 193 "settings.account.headlineDangerZone": "Danger Zone",
155 "settings.account.headlinePassword": "पासवर्ड बदलें", 194 "settings.account.headlineInvoices": "Invoices",
156 "settings.account.headlineProfile": "प्रोफ़ाइल अपडेट करें", 195 "settings.account.headlinePassword": "Change password",
157 "settings.account.successInfo": "आपके परिवर्तनों को सहेजा गया है", 196 "settings.account.headlineProfile": "Update profile",
158 "settings.account.tryReloadServices": "फिर कोशिश करें", 197 "settings.account.successInfo": "Your changes have been saved",
159 "settings.account.tryReloadUserInfoRequest": "फिर कोशिश करें", 198 "settings.account.tryReloadServices": "Try again",
160 "settings.account.userInfoRequestFailed": "उपयोगकर्ता की जानकारी लोड नहीं हो सकी", 199 "settings.account.tryReloadUserInfoRequest": "Try again",
200 "settings.account.userInfoRequestFailed": "Could not load user information",
161 "settings.account.yourLicense": "Your Ferdi License", 201 "settings.account.yourLicense": "Your Ferdi License",
162 "settings.app.buttonClearAllCache": "कैश को साफ़ करें", 202 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
163 "settings.app.buttonInstallUpdate": "पुनरारंभ करें, और अद्यतन स्थापित करें", 203 "settings.app.buttonClearAllCache": "Clear cache",
164 "settings.app.buttonSearchForUpdate": "अद्यतन के लिए खोजें", 204 "settings.app.buttonInstallUpdate": "Restart & install update",
165 "settings.app.cacheInfo": "फ्रांज़ कैश वर्तमान में आपके डिस्क का {size} उपयोग कर रहा है।", 205 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder",
166 "settings.app.currentVersion": "वर्तमान संस्करण:", 206 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
167 "settings.app.form.autoLaunchInBackground": "पृष्ठभूमि में खोलें", 207 "settings.app.buttonSearchForUpdate": "Check for updates",
168 "settings.app.form.autoLaunchOnStart": "कंप्यूटर शुरू होते ही क्या फ्रांज़ भी लॉन्च होना चाहिए?", 208 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
169 "settings.app.form.beta": "बीटा संस्करण शामिल करें", 209 "settings.app.cacheNotCleared": "Couldn't clear all cache",
170 "settings.app.form.darkMode": "डार्क मोड सक्षम करें", 210 "settings.app.closeSettings": "Close settings",
171 "settings.app.form.enableGPUAcceleration": "GPU त्वरण सक्षम करें", 211 "settings.app.currentVersion": "Current version:",
172 "settings.app.form.enableSpellchecking": "शब्द विन्यास सक्रिय करो", 212 "settings.app.form.accentColor": "Accent color",
173 "settings.app.form.enableSystemTray": "फ्रांज़ को सिस्टम ट्रे में दिखाएं", 213 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting",
214 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer",
215 "settings.app.form.autoLaunchInBackground": "Open in background",
216 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start",
217 "settings.app.form.automaticUpdates": "Enable updates",
218 "settings.app.form.beta": "Include beta versions",
219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
222 "settings.app.form.customTodoServer": "Custom Todo Server",
223 "settings.app.form.darkMode": "Enable dark mode",
224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
225 "settings.app.form.enableLock": "Enable Password Lock",
226 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar",
227 "settings.app.form.enableSpellchecking": "Enable spell checking",
228 "settings.app.form.enableSystemTray": "Show Ferdi in system tray",
174 "settings.app.form.enableTodos": "Enable Ferdi Todos", 229 "settings.app.form.enableTodos": "Enable Ferdi Todos",
230 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup",
231 "settings.app.form.hibernationStrategy": "Hibernation strategy",
232 "settings.app.form.iconSize": "Service icon size",
233 "settings.app.form.inactivityLock": "Lock after inactivity",
175 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 234 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
176 "settings.app.form.language": "भाषा", 235 "settings.app.form.language": "Language",
177 "settings.app.form.minimizeToSystemTray": "फ्रांज़ को सिस्टम ट्रे में न्यूनतम करें", 236 "settings.app.form.lockPassword": "Password",
178 "settings.app.form.runInBackground": "खिड़की बंद करते समय फ्रांज को पृष्ठभूमि में रखें", 237 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
179 "settings.app.form.showDisabledServices": "अक्षम सेवाओं टैब प्रदर्शित करें", 238 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour",
180 "settings.app.form.showMessagesBadgesWhenMuted": "जब सूचनाएं अक्षम हों तो अपठित संदेश बैज दिखाएं", 239 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
181 "settings.app.headline": "सेटिंग्स", 240 "settings.app.form.passwordToggle": "Password toggle",
182 "settings.app.headlineAdvanced": "विकसित", 241 "settings.app.form.predefinedTodoServer": "Todo Server",
183 "settings.app.headlineAppearance": "रूप", 242 "settings.app.form.privateNotifications": "Don't show message content in notifications",
184 "settings.app.headlineGeneral": "सामान्य", 243 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
185 "settings.app.headlineLanguage": "भाषा", 244 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
186 "settings.app.headlineUpdates": "अद्यतन", 245 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",
187 "settings.app.languageDisclaimer": "आधिकारिक अनुवाद अंग्रेजी और जर्मन में हैं। अन्य सभी भाषाएँ समुदाय आधारित अनुवाद हैं।", 246 "settings.app.form.scheduledDNDEnd": "To",
188 "settings.app.restartRequired": "परिवर्तनों को पुनरारंभ की आवश्यकता है", 247 "settings.app.form.scheduledDNDStart": "From",
189 "settings.app.subheadlineCache": "कैश", 248 "settings.app.form.searchEngine": "Search engine",
190 "settings.app.translationHelp": "आपकी भाषा में फ्रांज़ का अनुवाद करने में हमारी मदद करें।", 249 "settings.app.form.sentry": "Send telemetry data",
191 "settings.app.updateStatusAvailable": "अद्यतन उपलब्ध है, डाउनलोड हो रहा है ...", 250 "settings.app.form.serviceRibbonWidth": "Sidebar width",
192 "settings.app.updateStatusSearching": "अद्यतन की खोज जारी है", 251 "settings.app.form.showDisabledServices": "Display disabled services tabs",
193 "settings.app.updateStatusUpToDate": "आप फ्रांज़ के नवीनतम संस्करण का उपयोग कर रहे हैं", 252 "settings.app.form.showDragArea": "Show draggable area on window",
194 "settings.invite.headline": "मित्रों को आमंत्रित करें", 253 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
195 "settings.navigation.account": "खाता", 254 "settings.app.form.startMinimized": "Start minimized",
196 "settings.navigation.availableServices": "उपलब्ध सेवाएं", 255 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
197 "settings.navigation.inviteFriends": "मित्रों को आमंत्रित करें", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
198 "settings.navigation.logout": "लॉग आउट", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
199 "settings.navigation.settings": "सेटिंग्स", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
200 "settings.navigation.team": "टीम का प्रबंधन करें", 259 "settings.app.headlineAdvanced": "Advanced",
201 "settings.navigation.yourServices": "आपकी सेवाएं", 260 "settings.app.headlineAppearance": "Appearance",
202 "settings.navigation.yourWorkspaces": "आपके कार्यक्षेत्र", 261 "settings.app.headlineGeneral": "General",
203 "settings.recipes.all": "सभी सेवाएं", 262 "settings.app.headlineLanguage": "Language",
263 "settings.app.headlinePrivacy": "Privacy",
264 "settings.app.headlineUpdates": "Updates",
265 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
266 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
267 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
268 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
269 "settings.app.lockedPassword": "Password",
270 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
271 "settings.app.restartRequired": "Changes require restart",
272 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
273 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
274 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
275 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
276 "settings.app.subheadlineCache": "Cache",
277 "settings.app.subheadlineFerdiProfile": "Ferdi Profile",
278 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.",
279 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
280 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
281 "settings.app.updateStatusAvailable": "Update available, downloading...",
282 "settings.app.updateStatusSearching": "Is searching for update",
283 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi",
284 "settings.invite.headline": "Invite Friends",
285 "settings.navigation.account": "Account",
286 "settings.navigation.availableServices": "Available services",
287 "settings.navigation.logout": "Logout",
288 "settings.navigation.supportFerdi": "About Ferdi",
289 "settings.navigation.team": "Manage Team",
290 "settings.navigation.yourServices": "Your services",
291 "settings.navigation.yourWorkspaces": "Your workspaces",
292 "settings.recipes.all": "All services",
204 "settings.recipes.custom": "Custom Services", 293 "settings.recipes.custom": "Custom Services",
205 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 294 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
206 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 295 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
@@ -208,142 +297,169 @@
208 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 297 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:",
209 "settings.recipes.customService.openDevDocs": "Developer Documentation", 298 "settings.recipes.customService.openDevDocs": "Developer Documentation",
210 "settings.recipes.customService.openFolder": "Open folder", 299 "settings.recipes.customService.openFolder": "Open folder",
211 "settings.recipes.headline": "उपलब्ध सेवाएं", 300 "settings.recipes.headline": "Available services",
212 "settings.recipes.missingService": "क्या कोई सेवा गुम है?", 301 "settings.recipes.missingService": "Missing a service?",
213 "settings.recipes.nothingFound": "क्षमा करें, लेकिन आपके खोज शब्द से किसी भी सेवा का मिलान नहीं हुआ।", 302 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.",
214 "settings.recipes.servicesSuccessfulAddedInfo": "सेवा सफलतापूर्वक जोड़ी गई", 303 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
215 "settings.searchService": "खोज सेवा", 304 "settings.searchService": "Search service",
216 "settings.service.error.goBack": "सेवाओं पर वापस", 305 "settings.service.error.goBack": "Back to services",
217 "settings.service.error.headline": "त्रुटि", 306 "settings.service.error.headline": "Error",
218 "settings.service.error.message": "सेवा की रेसिपी लोड नहीं हो पायी।", 307 "settings.service.error.message": "Could not load service recipe.",
219 "settings.service.form.addServiceHeadline": "{name} जोड़ें", 308 "settings.service.form.addServiceHeadline": "Add {name}",
220 "settings.service.form.availableServices": "उपलब्ध सेवाएं", 309 "settings.service.form.availableServices": "Available services",
221 "settings.service.form.customUrl": "कस्टम सर्वर", 310 "settings.service.form.customUrl": "Custom server",
222 "settings.service.form.customUrlPremiumInfo": "स्वयं की होस्ट की गई सेवाओं को जोड़ने के लिए, आपको फ्रांज प्रीमियम सपोर्टर अकाउंट की आवश्यकता है।", 311 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
223 "settings.service.form.customUrlValidationError": "कस्टम {name} सर्वर का मान्यकरण नहीं किया जा सका।", 312 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
224 "settings.service.form.deleteButton": "सेवा हटाएँ", 313 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
225 "settings.service.form.editServiceHeadline": "{name} संपादित करें", 314 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
226 "settings.service.form.enableAudio": "ऑडियो सक्षम करें", 315 "settings.service.form.deleteButton": "Delete service",
227 "settings.service.form.enableBadge": "अपठित संदेश बैज दिखाएं", 316 "settings.service.form.editServiceHeadline": "Edit {name}",
228 "settings.service.form.enableDarkMode": "डार्क मोड सक्षम करें", 317 "settings.service.form.enableAudio": "Enable audio",
318 "settings.service.form.enableBadge": "Show unread message badges",
319 "settings.service.form.enableDarkMode": "Enable Dark Mode",
229 "settings.service.form.enableHibernation": "Enable hibernation", 320 "settings.service.form.enableHibernation": "Enable hibernation",
230 "settings.service.form.enableNotification": "सूचनाएँ सक्षम करें", 321 "settings.service.form.enableNotification": "Enable notifications",
231 "settings.service.form.enableService": "सेवा सक्षम करें", 322 "settings.service.form.enableService": "Enable service",
232 "settings.service.form.headlineBadges": "अपठित संदेश बैज", 323 "settings.service.form.headlineBadges": "Unread message badges",
233 "settings.service.form.headlineGeneral": "सामान्य", 324 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings",
234 "settings.service.form.headlineNotifications": "सूचनाएँ", 325 "settings.service.form.headlineGeneral": "General",
235 "settings.service.form.icon": "कस्टम आइकॉन", 326 "settings.service.form.headlineNotifications": "Notifications",
236 "settings.service.form.iconDelete": "मिटाएँ", 327 "settings.service.form.icon": "Custom icon",
237 "settings.service.form.iconUpload": "अपना फ़ोटो छोड़ें, या यहाँ क्लिक करें", 328 "settings.service.form.iconDelete": "Delete",
238 "settings.service.form.indirectMessageInfo": "आपको एक चैनल में सभी नए संदेशों के बारे में सूचित किया जाएगा, न केवल @username, @channel, @here, ...", 329 "settings.service.form.iconUpload": "Drop your image, or click here",
239 "settings.service.form.indirectMessages": "सभी नए संदेशों के लिए संदेश बैज दिखाएं", 330 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
331 "settings.service.form.indirectMessages": "Show message badge for all new messages",
240 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 332 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.",
241 "settings.service.form.isMutedInfo": "अक्षम होने पर, सभी सूचना ध्वनियाँ और ऑडियो प्लेबैक मौन रहेंगे ", 333 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
242 "settings.service.form.name": "नाम", 334 "settings.service.form.name": "Name",
243 "settings.service.form.proxy.headline": "HTTP/HTTPS प्रॉक्सी सेटिंग्स", 335 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
244 "settings.service.form.proxy.host": "प्रॉक्सी होस्ट / आईपी", 336 "settings.service.form.openUserCss": "Open user.css",
245 "settings.service.form.proxy.info": "प्रॉक्सी सेटिंग्स फ्रांज़ सर्वर के साथ सिंक नहीं होंगी।", 337 "settings.service.form.openUserJs": "Open user.js",
246 "settings.service.form.proxy.isEnabled": "प्रॉक्सी का प्रयोग करें", 338 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
247 "settings.service.form.proxy.password": "पासवर्ड (वैकल्पिक)", 339 "settings.service.form.proxy.host": "Proxy Host/IP",
248 "settings.service.form.proxy.port": "पोर्ट", 340 "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.",
249 "settings.service.form.proxy.restartInfo": "प्रॉक्सी सेटिंग बदलने के बाद फ्रांज़ को पुनः आरंभ करें।", 341 "settings.service.form.proxy.isEnabled": "Use Proxy",
250 "settings.service.form.proxy.user": "उपयोगकर्ता (वैकल्पिक)", 342 "settings.service.form.proxy.password": "Password (optional)",
251 "settings.service.form.saveButton": "इस सेवा को सहेजें", 343 "settings.service.form.proxy.port": "Port",
252 "settings.service.form.tabHosted": "होस्ट किया गया", 344 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
253 "settings.service.form.tabOnPremise": "स्वयं द्वारा होस्ट किया हुआ", 345 "settings.service.form.proxy.user": "User (optional)",
254 "settings.service.form.team": "टीम", 346 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
255 "settings.service.form.useHostedService": "होस्ट किये हुए {name} सेवा का उपयोग करें।", 347 "settings.service.form.saveButton": "Save service",
256 "settings.service.form.yourServices": "आपकी सेवाएं", 348 "settings.service.form.tabHosted": "Hosted",
257 "settings.services.deletedInfo": "सेवा को हटा दिया गया है", 349 "settings.service.form.tabOnPremise": "Self hosted ⭐️",
258 "settings.services.discoverServices": "सेवाओं की खोज करें", 350 "settings.service.form.team": "Team",
259 "settings.services.headline": "आपकी सेवाएं", 351 "settings.service.form.useHostedService": "Use the hosted {name} service.",
260 "settings.services.noServicesAdded": "आपने अभी तक कोई सेवाएं नहीं जोड़ी है।", 352 "settings.service.form.yourServices": "Your services",
261 "settings.services.servicesRequestFailed": "आपकी सेवाएं लोड नहीं हो सकीं", 353 "settings.services.deletedInfo": "Service has been deleted",
262 "settings.services.tooltip.isDisabled": "सेवा अक्षम है", 354 "settings.services.discoverServices": "Discover services",
263 "settings.services.tooltip.isMuted": "सभी ध्वनियाँ मौन हैं", 355 "settings.services.headline": "Your services",
264 "settings.services.tooltip.notificationsDisabled": "सूचनाएं अक्षम हैं", 356 "settings.services.noServicesAdded": "Start by adding a service.",
265 "settings.services.updatedInfo": "आपके परिवर्तनों को सहेजा गया है", 357 "settings.services.servicesRequestFailed": "Could not load your services",
266 "settings.team.contentHeadline": "टीमों के लिए फ्रांज़", 358 "settings.services.tooltip.isDisabled": "Service is disabled",
267 "settings.team.copy": "Franz for Teams आपको ईमेल आमंत्रण भेजकर और अपने खाते की प्राथमिकताओं में उनकी सदस्यता को प्रबंधित करके अपनी टीम में सह-कार्यकर्ताओं को आमंत्रित करने का विकल्प देता है। हर टीम के सदस्य के लिए अलग-अलग सदस्यताएँ सेट करने में समय बर्बाद न करें, कई चालान और विभिन्न बिलिंग चक्रों के बारे में भूल जाएं - एक टीम सभी के लिए !", 359 "settings.services.tooltip.isMuted": "All sounds are muted",
268 "settings.team.headline": "टीम", 360 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
269 "settings.team.intro": "आप और आपकी टीम फ्रांज़ का उपयोग करते हैं? अब आप सभी सहयोगियों, दोस्तों या परिवार के सदस्यों के लिए प्रीमियम सदस्यता का प्रबंधन कर सकते हैं, जैसा कि आप चाहते हैं, सभी एक खाते के भीतर से।", 361 "settings.services.updatedInfo": "Your changes have been saved",
270 "settings.team.manageAction": "अपनी टीम को meetfranz.com पर प्रबंधित करें", 362 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
271 "settings.team.upgradeAction": "अपने खाते को अपग्रेड करें", 363 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
272 "settings.user.form.accountType.company": "कंपनी", 364 "settings.supportFerdi.headline": "About Ferdi",
273 "settings.user.form.accountType.individual": "व्यक्तिगत खाता", 365 "settings.supportFerdi.openSurvey": "Open survey",
274 "settings.user.form.accountType.label": "खाते का प्रकार", 366 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
275 "settings.user.form.accountType.non-profit": "गैर लाभ", 367 "settings.supportFerdi.textDonationAnd": "and",
276 "settings.user.form.currentPassword": "मौजूदा पासवर्ड", 368 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
277 "settings.user.form.email": "ईमेल", 369 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors",
278 "settings.user.form.firstname": "पहला नाम", 370 "settings.supportFerdi.textListContributors": "Full list of contributors",
279 "settings.user.form.lastname": "उपनाम", 371 "settings.supportFerdi.textListContributorsHere": "here",
280 "settings.user.form.newPassword": "नया पासवर्ड", 372 "settings.supportFerdi.textOpenCollective": "Open Collective",
281 "settings.workspace.add.form.name": "नाम", 373 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
282 "settings.workspace.add.form.submitButton": "कार्यक्षेत्र बनाएँ", 374 "settings.supportFerdi.textSupportWelcomeHere": "here",
283 "settings.workspace.form.buttonDelete": "कार्यक्षेत्र हटाएं", 375 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
284 "settings.workspace.form.buttonSave": "कार्यक्षेत्र सहेजें", 376 "settings.supportFerdi.title": "Do you like Ferdi?",
285 "settings.workspace.form.name": "नाम", 377 "settings.team.contentHeadline": "Franz Team Management",
286 "settings.workspace.form.servicesInWorkspaceHeadline": "इस कार्यक्षेत्र में सेवाएँ", 378 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
287 "settings.workspace.form.yourWorkspaces": "आपके कार्यक्षेत्र", 379 "settings.team.headline": "Team",
288 "settings.workspaces.deletedInfo": "कार्यक्षेत्र हटा दिया गया है", 380 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.",
289 "settings.workspaces.headline": "आपके कार्यक्षेत्र", 381 "settings.team.manageAction": "Manage your Team on meetfranz.com",
290 "settings.workspaces.noWorkspacesAdded": "आपने अभी तक कोई कार्यस्थान नहीं जोड़ा है।", 382 "settings.team.teamsUnavailable": "Teams are unavailable",
291 "settings.workspaces.tryReloadWorkspaces": "फिर कोशिश करें", 383 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.",
292 "settings.workspaces.updatedInfo": "आपके परिवर्तनों को सहेजा गया है", 384 "settings.user.form.accountType.company": "Company",
293 "settings.workspaces.workspaceFeatureHeadline": "कम अधिक है: फ्रांज़ कार्यस्थानों का परिचय", 385 "settings.user.form.accountType.individual": "Individual",
294 "settings.workspaces.workspaceFeatureInfo": "फ्रांज वर्कस्पेस आपको इस बात पर ध्यान केंद्रित करने देता है कि अभी क्या महत्वपूर्ण है। सेवाओं के विभिन्न समूहों को तैयार करें और किसी भी समय उनके बीच आसानी से स्विच करें। आप यह तय करते हैं कि आपको कब और कहाँ किन सेवाओं की ज़रूरत है, इसलिए हम आपको अपने खेल में शीर्ष पर बने रहने में मदद कर सकते हैं - या जब भी आप चाहें, आसानी से काम बंद कर सकते हैं।", 386 "settings.user.form.accountType.label": "Account type",
295 "settings.workspaces.workspacesRequestFailed": "आपके कार्यस्थानों को लोड नहीं किया जा सका", 387 "settings.user.form.accountType.non-profit": "Non-Profit",
388 "settings.user.form.currentPassword": "Current password",
389 "settings.user.form.email": "Email",
390 "settings.user.form.firstname": "First Name",
391 "settings.user.form.lastname": "Last Name",
392 "settings.user.form.newPassword": "New password",
393 "settings.workspace.add.form.name": "Name",
394 "settings.workspace.add.form.submitButton": "Create workspace",
395 "settings.workspace.form.buttonDelete": "Delete workspace",
396 "settings.workspace.form.buttonSave": "Save workspace",
397 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
398 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
399 "settings.workspace.form.name": "Name",
400 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
401 "settings.workspace.form.yourWorkspaces": "Your workspaces",
402 "settings.workspaces.deletedInfo": "Workspace has been deleted",
403 "settings.workspaces.headline": "Your workspaces",
404 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.",
405 "settings.workspaces.tryReloadWorkspaces": "Try again",
406 "settings.workspaces.updatedInfo": "Your changes have been saved",
407 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
408 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
409 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
296 "setupAssistant.headline": "Let's get started", 410 "setupAssistant.headline": "Let's get started",
297 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 411 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.",
298 "setupAssistant.submit.label": "Let's go", 412 "setupAssistant.submit.label": "Let's go",
299 "sidebar.addNewService": "नई सेवा जोड़ें", 413 "sidebar.addNewService": "Add new service",
300 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 414 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
301 "sidebar.closeWorkspaceDrawer": "कार्यक्षेत्र दराज बंद करें", 415 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
302 "sidebar.muteApp": "सूचनाएं और ऑडियो अक्षम करें", 416 "sidebar.lockFerdi": "Lock Ferdi",
417 "sidebar.muteApp": "Disable notifications & audio",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "कार्यक्षेत्र दराज खोलें", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
305 "sidebar.settings": "सेटिंग्स", 420 "sidebar.unmuteApp": "Enable notifications & audio",
306 "sidebar.unmuteApp": "सूचनाएं और ऑडियो सक्षम करें", 421 "signup.email.label": "Email address",
307 "signup.email.label": "ईमेल पता", 422 "signup.emailDuplicate": "A user with that email address already exists",
308 "signup.emailDuplicate": "उस ईमेल पते वाला उपयोगकर्ता पहले से मौजूद है", 423 "signup.firstname.label": "First Name",
309 "signup.firstname.label": "पहला नाम", 424 "signup.headline": "Sign up",
310 "signup.headline": "साइन अप करें", 425 "signup.lastname.label": "Last Name",
311 "signup.lastname.label": "उपनाम", 426 "signup.legal.info": "By creating a Ferdi account you accept the",
312 "signup.legal.info": "फ्रांज़ में खाता बनाकर आप इसे स्वीकार करते हैं", 427 "signup.legal.privacy": "Privacy Statement",
313 "signup.legal.privacy": "प्राइवेसी स्टेटमेंट", 428 "signup.legal.terms": "Terms of service",
314 "signup.legal.terms": "सेवा की शर्तें", 429 "signup.link.login": "Already have an account, sign in?",
315 "signup.link.login": "पहले से ही एक खाता है? लॉग इन करें।", 430 "signup.password.label": "Password",
316 "signup.password.label": "पासवर्ड", 431 "signup.submit.label": "Create account",
317 "signup.submit.label": "खता खोलें", 432 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
318 "tabs.item.deleteService": "सेवा हटाएँ", 433 "tabs.item.deleteService": "Delete service",
319 "tabs.item.disableAudio": "ऑडियो अक्षम करें", 434 "tabs.item.disableAudio": "Disable audio",
320 "tabs.item.disableNotifications": "ऑडियो अक्षम करें", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
321 "tabs.item.disableService": "सेवा अक्षम करें", 436 "tabs.item.disableNotifications": "Disable notifications",
322 "tabs.item.edit": "संपादित करें", 437 "tabs.item.disableService": "Disable service",
323 "tabs.item.enableAudio": "ऑडियो सक्षम करें", 438 "tabs.item.enableAudio": "Enable audio",
324 "tabs.item.enableNotification": "सूचनाएँ सक्षम करें ", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
325 "tabs.item.enableService": "सेवा सक्षम करें", 440 "tabs.item.enableNotification": "Enable notifications",
326 "tabs.item.reload": "पुन: लोड करें", 441 "tabs.item.enableService": "Enable service",
327 "validation.email": "{field} मान्य नहीं है", 442 "tabs.item.hibernateService": "Hibernate service",
328 "validation.minLength": "{field} कम से कम {length} अक्षर लंबे होने चाहिए", 443 "tabs.item.reload": "Reload",
329 "validation.oneRequired": "कम से कम एक की आवश्यकता है", 444 "tabs.item.wakeUpService": "Wake up service",
330 "validation.required": "{field} की आवश्यकता है", 445 "validation.email": "{field} is not valid",
331 "validation.url": "{field} एक मान्य URL नहीं है", 446 "validation.minLength": "{field} should be at least {length} characters long",
447 "validation.oneRequired": "At least one is required",
448 "validation.required": "{field} is required",
449 "validation.url": "{field} is not a valid URL",
332 "webControls.back": "Back", 450 "webControls.back": "Back",
333 "webControls.forward": "Forward", 451 "webControls.forward": "Forward",
334 "webControls.goHome": "Home", 452 "webControls.goHome": "Home",
335 "webControls.openInBrowser": "Open in Browser", 453 "webControls.openInBrowser": "Open in Browser",
336 "webControls.reload": "पुन: लोड करें", 454 "webControls.reload": "Reload",
337 "welcome.loginButton": "अपने खाते में प्रवेश करें", 455 "welcome.loginButton": "Login to your account",
338 "welcome.signupButton": "एक नि: शुल्क खाता बनाए", 456 "welcome.signupButton": "Create a free account",
339 "workspaceDrawer.addNewWorkspaceLabel": "नया कार्यक्षेत्र जोड़ें", 457 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
340 "workspaceDrawer.allServices": "सभी सेवाएं", 458 "workspaceDrawer.allServices": "All services",
341 "workspaceDrawer.headline": "कार्यस्थान", 459 "workspaceDrawer.headline": "Workspaces",
342 "workspaceDrawer.item.contextMenuEdit": "संपादन करें", 460 "workspaceDrawer.item.contextMenuEdit": "edit",
343 "workspaceDrawer.item.noServicesAddedYet": "अभी तक कोई सेवा नहीं जोड़ी गई है", 461 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
344 "workspaceDrawer.premiumCtaButtonLabel": "अपना पहला कार्यक्षेत्र बनाएँ", 462 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
345 "workspaceDrawer.reactivatePremiumAccountLabel": "प्रीमियम खाता पुनः सक्रिय करें", 463 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
346 "workspaceDrawer.workspaceFeatureInfo": "<p>फ्रांज वर्कस्पेस आपको इस बात पर ध्यान केंद्रित करने देता है कि अभी क्या महत्वपूर्ण है। सेवाओं के विभिन्न समूहों को तैयार करें और किसी भी समय उनके बीच आसानी से स्विच करें।</p><p>आप यह तय करते हैं कि आपको कब और कहाँ किन सेवाओं की ज़रूरत है, इसलिए हम आपको अपने खेल में शीर्ष पर बने रहने में मदद कर सकते हैं - या जब भी आप चाहें, आसानी से काम बंद कर सकते हैं।</p>", 464 "workspaces.switchingIndicator.switchingTo": "Switching to"
347 "workspaceDrawer.workspacesSettingsTooltip": "कार्यस्थान सेटिंग्स संपादित करें",
348 "workspaces.switchingIndicator.switchingTo": "इसमें स्विच हो रहा है-"
349} 465}
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
index 80cce61fa..f7e046ed9 100644
--- a/src/i18n/locales/hr.json
+++ b/src/i18n/locales/hr.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Prilagođen server", 4 "changeserver.customServerLabel": "Prilagođen server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Pošalji",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Odustani",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nije se moguće povezati na Francove on-line servise. ", 27 "global.api.unhealthy": "Nije se moguće povezati na Francove on-line servise. ",
28 "global.cancel": "Odustani",
29 "global.edit": "Uredi",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Sada ste povezani s internetom. ", 31 "global.notConnectedToTheInternet": "Sada ste povezani s internetom. ",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Postavke",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Pošalji",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Uvezite svoje Franc 4 servise. ", 45 "import.headline": "Uvezite svoje Franc 4 servise. ",
38 "import.notSupportedHeadline": "Franc 5 trenutno ne podržava taj servis", 46 "import.notSupportedHeadline": "Franc 5 trenutno ne podržava taj servis",
39 "import.skip.label": "Želim ručno dodati ove usluge", 47 "import.skip.label": "Želim ručno dodati ove usluge",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "O aplikaciji", 86 "menu.app.about": "O aplikaciji",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Potraži ažuriranja", 88 "menu.app.checkForUpdates": "Potraži ažuriranja",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Postavke",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Uredi", 92 "menu.edit": "Uredi",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Prijavite se na Vaš račun", 152 "password.link.login": "Prijavite se na Vaš račun",
148 "password.link.signup": "Stvorite besplatan račun", 153 "password.link.signup": "Stvorite besplatan račun",
149 "password.noUser": "Ne postoji ni jedan korisnik s tom e-mail adresom", 154 "password.noUser": "Ne postoji ni jedan korisnik s tom e-mail adresom",
150 "password.submit.label": "Pošalji",
151 "password.successInfo": "Molimo Vas da provjerite svoju e-mail adresu", 155 "password.successInfo": "Molimo Vas da provjerite svoju e-mail adresu",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Obuhvati i beta verzije", 218 "settings.app.form.beta": "Obuhvati i beta verzije",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Postavke",
255 "settings.app.headlineAdvanced": "Napredne alatke", 259 "settings.app.headlineAdvanced": "Napredne alatke",
256 "settings.app.headlineAppearance": "Izgled", 260 "settings.app.headlineAppearance": "Izgled",
257 "settings.app.headlineGeneral": "Općenito", 261 "settings.app.headlineGeneral": "Općenito",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Korisnički račun", 285 "settings.navigation.account": "Korisnički račun",
282 "settings.navigation.availableServices": "Dostupne usluge", 286 "settings.navigation.availableServices": "Dostupne usluge",
283 "settings.navigation.logout": "Odjava", 287 "settings.navigation.logout": "Odjava",
284 "settings.navigation.settings": "Postavke",
285 "settings.navigation.supportFerdi": "O aplikaciji", 288 "settings.navigation.supportFerdi": "O aplikaciji",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Vaše usluge", 290 "settings.navigation.yourServices": "Vaše usluge",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Ugasi obavijesti i zvuk", 417 "sidebar.muteApp": "Ugasi obavijesti i zvuk",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Postavke",
418 "sidebar.unmuteApp": "Omogući obavijesti i zvuk", 420 "sidebar.unmuteApp": "Omogući obavijesti i zvuk",
419 "signup.email.label": "Vaša e-adresa:", 421 "signup.email.label": "Vaša e-adresa:",
420 "signup.emailDuplicate": "Već postoji korisnik s tom e-mail adresom", 422 "signup.emailDuplicate": "Već postoji korisnik s tom e-mail adresom",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Onemogući obavijesti", 436 "tabs.item.disableNotifications": "Onemogući obavijesti",
435 "tabs.item.disableService": "Onemogući servis", 437 "tabs.item.disableService": "Onemogući servis",
436 "tabs.item.edit": "Uredi",
437 "tabs.item.enableAudio": "Omogućite zvuk", 438 "tabs.item.enableAudio": "Omogućite zvuk",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Omogućite obavijesti", 440 "tabs.item.enableNotification": "Omogućite obavijesti",
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index b542fcddf..84c8496b8 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Egyéni szerver", 4 "changeserver.customServerLabel": "Egyéni szerver",
5 "changeserver.headline": "Szerver megváltoztatása", 5 "changeserver.headline": "Szerver megváltoztatása",
6 "changeserver.label": "Szerver", 6 "changeserver.label": "Szerver",
7 "changeserver.submit": "Küldés",
8 "changeserver.urlError": "Adjon meg egy érvényes URL-t", 7 "changeserver.urlError": "Adjon meg egy érvényes URL-t",
9 "changeserver.warning": "A Ferdi által kínált extra beállítások nem kerülnek mentésre", 8 "changeserver.warning": "A Ferdi által kínált extra beállítások nem kerülnek mentésre",
10 "connectionLostBanner.cta": "Szolgáltatás újraindítása", 9 "connectionLostBanner.cta": "Szolgáltatás újraindítása",
11 "connectionLostBanner.informationLink": "Mi történt?", 10 "connectionLostBanner.informationLink": "Mi történt?",
12 "connectionLostBanner.message": "Ja ne! Ferdi nem tud kapcsolodni {name}-hez.", 11 "connectionLostBanner.message": "Ja ne! Ferdi nem tud kapcsolodni {name}-hez.",
13 "feature.announcements.changelog.headline": "Ferdi {version} változásai", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Hibakeresési napló publikálása", 13 "feature.debugger.title": "Hibakeresési napló publikálása",
15 "feature.nightlyBuilds.activate": "Aktiválás", 14 "feature.nightlyBuilds.activate": "Aktiválás",
16 "feature.nightlyBuilds.cancel": "Mégsem",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly verziók", 16 "feature.nightlyBuilds.title": "Nightly verziók",
19 "feature.publishDebugInfo.error": "Hiba történt a hibakeresési napló publikálása közben. Kérem próbálja meg később.", 17 "feature.publishDebugInfo.error": "Hiba történt a hibakeresési napló publikálása közben. Kérem próbálja meg később.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Keresés...", 25 "feature.quickSwitch.search": "Keresés...",
28 "feature.quickSwitch.title": "Gyorsváltó", 26 "feature.quickSwitch.title": "Gyorsváltó",
29 "global.api.unhealthy": "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz", 27 "global.api.unhealthy": "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz",
28 "global.cancel": "Mégsem",
29 "global.edit": "Szerkesztés",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Nincs hálózati kapcsolat.", 31 "global.notConnectedToTheInternet": "Nincs hálózati kapcsolat.",
32 "global.ok": "Ok",
33 "global.quit": "Kilépés",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Beállítások",
31 "global.spellchecker.useDefault": "Rendszer alapbeállítás használata ({default})", 37 "global.spellchecker.useDefault": "Rendszer alapbeállítás használata ({default})",
32 "global.spellchecking.autodetect": "Automatikus nyelvdetektálás", 38 "global.spellchecking.autodetect": "Automatikus nyelvdetektálás",
33 "global.spellchecking.autodetect.short": "Automatikus", 39 "global.spellchecking.autodetect.short": "Automatikus",
34 "global.spellchecking.language": "Helyesírás-ellenőrző nyelve", 40 "global.spellchecking.language": "Helyesírás-ellenőrző nyelve",
41 "global.submit": "Küldés",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importáld szolgáltatásaidat a Ferdi 4-ből", 45 "import.headline": "Importáld szolgáltatásaidat a Ferdi 4-ből",
38 "import.notSupportedHeadline": "Még nem támogatott szolgáltatások a Ferdi 5-ben", 46 "import.notSupportedHeadline": "Még nem támogatott szolgáltatások a Ferdi 5-ben",
39 "import.skip.label": "Manuálisan szeretném hozzáadni a szolgáltatásokat", 47 "import.skip.label": "Manuálisan szeretném hozzáadni a szolgáltatásokat",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Tennivalók sáv bezárása", 84 "menu.Todoss.closeTodosDrawer": "Tennivalók sáv bezárása",
77 "menu.Todoss.openTodosDrawer": "Tennivalók sáv kinyitása", 85 "menu.Todoss.openTodosDrawer": "Tennivalók sáv kinyitása",
78 "menu.app.about": "Névjegy", 86 "menu.app.about": "Névjegy",
79 "menu.app.announcement": "Mi újság?",
80 "menu.app.autohideMenuBar": "Menüsáv automatikus elrejtése", 87 "menu.app.autohideMenuBar": "Menüsáv automatikus elrejtése",
81 "menu.app.checkForUpdates": "Frissítések keresése", 88 "menu.app.checkForUpdates": "Frissítések keresése",
82 "menu.app.hide": "Elrejt", 89 "menu.app.hide": "Elrejt",
83 "menu.app.hideOthers": "Többi elrejtése", 90 "menu.app.hideOthers": "Többi elrejtése",
84 "menu.app.quit": "Kilépés",
85 "menu.app.settings": "Beállítások",
86 "menu.app.unhide": "Megjelenít", 91 "menu.app.unhide": "Megjelenít",
87 "menu.edit": "Szerkesztés", 92 "menu.edit": "Szerkesztés",
88 "menu.edit.copy": "Másolás", 93 "menu.edit.copy": "Másolás",
@@ -147,7 +152,6 @@
147 "password.link.login": "Jelentkezz be a fiókodba", 152 "password.link.login": "Jelentkezz be a fiókodba",
148 "password.link.signup": "Új fiók létrehozása", 153 "password.link.signup": "Új fiók létrehozása",
149 "password.noUser": "Nem található felhasználó a megadott email címmel", 154 "password.noUser": "Nem található felhasználó a megadott email címmel",
150 "password.submit.label": "Küldés",
151 "password.successInfo": "Ellenőrizd az email fiókodat", 155 "password.successInfo": "Ellenőrizd az email fiókodat",
152 "pricing.features.accountSync": "Fiók szinkronizálás", 156 "pricing.features.accountSync": "Fiók szinkronizálás",
153 "pricing.features.customWebsites": "Egyéni weboldalak megadása", 157 "pricing.features.customWebsites": "Egyéni weboldalak megadása",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Béta verziók keresése", 218 "settings.app.form.beta": "Béta verziók keresése",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Sötét mód engedélyezése", 223 "settings.app.form.darkMode": "Sötét mód engedélyezése",
219 "settings.app.form.enableGPUAcceleration": "Hardveres gyorsítás engedélyezése", 224 "settings.app.form.enableGPUAcceleration": "Hardveres gyorsítás engedélyezése",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Beállítások",
255 "settings.app.headlineAdvanced": "Haladó", 259 "settings.app.headlineAdvanced": "Haladó",
256 "settings.app.headlineAppearance": "Megjelenés", 260 "settings.app.headlineAppearance": "Megjelenés",
257 "settings.app.headlineGeneral": "Általános", 261 "settings.app.headlineGeneral": "Általános",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Fiók", 285 "settings.navigation.account": "Fiók",
282 "settings.navigation.availableServices": "Elérhető szolgáltatások", 286 "settings.navigation.availableServices": "Elérhető szolgáltatások",
283 "settings.navigation.logout": "Kijelentkezés", 287 "settings.navigation.logout": "Kijelentkezés",
284 "settings.navigation.settings": "Beállítások",
285 "settings.navigation.supportFerdi": "Névjegy", 288 "settings.navigation.supportFerdi": "Névjegy",
286 "settings.navigation.team": "Csapat kezelése", 289 "settings.navigation.team": "Csapat kezelése",
287 "settings.navigation.yourServices": "Szolgáltatásaid", 290 "settings.navigation.yourServices": "Szolgáltatásaid",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Értesítések és hangok letiltása", 417 "sidebar.muteApp": "Értesítések és hangok letiltása",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Munkaterület panel kinyitása", 419 "sidebar.openWorkspaceDrawer": "Munkaterület panel kinyitása",
417 "sidebar.settings": "Beállítások",
418 "sidebar.unmuteApp": "Értesítések és hangok engedélyezése", 420 "sidebar.unmuteApp": "Értesítések és hangok engedélyezése",
419 "signup.email.label": "Email cím", 421 "signup.email.label": "Email cím",
420 "signup.emailDuplicate": "Ezzel az e-mail címmel már létezik felhasználó", 422 "signup.emailDuplicate": "Ezzel az e-mail címmel már létezik felhasználó",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Sötét mód kikapcsolása", 435 "tabs.item.disableDarkMode": "Sötét mód kikapcsolása",
434 "tabs.item.disableNotifications": "Értesítések letiltása", 436 "tabs.item.disableNotifications": "Értesítések letiltása",
435 "tabs.item.disableService": "Szolgáltatás letiltása", 437 "tabs.item.disableService": "Szolgáltatás letiltása",
436 "tabs.item.edit": "Szerkesztés",
437 "tabs.item.enableAudio": "Hang engedélyezése", 438 "tabs.item.enableAudio": "Hang engedélyezése",
438 "tabs.item.enableDarkMode": "Sötét mód bekapcsolása", 439 "tabs.item.enableDarkMode": "Sötét mód bekapcsolása",
439 "tabs.item.enableNotification": "Értesítések engedélyezése", 440 "tabs.item.enableNotification": "Értesítések engedélyezése",
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index 330fb8122..7a716a00c 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Server khusus", 4 "changeserver.customServerLabel": "Server khusus",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Kirim",
8 "changeserver.urlError": "Isi URL yang valid", 7 "changeserver.urlError": "Isi URL yang valid",
9 "changeserver.warning": "Pengaturan tambahan dari Ferdi tidak akan tersimpan", 8 "changeserver.warning": "Pengaturan tambahan dari Ferdi tidak akan tersimpan",
10 "connectionLostBanner.cta": "Muat ulang Layanan", 9 "connectionLostBanner.cta": "Muat ulang Layanan",
11 "connectionLostBanner.informationLink": "Ada apa ini?", 10 "connectionLostBanner.informationLink": "Ada apa ini?",
12 "connectionLostBanner.message": "Yah! Ferdi terputus dari {name}.", 11 "connectionLostBanner.message": "Yah! Ferdi terputus dari {name}.",
13 "feature.announcements.changelog.headline": "Perubahan dalam Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Terbitkan informasi debug", 13 "feature.debugger.title": "Terbitkan informasi debug",
15 "feature.nightlyBuilds.activate": "Mengaktifkan", 14 "feature.nightlyBuilds.activate": "Mengaktifkan",
16 "feature.nightlyBuilds.cancel": "Batalkan",
17 "feature.nightlyBuilds.info": "Nightly builds adalah versi eksperimen dari Ferdi yang mungkin berisi fitur-fitur yang masih kasar dan tidak lengkap. Nightly builds ini biasa digunakan untuk para developer untuk mengetes fitur-fitur terbaru mereka dan bagaimana fitur-fitur itu berjalan di versi terakhir. Jika anda tidak tahu apa yang anda lakukan, kami sarankan untuk tidak mengaktivasi nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds adalah versi eksperimen dari Ferdi yang mungkin berisi fitur-fitur yang masih kasar dan tidak lengkap. Nightly builds ini biasa digunakan untuk para developer untuk mengetes fitur-fitur terbaru mereka dan bagaimana fitur-fitur itu berjalan di versi terakhir. Jika anda tidak tahu apa yang anda lakukan, kami sarankan untuk tidak mengaktivasi nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Tidak dapat tersambung ke layanan Ferdi", 27 "global.api.unhealthy": "Tidak dapat tersambung ke layanan Ferdi",
28 "global.cancel": "Batalkan",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.", 31 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Pengaturan",
31 "global.spellchecker.useDefault": "Gunakan Bawaan Sistem ({default})", 37 "global.spellchecker.useDefault": "Gunakan Bawaan Sistem ({default})",
32 "global.spellchecking.autodetect": "Deteksi bahasa secara otomatis", 38 "global.spellchecking.autodetect": "Deteksi bahasa secara otomatis",
33 "global.spellchecking.autodetect.short": "Otomatis", 39 "global.spellchecking.autodetect.short": "Otomatis",
34 "global.spellchecking.language": "Periksa ejaan", 40 "global.spellchecking.language": "Periksa ejaan",
41 "global.submit": "Kirim",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Impor layanan Ferdi 4 Anda", 45 "import.headline": "Impor layanan Ferdi 4 Anda",
38 "import.notSupportedHeadline": "Layanan belum didukung di Ferdi 5", 46 "import.notSupportedHeadline": "Layanan belum didukung di Ferdi 5",
39 "import.skip.label": "Saya ingin menambahkan layanan secara manual", 47 "import.skip.label": "Saya ingin menambahkan layanan secara manual",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Tentang Ferdi", 86 "menu.app.about": "Tentang Ferdi",
79 "menu.app.announcement": "Yang baru",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Periksa versi baru", 88 "menu.app.checkForUpdates": "Periksa versi baru",
82 "menu.app.hide": "Sembunyikan", 89 "menu.app.hide": "Sembunyikan",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Pengaturan",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Masuk ke akun Anda", 152 "password.link.login": "Masuk ke akun Anda",
148 "password.link.signup": "Buat akun gratis", 153 "password.link.signup": "Buat akun gratis",
149 "password.noUser": "Tidak ditemukan pengguna dengan email tersebut", 154 "password.noUser": "Tidak ditemukan pengguna dengan email tersebut",
150 "password.submit.label": "Kirim",
151 "password.successInfo": "Periksa email Anda", 155 "password.successInfo": "Periksa email Anda",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Sertakan versi beta", 218 "settings.app.form.beta": "Sertakan versi beta",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Aktifkan Akselerasi GPU", 224 "settings.app.form.enableGPUAcceleration": "Aktifkan Akselerasi GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Pengaturan",
255 "settings.app.headlineAdvanced": "Tingkat Lanjut", 259 "settings.app.headlineAdvanced": "Tingkat Lanjut",
256 "settings.app.headlineAppearance": "Tampilan", 260 "settings.app.headlineAppearance": "Tampilan",
257 "settings.app.headlineGeneral": "Umum", 261 "settings.app.headlineGeneral": "Umum",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Akun", 285 "settings.navigation.account": "Akun",
282 "settings.navigation.availableServices": "Layanan tersedia", 286 "settings.navigation.availableServices": "Layanan tersedia",
283 "settings.navigation.logout": "Keluar", 287 "settings.navigation.logout": "Keluar",
284 "settings.navigation.settings": "Pengaturan",
285 "settings.navigation.supportFerdi": "Tentang Ferdi", 288 "settings.navigation.supportFerdi": "Tentang Ferdi",
286 "settings.navigation.team": "Kelola Tim", 289 "settings.navigation.team": "Kelola Tim",
287 "settings.navigation.yourServices": "Layanan Anda", 290 "settings.navigation.yourServices": "Layanan Anda",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Nonaktifkan pemberitahuan & audio", 417 "sidebar.muteApp": "Nonaktifkan pemberitahuan & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Buka laci ruang kerja", 419 "sidebar.openWorkspaceDrawer": "Buka laci ruang kerja",
417 "sidebar.settings": "Pengaturan",
418 "sidebar.unmuteApp": "Aktifkan pemberitahuan", 420 "sidebar.unmuteApp": "Aktifkan pemberitahuan",
419 "signup.email.label": "Alamat email", 421 "signup.email.label": "Alamat email",
420 "signup.emailDuplicate": "Pengguna dengan alamat email ini sudah ada", 422 "signup.emailDuplicate": "Pengguna dengan alamat email ini sudah ada",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Nonaktifkan pemberitahuan", 436 "tabs.item.disableNotifications": "Nonaktifkan pemberitahuan",
435 "tabs.item.disableService": "Nonaktifkan layanan", 437 "tabs.item.disableService": "Nonaktifkan layanan",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Aktifkan audio", 438 "tabs.item.enableAudio": "Aktifkan audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Aktifkan pemberitahuan", 440 "tabs.item.enableNotification": "Aktifkan pemberitahuan",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index 163f62b21..d5539aa30 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Server personalizzato", 4 "changeserver.customServerLabel": "Server personalizzato",
5 "changeserver.headline": "Cambia Server", 5 "changeserver.headline": "Cambia Server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Invia",
8 "changeserver.urlError": "Inserisci un URL valido", 7 "changeserver.urlError": "Inserisci un URL valido",
9 "changeserver.warning": "Le impostazioni extra offerte da Ferdi non verranno salvate", 8 "changeserver.warning": "Le impostazioni extra offerte da Ferdi non verranno salvate",
10 "connectionLostBanner.cta": "Ricarica Servizio", 9 "connectionLostBanner.cta": "Ricarica Servizio",
11 "connectionLostBanner.informationLink": "Cos'è successo?", 10 "connectionLostBanner.informationLink": "Cos'è successo?",
12 "connectionLostBanner.message": "Oh no! Ferdi ha perso la connessione con {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi ha perso la connessione con {name}.",
13 "feature.announcements.changelog.headline": "Modifiche in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Pubblica informazioni di debug", 13 "feature.debugger.title": "Pubblica informazioni di debug",
15 "feature.nightlyBuilds.activate": "Attivato", 14 "feature.nightlyBuilds.activate": "Attivato",
16 "feature.nightlyBuilds.cancel": "Annulla",
17 "feature.nightlyBuilds.info": "Le 'Nightly Builds' sono versioni sperimentali di Ferdi che possono contenere funzionalità incomplete o non perfettamente funzionanti. Queste versioni sono principalmente usate dagli sviluppatori per effettuare dei test sulle nuove caratteristiche e verificare come si integrano nella versione finale di Ferdi. Se non sei sicuro di quello che stai facendo, ti consigliamo di non attivare le 'Nightly Builds'.", 15 "feature.nightlyBuilds.info": "Le 'Nightly Builds' sono versioni sperimentali di Ferdi che possono contenere funzionalità incomplete o non perfettamente funzionanti. Queste versioni sono principalmente usate dagli sviluppatori per effettuare dei test sulle nuove caratteristiche e verificare come si integrano nella versione finale di Ferdi. Se non sei sicuro di quello che stai facendo, ti consigliamo di non attivare le 'Nightly Builds'.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Si è verificato un errore durante il tentativo di pubblicare le informazioni di debug. Riprova più tardi o vedi la console per maggiori informazioni.", 17 "feature.publishDebugInfo.error": "Si è verificato un errore durante il tentativo di pubblicare le informazioni di debug. Riprova più tardi o vedi la console per maggiori informazioni.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Cerca...", 25 "feature.quickSwitch.search": "Cerca...",
28 "feature.quickSwitch.title": "Cambio Veloce", 26 "feature.quickSwitch.title": "Cambio Veloce",
29 "global.api.unhealthy": "Impossibile connettersi ai servizi online di Ferdi", 27 "global.api.unhealthy": "Impossibile connettersi ai servizi online di Ferdi",
28 "global.cancel": "Annulla",
29 "global.edit": "Modifica",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Non sei connesso a Internet.", 31 "global.notConnectedToTheInternet": "Non sei connesso a Internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Impostazioni",
31 "global.spellchecker.useDefault": "Usa le impostazioni predefinite di sistema ({default})", 37 "global.spellchecker.useDefault": "Usa le impostazioni predefinite di sistema ({default})",
32 "global.spellchecking.autodetect": "Rileva automaticamente la lingua", 38 "global.spellchecking.autodetect": "Rileva automaticamente la lingua",
33 "global.spellchecking.autodetect.short": "Automatico", 39 "global.spellchecking.autodetect.short": "Automatico",
34 "global.spellchecking.language": "Lingua per controllo ortografico", 40 "global.spellchecking.language": "Lingua per controllo ortografico",
41 "global.submit": "Invia",
35 "global.userAgentHelp": "Usa 'https://whatmyuseragent.com/' (per scoprire) o 'https://developers.whatismybrowser.com/useragents/explore/' (per scegliere) il tuo user agent desiderato e copialo qui.", 42 "global.userAgentHelp": "Usa 'https://whatmyuseragent.com/' (per scoprire) o 'https://developers.whatismybrowser.com/useragents/explore/' (per scegliere) il tuo user agent desiderato e copialo qui.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importa i servizi di Ferdi 4", 45 "import.headline": "Importa i servizi di Ferdi 4",
38 "import.notSupportedHeadline": "Servizi non ancora supportati in Ferdi 5", 46 "import.notSupportedHeadline": "Servizi non ancora supportati in Ferdi 5",
39 "import.skip.label": "Voglio aggiungere i servizi manualmente", 47 "import.skip.label": "Voglio aggiungere i servizi manualmente",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Chiudi il menu delle attività", 84 "menu.Todoss.closeTodosDrawer": "Chiudi il menu delle attività",
77 "menu.Todoss.openTodosDrawer": "Apri il menu delle attività", 85 "menu.Todoss.openTodosDrawer": "Apri il menu delle attività",
78 "menu.app.about": "Info su Ferdi", 86 "menu.app.about": "Info su Ferdi",
79 "menu.app.announcement": "Cosa c'è di nuovo?",
80 "menu.app.autohideMenuBar": "Nascondi automaticamente la barra del menù", 87 "menu.app.autohideMenuBar": "Nascondi automaticamente la barra del menù",
81 "menu.app.checkForUpdates": "Controlla aggiornamenti", 88 "menu.app.checkForUpdates": "Controlla aggiornamenti",
82 "menu.app.hide": "Nascondi", 89 "menu.app.hide": "Nascondi",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Impostazioni",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Modifica", 92 "menu.edit": "Modifica",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Accedi al tuo account", 152 "password.link.login": "Accedi al tuo account",
148 "password.link.signup": "Crea un account gratuito", 153 "password.link.signup": "Crea un account gratuito",
149 "password.noUser": "Non è stato trovato nessun utente con questo indirizzo email", 154 "password.noUser": "Non è stato trovato nessun utente con questo indirizzo email",
150 "password.submit.label": "Invia",
151 "password.successInfo": "Per favore controlla la tua email", 155 "password.successInfo": "Per favore controlla la tua email",
152 "pricing.features.accountSync": "Sincronizzazione account", 156 "pricing.features.accountSync": "Sincronizzazione account",
153 "pricing.features.customWebsites": "Aggiungi siti web personalizzati", 157 "pricing.features.customWebsites": "Aggiungi siti web personalizzati",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Includi versioni beta", 218 "settings.app.form.beta": "Includi versioni beta",
215 "settings.app.form.clipboardNotifications": "Non mostrare notifiche per eventi dagli appunti", 219 "settings.app.form.clipboardNotifications": "Non mostrare notifiche per eventi dagli appunti",
216 "settings.app.form.closeToSystemTray": "Chiudi Ferdi nell'area di notifica", 220 "settings.app.form.closeToSystemTray": "Chiudi Ferdi nell'area di notifica",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Server Todo personalizzato", 222 "settings.app.form.customTodoServer": "Server Todo personalizzato",
218 "settings.app.form.darkMode": "Attiva modalità scura", 223 "settings.app.form.darkMode": "Attiva modalità scura",
219 "settings.app.form.enableGPUAcceleration": "Attiva Accelerazione GPU", 224 "settings.app.form.enableGPUAcceleration": "Attiva Accelerazione GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Consenti l'utilizzo di TouchID per sbloccare Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Consenti l'utilizzo di TouchID per sbloccare Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Impostazioni",
255 "settings.app.headlineAdvanced": "Avanzate", 259 "settings.app.headlineAdvanced": "Avanzate",
256 "settings.app.headlineAppearance": "Aspetto", 260 "settings.app.headlineAppearance": "Aspetto",
257 "settings.app.headlineGeneral": "Generale", 261 "settings.app.headlineGeneral": "Generale",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Servizi disponibili", 286 "settings.navigation.availableServices": "Servizi disponibili",
283 "settings.navigation.logout": "Esci", 287 "settings.navigation.logout": "Esci",
284 "settings.navigation.settings": "Impostazioni",
285 "settings.navigation.supportFerdi": "Info su Ferdi", 288 "settings.navigation.supportFerdi": "Info su Ferdi",
286 "settings.navigation.team": "Gestisci il Team", 289 "settings.navigation.team": "Gestisci il Team",
287 "settings.navigation.yourServices": "I tuoi servizi", 290 "settings.navigation.yourServices": "I tuoi servizi",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disattiva notifiche e audio", 417 "sidebar.muteApp": "Disattiva notifiche e audio",
415 "sidebar.openTodosDrawer": "Apri le Attività Ferdi", 418 "sidebar.openTodosDrawer": "Apri le Attività Ferdi",
416 "sidebar.openWorkspaceDrawer": "Apri il menu dei workspace", 419 "sidebar.openWorkspaceDrawer": "Apri il menu dei workspace",
417 "sidebar.settings": "Impostazioni",
418 "sidebar.unmuteApp": "Attiva notifiche e audio", 420 "sidebar.unmuteApp": "Attiva notifiche e audio",
419 "signup.email.label": "Indirizzo email", 421 "signup.email.label": "Indirizzo email",
420 "signup.emailDuplicate": "Esiste già un utente con lo stesso indirizzo email", 422 "signup.emailDuplicate": "Esiste già un utente con lo stesso indirizzo email",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disattiva notifiche", 436 "tabs.item.disableNotifications": "Disattiva notifiche",
435 "tabs.item.disableService": "Disattiva servizio", 437 "tabs.item.disableService": "Disattiva servizio",
436 "tabs.item.edit": "Modifica",
437 "tabs.item.enableAudio": "Attiva audio", 438 "tabs.item.enableAudio": "Attiva audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Attiva le notifiche", 440 "tabs.item.enableNotification": "Attiva le notifiche",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index bb9157717..118a2fb8e 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "独自サーバー", 4 "changeserver.customServerLabel": "独自サーバー",
5 "changeserver.headline": "サーバーの変更", 5 "changeserver.headline": "サーバーの変更",
6 "changeserver.label": "サーバー", 6 "changeserver.label": "サーバー",
7 "changeserver.submit": "送信",
8 "changeserver.urlError": "有効なURLを入力してください。", 7 "changeserver.urlError": "有効なURLを入力してください。",
9 "changeserver.warning": "Ferdiの追加設定は保存されません", 8 "changeserver.warning": "Ferdiの追加設定は保存されません",
10 "connectionLostBanner.cta": "サービスをリロードする", 9 "connectionLostBanner.cta": "サービスをリロードする",
11 "connectionLostBanner.informationLink": "何が起きましたか?", 10 "connectionLostBanner.informationLink": "何が起きましたか?",
12 "connectionLostBanner.message": "{name}への接続が切断されました。", 11 "connectionLostBanner.message": "{name}への接続が切断されました。",
13 "feature.announcements.changelog.headline": "Ferdi {version}の変更点", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "デバッグ情報の記録", 13 "feature.debugger.title": "デバッグ情報の記録",
15 "feature.nightlyBuilds.activate": "有効化", 14 "feature.nightlyBuilds.activate": "有効化",
16 "feature.nightlyBuilds.cancel": "キャンセル",
17 "feature.nightlyBuilds.info": "Nightlyビルドは未検証や未完成の機能が含まれる非常に実験的なバージョンです。このバージョンは、主に新機能のテストや最新ビルドでの検証を行う開発者が使用するものです。これを理解していない方は、Nightlyビルドを有効化しないことをおすすめします。", 15 "feature.nightlyBuilds.info": "Nightlyビルドは未検証や未完成の機能が含まれる非常に実験的なバージョンです。このバージョンは、主に新機能のテストや最新ビルドでの検証を行う開発者が使用するものです。これを理解していない方は、Nightlyビルドを有効化しないことをおすすめします。",
18 "feature.nightlyBuilds.title": "Nightlyビルド", 16 "feature.nightlyBuilds.title": "Nightlyビルド",
19 "feature.publishDebugInfo.error": "デバッグ情報の公開中にエラーが発生しました。後でもう一度試すか、コンソールを表示して詳細な情報を確認します。", 17 "feature.publishDebugInfo.error": "デバッグ情報の公開中にエラーが発生しました。後でもう一度試すか、コンソールを表示して詳細な情報を確認します。",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "検索...", 25 "feature.quickSwitch.search": "検索...",
28 "feature.quickSwitch.title": "クイックスイッチ", 26 "feature.quickSwitch.title": "クイックスイッチ",
29 "global.api.unhealthy": "Ferdiのオンラインサービスに接続できません。", 27 "global.api.unhealthy": "Ferdiのオンラインサービスに接続できません。",
28 "global.cancel": "キャンセル",
29 "global.edit": "編集",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "インターネットに接続されていません。", 31 "global.notConnectedToTheInternet": "インターネットに接続されていません。",
32 "global.ok": "Ok",
33 "global.quit": "終了",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "設定",
31 "global.spellchecker.useDefault": "システムデフォルトを使用する({default})", 37 "global.spellchecker.useDefault": "システムデフォルトを使用する({default})",
32 "global.spellchecking.autodetect": "言語を自動的に検出する", 38 "global.spellchecking.autodetect": "言語を自動的に検出する",
33 "global.spellchecking.autodetect.short": "自動", 39 "global.spellchecking.autodetect.short": "自動",
34 "global.spellchecking.language": "スペルチェックする言語", 40 "global.spellchecking.language": "スペルチェックする言語",
41 "global.submit": "送信",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "ユーザーエージェント", 43 "global.userAgentPref": "ユーザーエージェント",
44 "global.yes": "Yes",
37 "import.headline": "Ferdi 4のサービスをインポートして下さい", 45 "import.headline": "Ferdi 4のサービスをインポートして下さい",
38 "import.notSupportedHeadline": "Ferdi 5ではこのサービスにまだ対応していません", 46 "import.notSupportedHeadline": "Ferdi 5ではこのサービスにまだ対応していません",
39 "import.skip.label": "手動でサービスを追加する", 47 "import.skip.label": "手動でサービスを追加する",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "ToDoのドロワーを閉じる", 84 "menu.Todoss.closeTodosDrawer": "ToDoのドロワーを閉じる",
77 "menu.Todoss.openTodosDrawer": "ToDoのドロワーを開く", 85 "menu.Todoss.openTodosDrawer": "ToDoのドロワーを開く",
78 "menu.app.about": "バージョン情報", 86 "menu.app.about": "バージョン情報",
79 "menu.app.announcement": "新機能",
80 "menu.app.autohideMenuBar": "メニューバーを自動的に隠す", 87 "menu.app.autohideMenuBar": "メニューバーを自動的に隠す",
81 "menu.app.checkForUpdates": "更新の確認", 88 "menu.app.checkForUpdates": "更新の確認",
82 "menu.app.hide": "隠す", 89 "menu.app.hide": "隠す",
83 "menu.app.hideOthers": "他を非表示", 90 "menu.app.hideOthers": "他を非表示",
84 "menu.app.quit": "終了",
85 "menu.app.settings": "設定",
86 "menu.app.unhide": "再表示", 91 "menu.app.unhide": "再表示",
87 "menu.edit": "編集", 92 "menu.edit": "編集",
88 "menu.edit.copy": "コピー", 93 "menu.edit.copy": "コピー",
@@ -147,7 +152,6 @@
147 "password.link.login": "サインイン", 152 "password.link.login": "サインイン",
148 "password.link.signup": "無料アカウントを作成", 153 "password.link.signup": "無料アカウントを作成",
149 "password.noUser": "このメールアドレスはまだ登録されていません", 154 "password.noUser": "このメールアドレスはまだ登録されていません",
150 "password.submit.label": "送信",
151 "password.successInfo": "メールを確認して下さい", 155 "password.successInfo": "メールを確認して下さい",
152 "pricing.features.accountSync": "アカウントの同期", 156 "pricing.features.accountSync": "アカウントの同期",
153 "pricing.features.customWebsites": "カスタムサイトを追加", 157 "pricing.features.customWebsites": "カスタムサイトを追加",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Betaバージョンを含める", 218 "settings.app.form.beta": "Betaバージョンを含める",
215 "settings.app.form.clipboardNotifications": "クリップボードイベントの通知を表示しない", 219 "settings.app.form.clipboardNotifications": "クリップボードイベントの通知を表示しない",
216 "settings.app.form.closeToSystemTray": "Ferdiをシステムトレイに閉じる", 220 "settings.app.form.closeToSystemTray": "Ferdiをシステムトレイに閉じる",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "カスタムToDoサーバー", 222 "settings.app.form.customTodoServer": "カスタムToDoサーバー",
218 "settings.app.form.darkMode": "ダークモードを有効にする", 223 "settings.app.form.darkMode": "ダークモードを有効にする",
219 "settings.app.form.enableGPUAcceleration": "GPUアクセラレーションを有効にする", 224 "settings.app.form.enableGPUAcceleration": "GPUアクセラレーションを有効にする",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Touch IDを使用してFerdiのロックを解除する", 256 "settings.app.form.useTouchIdToUnlock": "Touch IDを使用してFerdiのロックを解除する",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "起動方法", 258 "settings.app.form.wakeUpStrategy": "起動方法",
254 "settings.app.headline": "設定",
255 "settings.app.headlineAdvanced": "詳細", 259 "settings.app.headlineAdvanced": "詳細",
256 "settings.app.headlineAppearance": "表示スタイル", 260 "settings.app.headlineAppearance": "表示スタイル",
257 "settings.app.headlineGeneral": "一般", 261 "settings.app.headlineGeneral": "一般",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "アカウント", 285 "settings.navigation.account": "アカウント",
282 "settings.navigation.availableServices": "利用可能なサービス", 286 "settings.navigation.availableServices": "利用可能なサービス",
283 "settings.navigation.logout": "ログアウト", 287 "settings.navigation.logout": "ログアウト",
284 "settings.navigation.settings": "設定",
285 "settings.navigation.supportFerdi": "バージョン情報", 288 "settings.navigation.supportFerdi": "バージョン情報",
286 "settings.navigation.team": "チームを管理", 289 "settings.navigation.team": "チームを管理",
287 "settings.navigation.yourServices": "利用中のサービス", 290 "settings.navigation.yourServices": "利用中のサービス",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "通知とオーディオを無効化", 417 "sidebar.muteApp": "通知とオーディオを無効化",
415 "sidebar.openTodosDrawer": "Ferdi ToDoを開く", 418 "sidebar.openTodosDrawer": "Ferdi ToDoを開く",
416 "sidebar.openWorkspaceDrawer": "ワークスペースドロワーを開く", 419 "sidebar.openWorkspaceDrawer": "ワークスペースドロワーを開く",
417 "sidebar.settings": "設定",
418 "sidebar.unmuteApp": "通知とオーディオを有効化", 420 "sidebar.unmuteApp": "通知とオーディオを有効化",
419 "signup.email.label": "メールアドレス", 421 "signup.email.label": "メールアドレス",
420 "signup.emailDuplicate": "このメールアドレスは既に登録されています", 422 "signup.emailDuplicate": "このメールアドレスは既に登録されています",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "ダークモードを無効にする", 435 "tabs.item.disableDarkMode": "ダークモードを無効にする",
434 "tabs.item.disableNotifications": "通知を無効にする", 436 "tabs.item.disableNotifications": "通知を無効にする",
435 "tabs.item.disableService": "サービスを無効にする", 437 "tabs.item.disableService": "サービスを無効にする",
436 "tabs.item.edit": "編集",
437 "tabs.item.enableAudio": "オーディオを有効にする", 438 "tabs.item.enableAudio": "オーディオを有効にする",
438 "tabs.item.enableDarkMode": "ダークモードを有効にする", 439 "tabs.item.enableDarkMode": "ダークモードを有効にする",
439 "tabs.item.enableNotification": "通知を有効にする", 440 "tabs.item.enableNotification": "通知を有効にする",
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index ed74ed22b..cc5a04aff 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "კერძო სერვერი", 4 "changeserver.customServerLabel": "კერძო სერვერი",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "დადასტურება",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "გაუქმება",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Ferdi-ის ონლაინ სერვისთან დაკავშირება ვერ მოხერხდა", 27 "global.api.unhealthy": "Ferdi-ის ონლაინ სერვისთან დაკავშირება ვერ მოხერხდა",
28 "global.cancel": "გაუქმება",
29 "global.edit": "რედაქტირება",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "თქვენ არ ხართ ინტერნეტთან დაკავშირებული.", 31 "global.notConnectedToTheInternet": "თქვენ არ ხართ ინტერნეტთან დაკავშირებული.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "პარამეტრები",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "დადასტურება",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "შემოიტანე Ferdi 4-ის სერვისები", 45 "import.headline": "შემოიტანე Ferdi 4-ის სერვისები",
38 "import.notSupportedHeadline": "სერვისები ჯერ არ არის მხარდაჭერილი Ferdi 5-ში", 46 "import.notSupportedHeadline": "სერვისები ჯერ არ არის მხარდაჭერილი Ferdi 5-ში",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Ferdi-ის შესახებ", 86 "menu.app.about": "Ferdi-ის შესახებ",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "განახლებების შემოწმება", 88 "menu.app.checkForUpdates": "განახლებების შემოწმება",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "პარამეტრები",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "რედაქტირება", 92 "menu.edit": "რედაქტირება",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "შედით თქვენს ანგარიშში", 152 "password.link.login": "შედით თქვენს ანგარიშში",
148 "password.link.signup": "ანგარიშის შექმნა", 153 "password.link.signup": "ანგარიშის შექმნა",
149 "password.noUser": "მომხმარებელი მითითებული მეილით ვერ მოიძებნა", 154 "password.noUser": "მომხმარებელი მითითებული მეილით ვერ მოიძებნა",
150 "password.submit.label": "დადასტურება",
151 "password.successInfo": "გთხოვთ შეამოწმეთ მეილი", 155 "password.successInfo": "გთხოვთ შეამოწმეთ მეილი",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "ჩართეთ ბეტა ვერსიები", 218 "settings.app.form.beta": "ჩართეთ ბეტა ვერსიები",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "პარამეტრები",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "მთავარი", 261 "settings.app.headlineGeneral": "მთავარი",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "ანგარიში", 285 "settings.navigation.account": "ანგარიში",
282 "settings.navigation.availableServices": "ხელმისაწვდომი სერვისები", 286 "settings.navigation.availableServices": "ხელმისაწვდომი სერვისები",
283 "settings.navigation.logout": "გასვლა", 287 "settings.navigation.logout": "გასვლა",
284 "settings.navigation.settings": "პარამეტრები",
285 "settings.navigation.supportFerdi": "Ferdi-ის შესახებ", 288 "settings.navigation.supportFerdi": "Ferdi-ის შესახებ",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "თქვენი სერვისები", 290 "settings.navigation.yourServices": "თქვენი სერვისები",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "პარამეტრები",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "მეილი", 421 "signup.email.label": "მეილი",
420 "signup.emailDuplicate": "მომხმარებელი ამ მეილით უკვე არსებობს", 422 "signup.emailDuplicate": "მომხმარებელი ამ მეილით უკვე არსებობს",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "შეტყობინებების გამორთვა", 436 "tabs.item.disableNotifications": "შეტყობინებების გამორთვა",
435 "tabs.item.disableService": "სერვისის გაუქმება", 437 "tabs.item.disableService": "სერვისის გაუქმება",
436 "tabs.item.edit": "რედაქტირება",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "შეტყობინებების ჩართვა", 440 "tabs.item.enableNotification": "შეტყობინებების ჩართვა",
diff --git a/src/i18n/locales/kk.json b/src/i18n/locales/kk.json
index 462ca8543..9bb874e43 100644
--- a/src/i18n/locales/kk.json
+++ b/src/i18n/locales/kk.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
15 "global.api.unhealthy": "Can't connect to Ferdi online services", 15 "global.api.unhealthy": "Can't connect to Ferdi online services",
16 "global.edit": "Edit",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "You are not connected to the internet.", 18 "global.notConnectedToTheInternet": "You are not connected to the internet.",
19 "global.quit": "Quit",
20 "global.settings": "Settings",
18 "global.spellchecker.useDefault": "Use System Default ({default})", 21 "global.spellchecker.useDefault": "Use System Default ({default})",
19 "global.spellchecking.autodetect": "Detect language automatically", 22 "global.spellchecking.autodetect": "Detect language automatically",
20 "global.spellchecking.autodetect.short": "Automatic", 23 "global.spellchecking.autodetect.short": "Automatic",
21 "global.spellchecking.language": "Spell checking language", 24 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "Submit",
22 "import.headline": "Import your Ferdi 4 services", 26 "import.headline": "Import your Ferdi 4 services",
23 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 27 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
24 "import.skip.label": "I want to add services manually", 28 "import.skip.label": "I want to add services manually",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Check for updates", 55 "menu.app.checkForUpdates": "Check for updates",
52 "menu.app.hide": "Hide", 56 "menu.app.hide": "Hide",
53 "menu.app.hideOthers": "Hide Others", 57 "menu.app.hideOthers": "Hide Others",
54 "menu.app.quit": "Quit",
55 "menu.app.settings": "Settings",
56 "menu.app.unhide": "Unhide", 58 "menu.app.unhide": "Unhide",
57 "menu.edit": "Edit", 59 "menu.edit": "Edit",
58 "menu.edit.copy": "Copy", 60 "menu.edit.copy": "Copy",
@@ -109,7 +111,6 @@
109 "password.link.login": "Sign in to your account", 111 "password.link.login": "Sign in to your account",
110 "password.link.signup": "Create a free account", 112 "password.link.signup": "Create a free account",
111 "password.noUser": "No user with that email address was found", 113 "password.noUser": "No user with that email address was found",
112 "password.submit.label": "Submit",
113 "password.successInfo": "Please check your email", 114 "password.successInfo": "Please check your email",
114 "pricing.features.accountSync": "Account Synchronisation", 115 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free", 116 "pricing.features.adFree": "Forever ad-free",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 179 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
179 "settings.app.form.showDisabledServices": "Display disabled services tabs", 180 "settings.app.form.showDisabledServices": "Display disabled services tabs",
180 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 181 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
181 "settings.app.headline": "Settings",
182 "settings.app.headlineAdvanced": "Advanced", 182 "settings.app.headlineAdvanced": "Advanced",
183 "settings.app.headlineAppearance": "Appearance", 183 "settings.app.headlineAppearance": "Appearance",
184 "settings.app.headlineGeneral": "General", 184 "settings.app.headlineGeneral": "General",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "Available services", 196 "settings.navigation.availableServices": "Available services",
197 "settings.navigation.inviteFriends": "Invite Friends", 197 "settings.navigation.inviteFriends": "Invite Friends",
198 "settings.navigation.logout": "Logout", 198 "settings.navigation.logout": "Logout",
199 "settings.navigation.settings": "Settings",
200 "settings.navigation.team": "Manage Team", 199 "settings.navigation.team": "Manage Team",
201 "settings.navigation.yourServices": "Your services", 200 "settings.navigation.yourServices": "Your services",
202 "settings.navigation.yourWorkspaces": "Your workspaces", 201 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "Disable notifications & audio", 301 "sidebar.muteApp": "Disable notifications & audio",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 302 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 303 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
305 "sidebar.settings": "Settings",
306 "sidebar.unmuteApp": "Enable notifications & audio", 304 "sidebar.unmuteApp": "Enable notifications & audio",
307 "signup.email.label": "Email address", 305 "signup.email.label": "Email address",
308 "signup.emailDuplicate": "A user with that email address already exists", 306 "signup.emailDuplicate": "A user with that email address already exists",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "Disable audio", 317 "tabs.item.disableAudio": "Disable audio",
320 "tabs.item.disableNotifications": "Disable notifications", 318 "tabs.item.disableNotifications": "Disable notifications",
321 "tabs.item.disableService": "Disable service", 319 "tabs.item.disableService": "Disable service",
322 "tabs.item.edit": "Edit",
323 "tabs.item.enableAudio": "Enable audio", 320 "tabs.item.enableAudio": "Enable audio",
324 "tabs.item.enableNotification": "Enable notifications", 321 "tabs.item.enableNotification": "Enable notifications",
325 "tabs.item.enableService": "Enable service", 322 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json
index 573bcce19..dfbfd63a3 100644
--- a/src/i18n/locales/ko.json
+++ b/src/i18n/locales/ko.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "사용자 정의 서버", 4 "changeserver.customServerLabel": "사용자 정의 서버",
5 "changeserver.headline": "서버 번경", 5 "changeserver.headline": "서버 번경",
6 "changeserver.label": "서버", 6 "changeserver.label": "서버",
7 "changeserver.submit": "제출",
8 "changeserver.urlError": "유효한 URL을 입력하세요", 7 "changeserver.urlError": "유효한 URL을 입력하세요",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "서비스 재시작", 9 "connectionLostBanner.cta": "서비스 재시작",
11 "connectionLostBanner.informationLink": "무슨 일인가요?", 10 "connectionLostBanner.informationLink": "무슨 일인가요?",
12 "connectionLostBanner.message": "오 저런! Ferdi가 {name} 과 연결이 끊겼습니다.", 11 "connectionLostBanner.message": "오 저런! Ferdi가 {name} 과 연결이 끊겼습니다.",
13 "feature.announcements.changelog.headline": "Ferdi {version} 변경점", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "디버깅 정보 공개", 13 "feature.debugger.title": "디버깅 정보 공개",
15 "feature.nightlyBuilds.activate": "활성화", 14 "feature.nightlyBuilds.activate": "활성화",
16 "feature.nightlyBuilds.cancel": "취소",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "나이틀리 빌드", 16 "feature.nightlyBuilds.title": "나이틀리 빌드",
19 "feature.publishDebugInfo.error": "디버그 정보를 공개하는데 오류가 발생했습니다. 조금 뒤에 다시 시도하거나 콘솔을 통해 정보를 확인하십시오.", 17 "feature.publishDebugInfo.error": "디버그 정보를 공개하는데 오류가 발생했습니다. 조금 뒤에 다시 시도하거나 콘솔을 통해 정보를 확인하십시오.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "검색...", 25 "feature.quickSwitch.search": "검색...",
28 "feature.quickSwitch.title": "빠른 검색", 26 "feature.quickSwitch.title": "빠른 검색",
29 "global.api.unhealthy": "Ferdi 온라인 서비스에 연결할 수 없습니다.", 27 "global.api.unhealthy": "Ferdi 온라인 서비스에 연결할 수 없습니다.",
28 "global.cancel": "취소",
29 "global.edit": "편집",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "인터넷에 연결할 수 없습니다.", 31 "global.notConnectedToTheInternet": "인터넷에 연결할 수 없습니다.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "설정",
31 "global.spellchecker.useDefault": "시스템 기본 사용 ({default})", 37 "global.spellchecker.useDefault": "시스템 기본 사용 ({default})",
32 "global.spellchecking.autodetect": "언어 자동 탐색", 38 "global.spellchecking.autodetect": "언어 자동 탐색",
33 "global.spellchecking.autodetect.short": "자동", 39 "global.spellchecking.autodetect.short": "자동",
34 "global.spellchecking.language": "철자 검사", 40 "global.spellchecking.language": "철자 검사",
41 "global.submit": "제출",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Ferdi 5에서 아직 지원되지 않는 서비스입니다.", 46 "import.notSupportedHeadline": "Ferdi 5에서 아직 지원되지 않는 서비스입니다.",
39 "import.skip.label": "수동으로 서비스 추가", 47 "import.skip.label": "수동으로 서비스 추가",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Todos 서랍 닫기", 84 "menu.Todoss.closeTodosDrawer": "Todos 서랍 닫기",
77 "menu.Todoss.openTodosDrawer": "Todos 서랍 열기", 85 "menu.Todoss.openTodosDrawer": "Todos 서랍 열기",
78 "menu.app.about": "Ferdi에 대해", 86 "menu.app.about": "Ferdi에 대해",
79 "menu.app.announcement": "변경 사항",
80 "menu.app.autohideMenuBar": "메뉴바 자동 감춤", 87 "menu.app.autohideMenuBar": "메뉴바 자동 감춤",
81 "menu.app.checkForUpdates": "업데이트 확인", 88 "menu.app.checkForUpdates": "업데이트 확인",
82 "menu.app.hide": "숨기기", 89 "menu.app.hide": "숨기기",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "설정",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "편집", 92 "menu.edit": "편집",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "계정에 로그인하세요.", 152 "password.link.login": "계정에 로그인하세요.",
148 "password.link.signup": "무료 계정 생성", 153 "password.link.signup": "무료 계정 생성",
149 "password.noUser": "해당 이메일을 사용하는 유저를 찾을 수 없습니다.", 154 "password.noUser": "해당 이메일을 사용하는 유저를 찾을 수 없습니다.",
150 "password.submit.label": "제출",
151 "password.successInfo": "이메일을 확인해 주세요.", 155 "password.successInfo": "이메일을 확인해 주세요.",
152 "pricing.features.accountSync": "계정 동기화", 156 "pricing.features.accountSync": "계정 동기화",
153 "pricing.features.customWebsites": "사용자 지정 웹사이트 추가", 157 "pricing.features.customWebsites": "사용자 지정 웹사이트 추가",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "베타 버전 포함", 218 "settings.app.form.beta": "베타 버전 포함",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Ferdi 시스템 트레이로 닫기", 220 "settings.app.form.closeToSystemTray": "Ferdi 시스템 트레이로 닫기",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "다크 모드 활성화", 223 "settings.app.form.darkMode": "다크 모드 활성화",
219 "settings.app.form.enableGPUAcceleration": "GPU 가속 사용", 224 "settings.app.form.enableGPUAcceleration": "GPU 가속 사용",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "TouchID로 Ferdi 여는 것을 허용", 256 "settings.app.form.useTouchIdToUnlock": "TouchID로 Ferdi 여는 것을 허용",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "설정",
255 "settings.app.headlineAdvanced": "고급", 259 "settings.app.headlineAdvanced": "고급",
256 "settings.app.headlineAppearance": "모양", 260 "settings.app.headlineAppearance": "모양",
257 "settings.app.headlineGeneral": "일반", 261 "settings.app.headlineGeneral": "일반",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "계정", 285 "settings.navigation.account": "계정",
282 "settings.navigation.availableServices": "사용가능 한 서비스", 286 "settings.navigation.availableServices": "사용가능 한 서비스",
283 "settings.navigation.logout": "로그아웃", 287 "settings.navigation.logout": "로그아웃",
284 "settings.navigation.settings": "설정",
285 "settings.navigation.supportFerdi": "Ferdi에 대해", 288 "settings.navigation.supportFerdi": "Ferdi에 대해",
286 "settings.navigation.team": "팀 관리", 289 "settings.navigation.team": "팀 관리",
287 "settings.navigation.yourServices": "서비스", 290 "settings.navigation.yourServices": "서비스",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "알림 및 알림 소리 비활성화", 417 "sidebar.muteApp": "알림 및 알림 소리 비활성화",
415 "sidebar.openTodosDrawer": "Ferdi Todos 열기", 418 "sidebar.openTodosDrawer": "Ferdi Todos 열기",
416 "sidebar.openWorkspaceDrawer": "작업영역 서랍 열기", 419 "sidebar.openWorkspaceDrawer": "작업영역 서랍 열기",
417 "sidebar.settings": "설정",
418 "sidebar.unmuteApp": "알림과 오디오 활성화", 420 "sidebar.unmuteApp": "알림과 오디오 활성화",
419 "signup.email.label": "이메일 주소", 421 "signup.email.label": "이메일 주소",
420 "signup.emailDuplicate": "해당 이메일을 가진 사용자가 이미 존재합니다", 422 "signup.emailDuplicate": "해당 이메일을 가진 사용자가 이미 존재합니다",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "알림 비활성화", 436 "tabs.item.disableNotifications": "알림 비활성화",
435 "tabs.item.disableService": "서비스 비활성화", 437 "tabs.item.disableService": "서비스 비활성화",
436 "tabs.item.edit": "편집",
437 "tabs.item.enableAudio": "오디오 활성화", 438 "tabs.item.enableAudio": "오디오 활성화",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "알림 허용", 440 "tabs.item.enableNotification": "알림 허용",
diff --git a/src/i18n/locales/ms.json b/src/i18n/locales/ms.json
index 6f92bf4de..86e2aa9c5 100644
--- a/src/i18n/locales/ms.json
+++ b/src/i18n/locales/ms.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Beritahu rakan anda betapa hebatnya Ferdi dan bantu kami menyebarkan maklumat ini", 14 "feature.shareFranz.text": "Beritahu rakan anda betapa hebatnya Ferdi dan bantu kami menyebarkan maklumat ini",
15 "global.api.unhealthy": "Tidak dapat bersambung ke perkhidmatan dalam talian Ferdi", 15 "global.api.unhealthy": "Tidak dapat bersambung ke perkhidmatan dalam talian Ferdi",
16 "global.edit": "Ubahsuai",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "Anda tidak disambungkan ke internet.", 18 "global.notConnectedToTheInternet": "Anda tidak disambungkan ke internet.",
19 "global.quit": "Keluar",
20 "global.settings": "Tetapan",
18 "global.spellchecker.useDefault": "Gunakan System Default ({default})", 21 "global.spellchecker.useDefault": "Gunakan System Default ({default})",
19 "global.spellchecking.autodetect": "Kesan bahasa secara automatik", 22 "global.spellchecking.autodetect": "Kesan bahasa secara automatik",
20 "global.spellchecking.autodetect.short": "Automatik", 23 "global.spellchecking.autodetect.short": "Automatik",
21 "global.spellchecking.language": "Bahasa untuk semakan ejaan", 24 "global.spellchecking.language": "Bahasa untuk semakan ejaan",
25 "global.submit": "Hantar",
22 "import.headline": "Import perkhidmatan Ferdi 4 anda", 26 "import.headline": "Import perkhidmatan Ferdi 4 anda",
23 "import.notSupportedHeadline": "Perkhidmatan belum disokong dalam Ferdi 5", 27 "import.notSupportedHeadline": "Perkhidmatan belum disokong dalam Ferdi 5",
24 "import.skip.label": "Saya mahu menambah perkhidmatan secara manual", 28 "import.skip.label": "Saya mahu menambah perkhidmatan secara manual",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Semak untuk kemaskini", 55 "menu.app.checkForUpdates": "Semak untuk kemaskini",
52 "menu.app.hide": "Sorokkan", 56 "menu.app.hide": "Sorokkan",
53 "menu.app.hideOthers": "Sorokkan yang lain-lain", 57 "menu.app.hideOthers": "Sorokkan yang lain-lain",
54 "menu.app.quit": "Keluar",
55 "menu.app.settings": "Tetapan",
56 "menu.app.unhide": "Nyahsorok", 58 "menu.app.unhide": "Nyahsorok",
57 "menu.edit": "Ubahsuai", 59 "menu.edit": "Ubahsuai",
58 "menu.edit.copy": "Salin", 60 "menu.edit.copy": "Salin",
@@ -109,7 +111,6 @@
109 "password.link.login": "Log masuk akaun kamu", 111 "password.link.login": "Log masuk akaun kamu",
110 "password.link.signup": "Buka akaun baru percuma", 112 "password.link.signup": "Buka akaun baru percuma",
111 "password.noUser": "Tiada pengguna dengan alamat e-mel tersebut dijumpai", 113 "password.noUser": "Tiada pengguna dengan alamat e-mel tersebut dijumpai",
112 "password.submit.label": "Hantar",
113 "password.successInfo": "Sila semak e-mel anda", 114 "password.successInfo": "Sila semak e-mel anda",
114 "pricing.features.accountSync": "Account Synchronisation", 115 "pricing.features.accountSync": "Account Synchronisation",
115 "pricing.features.adFree": "Forever ad-free", 116 "pricing.features.adFree": "Forever ad-free",
@@ -178,7 +179,6 @@
178 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 179 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
179 "settings.app.form.showDisabledServices": "Display disabled services tabs", 180 "settings.app.form.showDisabledServices": "Display disabled services tabs",
180 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 181 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
181 "settings.app.headline": "Tetapan",
182 "settings.app.headlineAdvanced": "Advanced", 182 "settings.app.headlineAdvanced": "Advanced",
183 "settings.app.headlineAppearance": "Appearance", 183 "settings.app.headlineAppearance": "Appearance",
184 "settings.app.headlineGeneral": "General", 184 "settings.app.headlineGeneral": "General",
@@ -196,7 +196,6 @@
196 "settings.navigation.availableServices": "Available services", 196 "settings.navigation.availableServices": "Available services",
197 "settings.navigation.inviteFriends": "Invite Friends", 197 "settings.navigation.inviteFriends": "Invite Friends",
198 "settings.navigation.logout": "Logout", 198 "settings.navigation.logout": "Logout",
199 "settings.navigation.settings": "Tetapan",
200 "settings.navigation.team": "Manage Team", 199 "settings.navigation.team": "Manage Team",
201 "settings.navigation.yourServices": "Your services", 200 "settings.navigation.yourServices": "Your services",
202 "settings.navigation.yourWorkspaces": "Your workspaces", 201 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -302,7 +301,6 @@
302 "sidebar.muteApp": "Disable notifications & audio", 301 "sidebar.muteApp": "Disable notifications & audio",
303 "sidebar.openTodosDrawer": "Open Ferdi Todos", 302 "sidebar.openTodosDrawer": "Open Ferdi Todos",
304 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 303 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
305 "sidebar.settings": "Tetapan",
306 "sidebar.unmuteApp": "Enable notifications & audio", 304 "sidebar.unmuteApp": "Enable notifications & audio",
307 "signup.email.label": "Email address", 305 "signup.email.label": "Email address",
308 "signup.emailDuplicate": "A user with that email address already exists", 306 "signup.emailDuplicate": "A user with that email address already exists",
@@ -319,7 +317,6 @@
319 "tabs.item.disableAudio": "Disable audio", 317 "tabs.item.disableAudio": "Disable audio",
320 "tabs.item.disableNotifications": "Disable notifications", 318 "tabs.item.disableNotifications": "Disable notifications",
321 "tabs.item.disableService": "Disable service", 319 "tabs.item.disableService": "Disable service",
322 "tabs.item.edit": "Ubahsuai",
323 "tabs.item.enableAudio": "Enable audio", 320 "tabs.item.enableAudio": "Enable audio",
324 "tabs.item.enableNotification": "Enable notifications", 321 "tabs.item.enableNotification": "Enable notifications",
325 "tabs.item.enableService": "Enable service", 322 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/nb.json b/src/i18n/locales/nb.json
index c2f9f0e53..38bba58b2 100644
--- a/src/i18n/locales/nb.json
+++ b/src/i18n/locales/nb.json
@@ -1,144 +1,142 @@
1{ 1{
2 "global.api.unhealthy": "Kan ikke koble til Ferdi' tjenester", 2 "global.api.unhealthy": "Kan ikke koble til Ferdi' tjenester",
3 "global.edit": "Rediger",
3 "global.notConnectedToTheInternet": "Du er ikke koblet til internett.", 4 "global.notConnectedToTheInternet": "Du er ikke koblet til internett.",
4 "welcome.signupButton": "Opprett en gratis konto", 5 "global.settings": "Innstillinger",
5 "welcome.loginButton": "Logg inn til din konto", 6 "global.submit": "Send inn",
6 "welcome.slogan": "Teksting som funker for deg", 7 "import.headline": "Importer dine Ferdi 4 tjenester",
7 "login.headline": "Logg inn", 8 "import.notSupportedHeadline": "Tjenester ikke enda støttet i Ferdi 5",
9 "import.skip.label": "Jeg vil legge til en tjeneste manuelt",
10 "import.submit.label": "Importer tjenester",
11 "infobar.buttonInstallUpdate": "Restart & installer oppdatering",
12 "infobar.buttonReloadServices": "Oppdater tjenester",
13 "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon",
14 "infobar.servicesUpdated": "Dine tjenester er oppdatert.",
15 "infobar.updateAvailable": "En ny oppdatering for Ferdi er tilgjengelig.",
16 "invite.email.label": "Email adresse",
17 "invite.headline.friends": "Inviter 3 av dine venner eller kolleger",
18 "invite.name.label": "Navn",
19 "invite.skip.label": "Jeg vil gjøre dette senere",
20 "invite.submit.label": "Send invitasjoner",
8 "login.email.label": "Email adresse", 21 "login.email.label": "Email adresse",
22 "login.headline": "Logg inn",
23 "login.invalidCredentials": "Ugyldig email eller passord",
24 "login.link.password": "Reset passord",
25 "login.link.signup": "Opprett en gratis konto",
9 "login.password.label": "Passord", 26 "login.password.label": "Passord",
27 "login.serverLogout": "Din økt utløpte, vennligst logg inn igjen.",
10 "login.submit.label": "Logg inn", 28 "login.submit.label": "Logg inn",
11 "login.invalidCredentials": "Ugyldig email eller passord",
12 "login.tokenExpired": "Din økt utløpte, vennligst logg inn igjen.", 29 "login.tokenExpired": "Din økt utløpte, vennligst logg inn igjen.",
13 "login.serverLogout": "Din økt utløpte, vennligst logg inn igjen.",
14 "login.link.signup": "Opprett en gratis konto",
15 "login.link.password": "Reset passord",
16 "password.headline": "Reset passord",
17 "password.email.label": "Email adresse", 30 "password.email.label": "Email adresse",
18 "password.submit.label": "Send inn", 31 "password.headline": "Reset passord",
32 "password.link.login": "Logg inn til din konto",
33 "password.link.signup": "Opprett en gratis konto",
19 "password.noUser": "Ingen bruker med den emailen finnes", 34 "password.noUser": "Ingen bruker med den emailen finnes",
20 "password.successInfo": "Vennligst sjekk din email", 35 "password.successInfo": "Vennligst sjekk din email",
21 "password.link.signup": "Opprett en gratis konto",
22 "password.link.login": "Logg inn til din konto",
23 "signup.headline": "Registrer deg",
24 "signup.firstname.label": "Fornavn",
25 "signup.lastname.label": "Etternavn",
26 "signup.email.label": "Email adresse",
27 "signup.company.label": "Firma",
28 "signup.password.label": "Passord",
29 "signup.submit.label": "Opprett konto",
30 "signup.link.login": "Har du allerede en konto? Logg inn",
31 "signup.emailDuplicate": "En konto med den epost adresse eksiterer allerede",
32 "signup.legal.info": "Ved å opprette en Ferdi konto aksepterer du",
33 "signup.legal.terms": "Vilkår for bruk",
34 "signup.legal.privacy": "Personvern",
35 "pricing.headline": "Støtt Ferdi", 36 "pricing.headline": "Støtt Ferdi",
36 "pricing.support.label": "Velg din støtteplan",
37 "pricing.submit.label": "Jeg vil støtte utviklingen av Ferdi",
38 "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Ferdi.", 37 "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Ferdi.",
39 "import.headline": "Importer dine Ferdi 4 tjenester", 38 "pricing.submit.label": "Jeg vil støtte utviklingen av Ferdi",
40 "import.notSupportedHeadline": "Tjenester ikke enda støttet i Ferdi 5", 39 "pricing.support.label": "Velg din støtteplan",
41 "import.submit.label": "Importer tjenester",
42 "import.skip.label": "Jeg vil legge til en tjeneste manuelt",
43 "invite.submit.label": "Send invitasjoner",
44 "invite.headline.friends": "Inviter 3 av dine venner eller kolleger",
45 "invite.name.label": "Navn",
46 "invite.email.label": "Email adresse",
47 "invite.skip.label": "Jeg vil gjøre dette senere",
48 "infobar.servicesUpdated": "Dine tjenester er oppdatert.",
49 "infobar.updateAvailable": "En ny oppdatering for Ferdi er tilgjengelig.",
50 "infobar.buttonReloadServices": "Oppdater tjenester",
51 "infobar.buttonInstallUpdate": "Restart & installer oppdatering",
52 "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon",
53 "sidebar.settings": "Innstillinger",
54 "sidebar.addNewService": "Legg til ny tjeneste",
55 "services.welcome": "Velkommen til Ferdi",
56 "services.getStarted": "Kom i gang", 40 "services.getStarted": "Kom i gang",
57 "settings.account.headline": "Konto", 41 "services.welcome": "Velkommen til Ferdi",
58 "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Ferdi", 42 "settings.account.account.editButton": "Rediger konto",
59 "settings.account.accountType.basic": "Enkel Konto", 43 "settings.account.accountType.basic": "Enkel Konto",
60 "settings.account.accountType.premium": "Premium Konto", 44 "settings.account.accountType.premium": "Premium Konto",
61 "settings.account.account.editButton": "Rediger konto", 45 "settings.account.buttonSave": "Oppdater profil",
62 "settings.account.userInfoRequestFailed": "Kunne ikke laste brukerinformasjon", 46 "settings.account.headline": "Konto",
63 "settings.account.tryReloadUserInfoRequest": "Prøv igjen",
64 "settings.account.headlineProfile": "Oppdater profil",
65 "settings.account.headlineAccount": "Kontoinformasjon", 47 "settings.account.headlineAccount": "Kontoinformasjon",
66 "settings.account.headlinePassword": "Endre passord", 48 "settings.account.headlinePassword": "Endre passord",
67 "settings.account.successInfo": "Dine endringer er lagret", 49 "settings.account.headlineProfile": "Oppdater profil",
68 "settings.account.buttonSave": "Oppdater profil", 50 "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Ferdi",
69 "settings.account.mining.thankyou": "Takk for at du støtter Ferdi med din prosessorkraft.",
70 "settings.account.mining.active": "Du utfører nå {hashes} beregninger per sekund.", 51 "settings.account.mining.active": "Du utfører nå {hashes} beregninger per sekund.",
71 "settings.account.mining.moreInformation": "Få mer informasjon",
72 "settings.account.mining.cancel": "Avbryt mining", 52 "settings.account.mining.cancel": "Avbryt mining",
73 "settings.navigation.availableServices": "Tilgjengelige tjenester", 53 "settings.account.mining.moreInformation": "Få mer informasjon",
74 "settings.navigation.yourServices": "Dine tjenester", 54 "settings.account.mining.thankyou": "Takk for at du støtter Ferdi med din prosessorkraft.",
55 "settings.account.successInfo": "Dine endringer er lagret",
56 "settings.account.tryReloadUserInfoRequest": "Prøv igjen",
57 "settings.account.userInfoRequestFailed": "Kunne ikke laste brukerinformasjon",
58 "settings.app.buttonInstallUpdate": "Restart & installer oppdatering",
59 "settings.app.buttonSearchForUpdate": "Se etter oppdateringer",
60 "settings.app.currentVersion": "Gjeldende versjon:",
61 "settings.app.form.autoLaunchInBackground": "Åpne i bakgrunnen",
62 "settings.app.form.autoLaunchOnStart": "Start Ferdi ved oppstart",
63 "settings.app.form.beta": "Inkluder beta versjoner",
64 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
65 "settings.app.form.enableSystemTray": "Vis Ferdi i systemfeltet",
66 "settings.app.form.language": "Språk",
67 "settings.app.form.minimizeToSystemTray": "Minimer Ferdi til systemfeltet",
68 "settings.app.form.runInBackground": "Behold Ferdi i bakgrunnen når du lukker vinduet",
69 "settings.app.headlineGeneral": "Genelert",
70 "settings.app.headlineLanguage": "Språk",
71 "settings.app.headlineUpdates": "Oppdateringer",
72 "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...",
73 "settings.app.updateStatusSearching": "Søker etter en oppdatering",
74 "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Ferdi",
75 "settings.navigation.account": "Konto", 75 "settings.navigation.account": "Konto",
76 "settings.navigation.settings": "Innstillinger", 76 "settings.navigation.availableServices": "Tilgjengelige tjenester",
77 "settings.navigation.logout": "Logg ut", 77 "settings.navigation.logout": "Logg ut",
78 "settings.recipes.headline": "Tilgjengelige tjenester", 78 "settings.navigation.yourServices": "Dine tjenester",
79 "settings.recipes.all": "Alle tjenester", 79 "settings.recipes.all": "Alle tjenester",
80 "settings.recipes.dev": "Utvikling", 80 "settings.recipes.dev": "Utvikling",
81 "settings.recipes.headline": "Tilgjengelige tjenester",
81 "settings.recipes.nothingFound": "Beklager, men ingen tjeneste samsvarer med søkeordet ditt.", 82 "settings.recipes.nothingFound": "Beklager, men ingen tjeneste samsvarer med søkeordet ditt.",
82 "settings.recipes.servicesSuccessfulAddedInfo": "Tjenesten ble lagt til", 83 "settings.recipes.servicesSuccessfulAddedInfo": "Tjenesten ble lagt til",
83 "settings.service.form.saveButton": "Lagre tjeneste", 84 "settings.service.error.goBack": "Tilbake til tjenester",
84 "settings.service.form.deleteButton": "Slett tjeneste", 85 "settings.service.error.headline": "Error",
85 "settings.service.form.availableServices": "Tilgjengelige tjenester", 86 "settings.service.error.message": "Kunne ikke laste tjeneste oppskrift.",
86 "settings.service.form.yourServices": "Dine tjenester",
87 "settings.service.form.addServiceHeadline": "Legg til {name}", 87 "settings.service.form.addServiceHeadline": "Legg til {name}",
88 "settings.service.form.editServiceHeadline": "Rediger {name}", 88 "settings.service.form.availableServices": "Tilgjengelige tjenester",
89 "settings.service.form.tabHosted": "Hosted", 89 "settings.service.form.customUrl": "Egendefinert server",
90 "settings.service.form.tabOnPremise": "Selv hosted ⭐️",
91 "settings.service.form.customUrlValidationError": "Kunne ikke validere egendefinert {name} server.",
92 "settings.service.form.customUrlPremiumInfo": "For å legge til selvhost-baserte tjenester trenger du en Ferdi Premium konto.", 90 "settings.service.form.customUrlPremiumInfo": "For å legge til selvhost-baserte tjenester trenger du en Ferdi Premium konto.",
93 "settings.service.form.customUrlUpgradeAccount": "Oppgrader din konto", 91 "settings.service.form.customUrlUpgradeAccount": "Oppgrader din konto",
92 "settings.service.form.customUrlValidationError": "Kunne ikke validere egendefinert {name} server.",
93 "settings.service.form.deleteButton": "Slett tjeneste",
94 "settings.service.form.editServiceHeadline": "Rediger {name}",
95 "settings.service.form.enableNotification": "Slå på varsler",
96 "settings.service.form.enableService": "Slå på tjeneste",
94 "settings.service.form.indirectMessageInfo": "Du vil bli varslet om alle nye meldinger i en kanal, ikke bare @brukernavn, @kanal, @here, ...", 97 "settings.service.form.indirectMessageInfo": "Du vil bli varslet om alle nye meldinger i en kanal, ikke bare @brukernavn, @kanal, @here, ...",
95 "settings.service.error.headline": "Error", 98 "settings.service.form.indirectMessages": "Vis merke for alle nye meldinger",
96 "settings.service.error.goBack": "Tilbake til tjenester", 99 "settings.service.form.name": "Navn",
97 "settings.service.error.message": "Kunne ikke laste tjeneste oppskrift.", 100 "settings.service.form.saveButton": "Lagre tjeneste",
98 "settings.services.tooltip.isDisabled": "Tjenesten er deaktivert", 101 "settings.service.form.tabHosted": "Hosted",
99 "settings.services.tooltip.notificationsDisabled": "Varsler er deaktivert", 102 "settings.service.form.tabOnPremise": "Selv hosted ⭐️",
103 "settings.service.form.team": "Lag",
104 "settings.service.form.yourServices": "Dine tjenester",
105 "settings.services.deletedInfo": "Tjenester har blitt slettet",
106 "settings.services.discoverServices": "Oppdag tjenester",
100 "settings.services.headline": "Dine tjenester", 107 "settings.services.headline": "Dine tjenester",
101 "settings.services.noServicesAdded": "Du har ikke lagt til noen tjenester enda.", 108 "settings.services.noServicesAdded": "Du har ikke lagt til noen tjenester enda.",
102 "settings.services.discoverServices": "Oppdag tjenester", 109 "settings.services.tooltip.isDisabled": "Tjenesten er deaktivert",
110 "settings.services.tooltip.notificationsDisabled": "Varsler er deaktivert",
103 "settings.services.updatedInfo": "Dine endringer er lagret", 111 "settings.services.updatedInfo": "Dine endringer er lagret",
104 "settings.services.deletedInfo": "Tjenester har blitt slettet", 112 "settings.user.form.accountType.company": "Firma",
105 "settings.app.headline": "Innstillinger", 113 "settings.user.form.accountType.individual": "Individuell",
106 "settings.app.headlineGeneral": "Genelert", 114 "settings.user.form.accountType.label": "Konto type",
107 "settings.app.headlineLanguage": "Språk", 115 "settings.user.form.accountType.non-profit": "Non-Profit",
108 "settings.app.headlineUpdates": "Oppdateringer", 116 "settings.user.form.currentPassword": "Gjeldende passord",
109 "settings.app.buttonSearchForUpdate": "Se etter oppdateringer", 117 "settings.user.form.email": "Email",
110 "settings.app.buttonInstallUpdate": "Restart & installer oppdatering",
111 "settings.app.updateStatusSearching": "Søker etter en oppdatering",
112 "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...",
113 "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Ferdi",
114 "settings.app.form.autoLaunchOnStart": "Start Ferdi ved oppstart",
115 "settings.app.form.autoLaunchInBackground": "Åpne i bakgrunnen",
116 "settings.app.form.enableSystemTray": "Vis Ferdi i systemfeltet",
117 "settings.app.form.minimizeToSystemTray": "Minimer Ferdi til systemfeltet",
118 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
119 "settings.app.form.runInBackground": "Behold Ferdi i bakgrunnen når du lukker vinduet",
120 "settings.app.form.language": "Språk",
121 "settings.app.form.beta": "Inkluder beta versjoner",
122 "settings.app.currentVersion": "Gjeldende versjon:",
123 "settings.service.form.name": "Navn",
124 "settings.service.form.enableService": "Slå på tjeneste",
125 "settings.service.form.enableNotification": "Slå på varsler",
126 "settings.service.form.team": "Lag",
127 "settings.service.form.customUrl": "Egendefinert server",
128 "settings.service.form.indirectMessages": "Vis merke for alle nye meldinger",
129 "settings.user.form.firstname": "Fornavn", 118 "settings.user.form.firstname": "Fornavn",
130 "settings.user.form.lastname": "Etternavn", 119 "settings.user.form.lastname": "Etternavn",
131 "settings.user.form.email": "Email",
132 "settings.user.form.currentPassword": "Gjeldende passord",
133 "settings.user.form.newPassword": "Nytt passord", 120 "settings.user.form.newPassword": "Nytt passord",
134 "settings.user.form.accountType.label": "Konto type", 121 "sidebar.addNewService": "Legg til ny tjeneste",
135 "settings.user.form.accountType.individual": "Individuell", 122 "signup.company.label": "Firma",
136 "settings.user.form.accountType.non-profit": "Non-Profit", 123 "signup.email.label": "Email adresse",
137 "settings.user.form.accountType.company": "Firma", 124 "signup.emailDuplicate": "En konto med den epost adresse eksiterer allerede",
138 "tabs.item.reload": "Reload", 125 "signup.firstname.label": "Fornavn",
139 "tabs.item.edit": "Rediger", 126 "signup.headline": "Registrer deg",
127 "signup.lastname.label": "Etternavn",
128 "signup.legal.info": "Ved å opprette en Ferdi konto aksepterer du",
129 "signup.legal.privacy": "Personvern",
130 "signup.legal.terms": "Vilkår for bruk",
131 "signup.link.login": "Har du allerede en konto? Logg inn",
132 "signup.password.label": "Passord",
133 "signup.submit.label": "Opprett konto",
134 "tabs.item.deleteService": "Slett tjeneste",
140 "tabs.item.disableNotifications": "Deaktiver varsler", 135 "tabs.item.disableNotifications": "Deaktiver varsler",
141 "tabs.item.enableNotification": "Aktiver varsler",
142 "tabs.item.disableService": "Deaktiver tjeneste", 136 "tabs.item.disableService": "Deaktiver tjeneste",
143 "tabs.item.deleteService": "Slett tjeneste" 137 "tabs.item.enableNotification": "Aktiver varsler",
138 "tabs.item.reload": "Reload",
139 "welcome.loginButton": "Logg inn til din konto",
140 "welcome.signupButton": "Opprett en gratis konto",
141 "welcome.slogan": "Teksting som funker for deg"
144} 142}
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index e38a06004..b9ca228ba 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Aangepaste server", 4 "changeserver.customServerLabel": "Aangepaste server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Verzenden",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Service Herladen", 9 "connectionLostBanner.cta": "Service Herladen",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Wijzigingen in Ferdi {versie}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Annuleren",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi services", 27 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi services",
28 "global.cancel": "Annuleren",
29 "global.edit": "Bewerken",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Je hebt geen internet verbinding.", 31 "global.notConnectedToTheInternet": "Je hebt geen internet verbinding.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Instellingen",
31 "global.spellchecker.useDefault": "Gebruik Systeemstandaard ({default})", 37 "global.spellchecker.useDefault": "Gebruik Systeemstandaard ({default})",
32 "global.spellchecking.autodetect": "Taal automatisch herkennen", 38 "global.spellchecking.autodetect": "Taal automatisch herkennen",
33 "global.spellchecking.autodetect.short": "Automatisch", 39 "global.spellchecking.autodetect.short": "Automatisch",
34 "global.spellchecking.language": "Taal spellingscontrole", 40 "global.spellchecking.language": "Taal spellingscontrole",
41 "global.submit": "Verzenden",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importeer je Ferdi 4 services", 45 "import.headline": "Importeer je Ferdi 4 services",
38 "import.notSupportedHeadline": "De volgende services worden nog niet ondersteund in Ferdi 5", 46 "import.notSupportedHeadline": "De volgende services worden nog niet ondersteund in Ferdi 5",
39 "import.skip.label": "Ik wil services handmatig toevoegen", 47 "import.skip.label": "Ik wil services handmatig toevoegen",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Over Ferdi", 86 "menu.app.about": "Over Ferdi",
79 "menu.app.announcement": "Wat is er nieuw?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Controleer op updates", 88 "menu.app.checkForUpdates": "Controleer op updates",
82 "menu.app.hide": "Verbergen", 89 "menu.app.hide": "Verbergen",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Instellingen",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Bewerken", 92 "menu.edit": "Bewerken",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Log in op je account", 152 "password.link.login": "Log in op je account",
148 "password.link.signup": "Maak een gratis account aan", 153 "password.link.signup": "Maak een gratis account aan",
149 "password.noUser": "Geen gebruiker gevonden met dat e-mailadres", 154 "password.noUser": "Geen gebruiker gevonden met dat e-mailadres",
150 "password.submit.label": "Verzenden",
151 "password.successInfo": "Controleer alsjeblieft je e-mail", 155 "password.successInfo": "Controleer alsjeblieft je e-mail",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Inclusief beta versies", 218 "settings.app.form.beta": "Inclusief beta versies",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "GPU Acceleratie Activeren", 224 "settings.app.form.enableGPUAcceleration": "GPU Acceleratie Activeren",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Instellingen",
255 "settings.app.headlineAdvanced": "Geavanceerd", 259 "settings.app.headlineAdvanced": "Geavanceerd",
256 "settings.app.headlineAppearance": "Weergave", 260 "settings.app.headlineAppearance": "Weergave",
257 "settings.app.headlineGeneral": "Algemeen", 261 "settings.app.headlineGeneral": "Algemeen",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Beschikbare services", 286 "settings.navigation.availableServices": "Beschikbare services",
283 "settings.navigation.logout": "Uitloggen", 287 "settings.navigation.logout": "Uitloggen",
284 "settings.navigation.settings": "Instellingen",
285 "settings.navigation.supportFerdi": "Over Ferdi", 288 "settings.navigation.supportFerdi": "Over Ferdi",
286 "settings.navigation.team": "Beheer Team", 289 "settings.navigation.team": "Beheer Team",
287 "settings.navigation.yourServices": "Jouw services", 290 "settings.navigation.yourServices": "Jouw services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Berichten & geluid uitschakelen", 417 "sidebar.muteApp": "Berichten & geluid uitschakelen",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Werkruimtepagina openen", 419 "sidebar.openWorkspaceDrawer": "Werkruimtepagina openen",
417 "sidebar.settings": "Instellingen",
418 "sidebar.unmuteApp": "Berichten & geluid inschakelen", 420 "sidebar.unmuteApp": "Berichten & geluid inschakelen",
419 "signup.email.label": "E-mailadres", 421 "signup.email.label": "E-mailadres",
420 "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres", 422 "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Notificaties uitschakelen", 436 "tabs.item.disableNotifications": "Notificaties uitschakelen",
435 "tabs.item.disableService": "Service uitschakelen", 437 "tabs.item.disableService": "Service uitschakelen",
436 "tabs.item.edit": "Bewerken",
437 "tabs.item.enableAudio": "Audio inschakelen", 438 "tabs.item.enableAudio": "Audio inschakelen",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Notificaties aanzetten", 440 "tabs.item.enableNotification": "Notificaties aanzetten",
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index 35359f542..eac72627f 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Aangepaste server", 4 "changeserver.customServerLabel": "Aangepaste server",
5 "changeserver.headline": "Server wijzigen", 5 "changeserver.headline": "Server wijzigen",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Verzenden",
8 "changeserver.urlError": "Vul een geldige URL in", 7 "changeserver.urlError": "Vul een geldige URL in",
9 "changeserver.warning": "Extra instellingen van Ferdi worden niet opgeslagen", 8 "changeserver.warning": "Extra instellingen van Ferdi worden niet opgeslagen",
10 "connectionLostBanner.cta": "Een service opnieuw laden", 9 "connectionLostBanner.cta": "Een service opnieuw laden",
11 "connectionLostBanner.informationLink": "Wat gebeurde er?", 10 "connectionLostBanner.informationLink": "Wat gebeurde er?",
12 "connectionLostBanner.message": "Oh nee! Ferdi heeft de verbinding met {name} verloren.", 11 "connectionLostBanner.message": "Oh nee! Ferdi heeft de verbinding met {name} verloren.",
13 "feature.announcements.changelog.headline": "Wijzigingen in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Foutopsporingsinformatie publiceren", 13 "feature.debugger.title": "Foutopsporingsinformatie publiceren",
15 "feature.nightlyBuilds.activate": "Activeren", 14 "feature.nightlyBuilds.activate": "Activeren",
16 "feature.nightlyBuilds.cancel": "Annuleer",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nachtelijke builds", 16 "feature.nightlyBuilds.title": "Nachtelijke builds",
19 "feature.publishDebugInfo.error": "Er is een fout opgetreden tijdens het publiceren van de debug informatie. Probeer het later opnieuw of bekijk de console voor meer informatie.", 17 "feature.publishDebugInfo.error": "Er is een fout opgetreden tijdens het publiceren van de debug informatie. Probeer het later opnieuw of bekijk de console voor meer informatie.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Zoeken...", 25 "feature.quickSwitch.search": "Zoeken...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi-services.", 27 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi-services.",
28 "global.cancel": "Annuleer",
29 "global.edit": "Bewerk",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "U bent niet verbonden met het internet.", 31 "global.notConnectedToTheInternet": "U bent niet verbonden met het internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Instellingen",
31 "global.spellchecker.useDefault": "Gebruik systeemstandaard ({default})", 37 "global.spellchecker.useDefault": "Gebruik systeemstandaard ({default})",
32 "global.spellchecking.autodetect": "Taal automatisch herkennen", 38 "global.spellchecking.autodetect": "Taal automatisch herkennen",
33 "global.spellchecking.autodetect.short": "Automatisch", 39 "global.spellchecking.autodetect.short": "Automatisch",
34 "global.spellchecking.language": "Taal voor spellingcontrole", 40 "global.spellchecking.language": "Taal voor spellingcontrole",
41 "global.submit": "Verzenden",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importeer uw Ferdi 4-services", 45 "import.headline": "Importeer uw Ferdi 4-services",
38 "import.notSupportedHeadline": "Services die (nog) niet ondersteund worden in Ferdi 5", 46 "import.notSupportedHeadline": "Services die (nog) niet ondersteund worden in Ferdi 5",
39 "import.skip.label": "Ik wil diensten handmatig toevoegen", 47 "import.skip.label": "Ik wil diensten handmatig toevoegen",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Over Ferdi", 86 "menu.app.about": "Over Ferdi",
79 "menu.app.announcement": "Wat is nieuw?",
80 "menu.app.autohideMenuBar": "Menubalk automatisch verbergen", 87 "menu.app.autohideMenuBar": "Menubalk automatisch verbergen",
81 "menu.app.checkForUpdates": "Controleer op updates", 88 "menu.app.checkForUpdates": "Controleer op updates",
82 "menu.app.hide": "Verbergen", 89 "menu.app.hide": "Verbergen",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Instellingen",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Bewerk", 92 "menu.edit": "Bewerk",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Log in op je account", 152 "password.link.login": "Log in op je account",
148 "password.link.signup": "Maak een gratis account aan", 153 "password.link.signup": "Maak een gratis account aan",
149 "password.noUser": "Geen gebruiker bekend met dat e-mailadres", 154 "password.noUser": "Geen gebruiker bekend met dat e-mailadres",
150 "password.submit.label": "Verzenden",
151 "password.successInfo": "Controleer je e-mail", 155 "password.successInfo": "Controleer je e-mail",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Inclusief bètaversies", 218 "settings.app.form.beta": "Inclusief bètaversies",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Schakel videokaart-acceleratie in ", 224 "settings.app.form.enableGPUAcceleration": "Schakel videokaart-acceleratie in ",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Instellingen",
255 "settings.app.headlineAdvanced": "Geavanceerd", 259 "settings.app.headlineAdvanced": "Geavanceerd",
256 "settings.app.headlineAppearance": "Weergave", 260 "settings.app.headlineAppearance": "Weergave",
257 "settings.app.headlineGeneral": "Algemeen", 261 "settings.app.headlineGeneral": "Algemeen",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Beschikbare services", 286 "settings.navigation.availableServices": "Beschikbare services",
283 "settings.navigation.logout": "Uitloggen", 287 "settings.navigation.logout": "Uitloggen",
284 "settings.navigation.settings": "Instellingen",
285 "settings.navigation.supportFerdi": "Over Ferdi", 288 "settings.navigation.supportFerdi": "Over Ferdi",
286 "settings.navigation.team": "Beheer Team", 289 "settings.navigation.team": "Beheer Team",
287 "settings.navigation.yourServices": "Jouw services", 290 "settings.navigation.yourServices": "Jouw services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Berichten & geluid uitschakelen", 417 "sidebar.muteApp": "Berichten & geluid uitschakelen",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Werkruimtepagina openen", 419 "sidebar.openWorkspaceDrawer": "Werkruimtepagina openen",
417 "sidebar.settings": "Instellingen",
418 "sidebar.unmuteApp": "Berichten & geluid inschakelen", 420 "sidebar.unmuteApp": "Berichten & geluid inschakelen",
419 "signup.email.label": "E-mailadres", 421 "signup.email.label": "E-mailadres",
420 "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres", 422 "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Meldingen uitschakelen", 436 "tabs.item.disableNotifications": "Meldingen uitschakelen",
435 "tabs.item.disableService": "Service uitschakelen", 437 "tabs.item.disableService": "Service uitschakelen",
436 "tabs.item.edit": "Bewerk",
437 "tabs.item.enableAudio": "Audio inschakelen", 438 "tabs.item.enableAudio": "Audio inschakelen",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Meldingen inschakelen", 440 "tabs.item.enableNotification": "Meldingen inschakelen",
diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json
index ea5d4465a..548cba3ce 100644
--- a/src/i18n/locales/no.json
+++ b/src/i18n/locales/no.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Egendefinert tjener", 4 "changeserver.customServerLabel": "Egendefinert tjener",
5 "changeserver.headline": "Bytt tjener", 5 "changeserver.headline": "Bytt tjener",
6 "changeserver.label": "Tjener", 6 "changeserver.label": "Tjener",
7 "changeserver.submit": "Send",
8 "changeserver.urlError": "Angi en gyldig nettadresse", 7 "changeserver.urlError": "Angi en gyldig nettadresse",
9 "changeserver.warning": "Ekstra innstillinger som tilbys av Ferdi vil ikke bli lagret", 8 "changeserver.warning": "Ekstra innstillinger som tilbys av Ferdi vil ikke bli lagret",
10 "connectionLostBanner.cta": "Last inn tjenesten på nytt", 9 "connectionLostBanner.cta": "Last inn tjenesten på nytt",
11 "connectionLostBanner.informationLink": "Hva skjedde?", 10 "connectionLostBanner.informationLink": "Hva skjedde?",
12 "connectionLostBanner.message": "Å nei! Ferdi mistet forbindelsen til {name}.", 11 "connectionLostBanner.message": "Å nei! Ferdi mistet forbindelsen til {name}.",
13 "feature.announcements.changelog.headline": "Endringer i Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publiser feilsøkingsinformasjon", 13 "feature.debugger.title": "Publiser feilsøkingsinformasjon",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Avbryt",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Det oppstod en feil under forsøket på å publisere feilsøkingsinformasjonen. Prøv igjen senere eller se i konsollet for ytterligere informasjon.", 17 "feature.publishDebugInfo.error": "Det oppstod en feil under forsøket på å publisere feilsøkingsinformasjonen. Prøv igjen senere eller se i konsollet for ytterligere informasjon.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Søk...", 25 "feature.quickSwitch.search": "Søk...",
28 "feature.quickSwitch.title": "Hurtigbytte", 26 "feature.quickSwitch.title": "Hurtigbytte",
29 "global.api.unhealthy": "Kan ikke koble til Ferdi online-tjenester", 27 "global.api.unhealthy": "Kan ikke koble til Ferdi online-tjenester",
28 "global.cancel": "Avbryt",
29 "global.edit": "Rediger",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Du er ikke koblet til Internett.", 31 "global.notConnectedToTheInternet": "Du er ikke koblet til Internett.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Innstillinger",
31 "global.spellchecker.useDefault": "Bruk systemstandarden ({default})", 37 "global.spellchecker.useDefault": "Bruk systemstandarden ({default})",
32 "global.spellchecking.autodetect": "Oppdag språk automatisk", 38 "global.spellchecking.autodetect": "Oppdag språk automatisk",
33 "global.spellchecking.autodetect.short": "Automatisk", 39 "global.spellchecking.autodetect.short": "Automatisk",
34 "global.spellchecking.language": "Språk for stavekontroll", 40 "global.spellchecking.language": "Språk for stavekontroll",
41 "global.submit": "Send",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importer Ferdi 4-tjenestene dine", 45 "import.headline": "Importer Ferdi 4-tjenestene dine",
38 "import.notSupportedHeadline": "Tjenester som ikke støttes enda i Ferdi 5", 46 "import.notSupportedHeadline": "Tjenester som ikke støttes enda i Ferdi 5",
39 "import.skip.label": "Jeg ønsker å legge til tjenester manuelt", 47 "import.skip.label": "Jeg ønsker å legge til tjenester manuelt",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Lukk skuff for gjøremål", 84 "menu.Todoss.closeTodosDrawer": "Lukk skuff for gjøremål",
77 "menu.Todoss.openTodosDrawer": "Åpne skuff for gjøremål", 85 "menu.Todoss.openTodosDrawer": "Åpne skuff for gjøremål",
78 "menu.app.about": "Om Ferdi", 86 "menu.app.about": "Om Ferdi",
79 "menu.app.announcement": "Hva er nytt?",
80 "menu.app.autohideMenuBar": "Skjul menylinjen automatisk", 87 "menu.app.autohideMenuBar": "Skjul menylinjen automatisk",
81 "menu.app.checkForUpdates": "Se etter oppdateringer", 88 "menu.app.checkForUpdates": "Se etter oppdateringer",
82 "menu.app.hide": "Skjul", 89 "menu.app.hide": "Skjul",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Innstillinger",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Rediger", 92 "menu.edit": "Rediger",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Logg inn på kontoen din", 152 "password.link.login": "Logg inn på kontoen din",
148 "password.link.signup": "Opprett en gratis konto", 153 "password.link.signup": "Opprett en gratis konto",
149 "password.noUser": "Ingen bruker med den e-postadressen ble funnet", 154 "password.noUser": "Ingen bruker med den e-postadressen ble funnet",
150 "password.submit.label": "Send",
151 "password.successInfo": "Vennligst sjekk e-posten din", 155 "password.successInfo": "Vennligst sjekk e-posten din",
152 "pricing.features.accountSync": "Konto synkronisering", 156 "pricing.features.accountSync": "Konto synkronisering",
153 "pricing.features.customWebsites": "Legg til egendefinerte nettsteder", 157 "pricing.features.customWebsites": "Legg til egendefinerte nettsteder",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Inkluder betaversjoner", 218 "settings.app.form.beta": "Inkluder betaversjoner",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Egendefinerte gjøremål-tjener", 222 "settings.app.form.customTodoServer": "Egendefinerte gjøremål-tjener",
218 "settings.app.form.darkMode": "Aktiver mørkt tema", 223 "settings.app.form.darkMode": "Aktiver mørkt tema",
219 "settings.app.form.enableGPUAcceleration": "Aktiver GPU-akselerasjon", 224 "settings.app.form.enableGPUAcceleration": "Aktiver GPU-akselerasjon",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Tillat å bruke TouchID for å låse opp Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Tillat å bruke TouchID for å låse opp Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Innstillinger",
255 "settings.app.headlineAdvanced": "Avansert", 259 "settings.app.headlineAdvanced": "Avansert",
256 "settings.app.headlineAppearance": "Utseende", 260 "settings.app.headlineAppearance": "Utseende",
257 "settings.app.headlineGeneral": "Generelt", 261 "settings.app.headlineGeneral": "Generelt",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Konto", 285 "settings.navigation.account": "Konto",
282 "settings.navigation.availableServices": "Tilgjengelige tjenester", 286 "settings.navigation.availableServices": "Tilgjengelige tjenester",
283 "settings.navigation.logout": "Logg ut", 287 "settings.navigation.logout": "Logg ut",
284 "settings.navigation.settings": "Innstillinger",
285 "settings.navigation.supportFerdi": "Om Ferdi", 288 "settings.navigation.supportFerdi": "Om Ferdi",
286 "settings.navigation.team": "Administrere Team", 289 "settings.navigation.team": "Administrere Team",
287 "settings.navigation.yourServices": "Dine tjenester", 290 "settings.navigation.yourServices": "Dine tjenester",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Deaktiver varsler og lyd", 417 "sidebar.muteApp": "Deaktiver varsler og lyd",
415 "sidebar.openTodosDrawer": "Åpne Ferdi gjøremål", 418 "sidebar.openTodosDrawer": "Åpne Ferdi gjøremål",
416 "sidebar.openWorkspaceDrawer": "Åpne skuff for arbeidsområder", 419 "sidebar.openWorkspaceDrawer": "Åpne skuff for arbeidsområder",
417 "sidebar.settings": "Innstillinger",
418 "sidebar.unmuteApp": "Aktiver varsler og lyd", 420 "sidebar.unmuteApp": "Aktiver varsler og lyd",
419 "signup.email.label": "E-postadresse", 421 "signup.email.label": "E-postadresse",
420 "signup.emailDuplicate": "Det finnes allerede en bruker med den e-postadressen", 422 "signup.emailDuplicate": "Det finnes allerede en bruker med den e-postadressen",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Deaktiver varslinger", 436 "tabs.item.disableNotifications": "Deaktiver varslinger",
435 "tabs.item.disableService": "Deaktiver tjeneste", 437 "tabs.item.disableService": "Deaktiver tjeneste",
436 "tabs.item.edit": "Rediger",
437 "tabs.item.enableAudio": "Aktiver lyd", 438 "tabs.item.enableAudio": "Aktiver lyd",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Aktiver varsler", 440 "tabs.item.enableNotification": "Aktiver varsler",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index 2757914e5..39b72e367 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Spersonalizowany serwer", 4 "changeserver.customServerLabel": "Spersonalizowany serwer",
5 "changeserver.headline": "Zmień serwer", 5 "changeserver.headline": "Zmień serwer",
6 "changeserver.label": "Serwer", 6 "changeserver.label": "Serwer",
7 "changeserver.submit": "Wyślij",
8 "changeserver.urlError": "Wprowadź prawidłowy adres URL", 7 "changeserver.urlError": "Wprowadź prawidłowy adres URL",
9 "changeserver.warning": "Dodatkowe ustawienia oferowane przez Ferdi nie zostaną zapisane", 8 "changeserver.warning": "Dodatkowe ustawienia oferowane przez Ferdi nie zostaną zapisane",
10 "connectionLostBanner.cta": "Przeładuj usługę", 9 "connectionLostBanner.cta": "Przeładuj usługę",
11 "connectionLostBanner.informationLink": "Co się stało?", 10 "connectionLostBanner.informationLink": "Co się stało?",
12 "connectionLostBanner.message": "O nie! Ferdi stracił połączenie z {name}.", 11 "connectionLostBanner.message": "O nie! Ferdi stracił połączenie z {name}.",
13 "feature.announcements.changelog.headline": "Co nowego w Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Opublikuj dane diagnostyczne", 13 "feature.debugger.title": "Opublikuj dane diagnostyczne",
15 "feature.nightlyBuilds.activate": "Aktywuj", 14 "feature.nightlyBuilds.activate": "Aktywuj",
16 "feature.nightlyBuilds.cancel": "Anuluj",
17 "feature.nightlyBuilds.info": "Kompilacje testowe to wysoce eksperymentalne wersje Ferdi, które mogą zawierać niedopracowane lub nieukończone funkcje. Te kompilacje są przewidziane głównie dla programistów testujących nowe funkcje będące w opracowaniu oraz ostateczne działanie ukończonej kompilacji. Jeśli nie masz pewności co do tej funkcji, zalecamy nie włączać wersji testowych.", 15 "feature.nightlyBuilds.info": "Kompilacje testowe to wysoce eksperymentalne wersje Ferdi, które mogą zawierać niedopracowane lub nieukończone funkcje. Te kompilacje są przewidziane głównie dla programistów testujących nowe funkcje będące w opracowaniu oraz ostateczne działanie ukończonej kompilacji. Jeśli nie masz pewności co do tej funkcji, zalecamy nie włączać wersji testowych.",
18 "feature.nightlyBuilds.title": "Kompilacje testowe", 16 "feature.nightlyBuilds.title": "Kompilacje testowe",
19 "feature.publishDebugInfo.error": "Wystąpił błąd podczas publikowania informacji o debugowaniu. Spróbuj ponownie później lub sprawdź konsolę po więcej informacji.", 17 "feature.publishDebugInfo.error": "Wystąpił błąd podczas publikowania informacji o debugowaniu. Spróbuj ponownie później lub sprawdź konsolę po więcej informacji.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Szukaj...", 25 "feature.quickSwitch.search": "Szukaj...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online", 27 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online",
28 "global.cancel": "Anuluj",
29 "global.edit": "Edytuj",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.", 31 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Ustawienia",
31 "global.spellchecker.useDefault": "Użyj domyślnego dla systemu ({default})", 37 "global.spellchecker.useDefault": "Użyj domyślnego dla systemu ({default})",
32 "global.spellchecking.autodetect": "Automatycznie wykryj język", 38 "global.spellchecking.autodetect": "Automatycznie wykryj język",
33 "global.spellchecking.autodetect.short": "Automatycznie", 39 "global.spellchecking.autodetect.short": "Automatycznie",
34 "global.spellchecking.language": "Język sprawdzania pisowni", 40 "global.spellchecking.language": "Język sprawdzania pisowni",
41 "global.submit": "Wyślij",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importuj usługi Ferdi 4", 45 "import.headline": "Importuj usługi Ferdi 4",
38 "import.notSupportedHeadline": "Usługi, które nie są jeszcze obsługiwane w Ferdi 5", 46 "import.notSupportedHeadline": "Usługi, które nie są jeszcze obsługiwane w Ferdi 5",
39 "import.skip.label": "Chcę dodać usługi samodzielnie", 47 "import.skip.label": "Chcę dodać usługi samodzielnie",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Zamknij zakładkę Lista zadań", 84 "menu.Todoss.closeTodosDrawer": "Zamknij zakładkę Lista zadań",
77 "menu.Todoss.openTodosDrawer": "Otwórz zakładkę Lista zadań", 85 "menu.Todoss.openTodosDrawer": "Otwórz zakładkę Lista zadań",
78 "menu.app.about": "O Ferdi", 86 "menu.app.about": "O Ferdi",
79 "menu.app.announcement": "Co słychać?",
80 "menu.app.autohideMenuBar": "Automatycznie ukrywaj pasek menu", 87 "menu.app.autohideMenuBar": "Automatycznie ukrywaj pasek menu",
81 "menu.app.checkForUpdates": "Sprawdź aktualizacje", 88 "menu.app.checkForUpdates": "Sprawdź aktualizacje",
82 "menu.app.hide": "Ukryj", 89 "menu.app.hide": "Ukryj",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Ustawienia",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edytuj", 92 "menu.edit": "Edytuj",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Zaloguj się na swoje konto", 152 "password.link.login": "Zaloguj się na swoje konto",
148 "password.link.signup": "Załóż darmowe konto", 153 "password.link.signup": "Załóż darmowe konto",
149 "password.noUser": "Nie znaleziono użytkownika z takim adresem email", 154 "password.noUser": "Nie znaleziono użytkownika z takim adresem email",
150 "password.submit.label": "Wyślij",
151 "password.successInfo": "Proszę sprawdzić swój email", 155 "password.successInfo": "Proszę sprawdzić swój email",
152 "pricing.features.accountSync": "Synchronizacja konta", 156 "pricing.features.accountSync": "Synchronizacja konta",
153 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych", 157 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Uwzględnij wersje beta", 218 "settings.app.form.beta": "Uwzględnij wersje beta",
215 "settings.app.form.clipboardNotifications": "Nie wyświetlaj powiadomień dla schowka", 219 "settings.app.form.clipboardNotifications": "Nie wyświetlaj powiadomień dla schowka",
216 "settings.app.form.closeToSystemTray": "Zminimalizuj Ferdi do paska zadań", 220 "settings.app.form.closeToSystemTray": "Zminimalizuj Ferdi do paska zadań",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Własny serwer listy zadań", 222 "settings.app.form.customTodoServer": "Własny serwer listy zadań",
218 "settings.app.form.darkMode": "Włącz tryb ciemny", 223 "settings.app.form.darkMode": "Włącz tryb ciemny",
219 "settings.app.form.enableGPUAcceleration": "Włącz akcelerację GPU", 224 "settings.app.form.enableGPUAcceleration": "Włącz akcelerację GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Zezwól na odblokowanie Ferdi przez Touch ID", 256 "settings.app.form.useTouchIdToUnlock": "Zezwól na odblokowanie Ferdi przez Touch ID",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Ustawienia",
255 "settings.app.headlineAdvanced": "Zaawansowane", 259 "settings.app.headlineAdvanced": "Zaawansowane",
256 "settings.app.headlineAppearance": "Wygląd", 260 "settings.app.headlineAppearance": "Wygląd",
257 "settings.app.headlineGeneral": "Ogólne", 261 "settings.app.headlineGeneral": "Ogólne",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Konto", 285 "settings.navigation.account": "Konto",
282 "settings.navigation.availableServices": "Dostępne usługi", 286 "settings.navigation.availableServices": "Dostępne usługi",
283 "settings.navigation.logout": "Wyloguj", 287 "settings.navigation.logout": "Wyloguj",
284 "settings.navigation.settings": "Ustawienia",
285 "settings.navigation.supportFerdi": "O Ferdi", 288 "settings.navigation.supportFerdi": "O Ferdi",
286 "settings.navigation.team": "Zarządzaj Zespołem", 289 "settings.navigation.team": "Zarządzaj Zespołem",
287 "settings.navigation.yourServices": "Twoje usługi", 290 "settings.navigation.yourServices": "Twoje usługi",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Wyłącz powiadomienia i dźwięki", 417 "sidebar.muteApp": "Wyłącz powiadomienia i dźwięki",
415 "sidebar.openTodosDrawer": "Otwórz Listę zadań Ferdi", 418 "sidebar.openTodosDrawer": "Otwórz Listę zadań Ferdi",
416 "sidebar.openWorkspaceDrawer": "Otwórz edytor obszaru roboczego", 419 "sidebar.openWorkspaceDrawer": "Otwórz edytor obszaru roboczego",
417 "sidebar.settings": "Ustawienia",
418 "sidebar.unmuteApp": "Włącz powiadomienia i dźwięki", 420 "sidebar.unmuteApp": "Włącz powiadomienia i dźwięki",
419 "signup.email.label": "Adres email", 421 "signup.email.label": "Adres email",
420 "signup.emailDuplicate": "Użytkownik z takim adresem email już istnieje", 422 "signup.emailDuplicate": "Użytkownik z takim adresem email już istnieje",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Wyłącz powiadomienia", 436 "tabs.item.disableNotifications": "Wyłącz powiadomienia",
435 "tabs.item.disableService": "Wyłącz usługę", 437 "tabs.item.disableService": "Wyłącz usługę",
436 "tabs.item.edit": "Edytuj",
437 "tabs.item.enableAudio": "Włącz dźwięk", 438 "tabs.item.enableAudio": "Włącz dźwięk",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Aktywuj powiadomienia", 440 "tabs.item.enableNotification": "Aktywuj powiadomienia",
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index fa76e582a..7760834a4 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Servidor personalizado", 4 "changeserver.customServerLabel": "Servidor personalizado",
5 "changeserver.headline": "Alterar servidor", 5 "changeserver.headline": "Alterar servidor",
6 "changeserver.label": "Servidor", 6 "changeserver.label": "Servidor",
7 "changeserver.submit": "Confirmar",
8 "changeserver.urlError": "Informe uma URL válida", 7 "changeserver.urlError": "Informe uma URL válida",
9 "changeserver.warning": "As configurações extras oferecidas pelo Ferdi não serão salvas", 8 "changeserver.warning": "As configurações extras oferecidas pelo Ferdi não serão salvas",
10 "connectionLostBanner.cta": "Recarregar serviço", 9 "connectionLostBanner.cta": "Recarregar serviço",
11 "connectionLostBanner.informationLink": "O que aconteceu?", 10 "connectionLostBanner.informationLink": "O que aconteceu?",
12 "connectionLostBanner.message": "Ah não! Ferdi perdeu a conexão com {name}.", 11 "connectionLostBanner.message": "Ah não! Ferdi perdeu a conexão com {name}.",
13 "feature.announcements.changelog.headline": "Mudanças no Ferdi {version}", 12 "feature.basicAuth.signIn": "Acessar",
14 "feature.debugger.title": "Publicar informações de depuração", 13 "feature.debugger.title": "Publicar informações de depuração",
15 "feature.nightlyBuilds.activate": "Ativar", 14 "feature.nightlyBuilds.activate": "Ativar",
16 "feature.nightlyBuilds.cancel": "Cancelar",
17 "feature.nightlyBuilds.info": "Versões noturnas são versões do Ferdi altamente experimentais que podem conter funcionalidades não finalizadas ou não concluídas. Essas compilações noturnas são usadas principalmente por desenvolvedores para testar seus recursos recém-desenvolvidos e como eles irão se comportar na versão final. Se você não sabe o que está fazendo, sugerimos não ativar versões noturnas.", 15 "feature.nightlyBuilds.info": "Versões noturnas são versões do Ferdi altamente experimentais que podem conter funcionalidades não finalizadas ou não concluídas. Essas compilações noturnas são usadas principalmente por desenvolvedores para testar seus recursos recém-desenvolvidos e como eles irão se comportar na versão final. Se você não sabe o que está fazendo, sugerimos não ativar versões noturnas.",
18 "feature.nightlyBuilds.title": "Versões noturnas", 16 "feature.nightlyBuilds.title": "Versões noturnas",
19 "feature.publishDebugInfo.error": "Ocorreu um erro ao tentar publicar as informações de depuração. Por favor, tente novamente mais tarde ou verifique o console para mais informações.", 17 "feature.publishDebugInfo.error": "Ocorreu um erro ao tentar publicar as informações de depuração. Por favor, tente novamente mais tarde ou verifique o console para mais informações.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Localizar...", 25 "feature.quickSwitch.search": "Localizar...",
28 "feature.quickSwitch.title": "Troca Rápida", 26 "feature.quickSwitch.title": "Troca Rápida",
29 "global.api.unhealthy": "Não foi possível estabelecer ligação aos serviços do Ferdi", 27 "global.api.unhealthy": "Não foi possível estabelecer ligação aos serviços do Ferdi",
28 "global.cancel": "Cancelar",
29 "global.edit": "Editar",
30 "global.no": "Não",
30 "global.notConnectedToTheInternet": "Você não está conectado à internet.", 31 "global.notConnectedToTheInternet": "Você não está conectado à internet.",
32 "global.ok": "Ok",
33 "global.quit": "Sair",
34 "global.quitConfirmation": "Tem certeza que deseja sair do Ferdi?",
35 "global.save": "Salvar",
36 "global.settings": "Configurações",
31 "global.spellchecker.useDefault": "Utilizar o Padrão do Sistema ({default})", 37 "global.spellchecker.useDefault": "Utilizar o Padrão do Sistema ({default})",
32 "global.spellchecking.autodetect": "Detectar a idioma automaticamente", 38 "global.spellchecking.autodetect": "Detectar a idioma automaticamente",
33 "global.spellchecking.autodetect.short": "Automático", 39 "global.spellchecking.autodetect.short": "Automático",
34 "global.spellchecking.language": "Idioma para correção ortográfica", 40 "global.spellchecking.language": "Idioma para correção ortográfica",
41 "global.submit": "Enviar",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (para descobrir) ou 'https://developers.whatismybrowser.com/useragents/explore/' (para escolher) o agente de usuário desejado e copie e cole aqui.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (para descobrir) ou 'https://developers.whatismybrowser.com/useragents/explore/' (para escolher) o agente de usuário desejado e copie e cole aqui.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Sim",
37 "import.headline": "Importar os seus serviços do Ferdi 4", 45 "import.headline": "Importar os seus serviços do Ferdi 4",
38 "import.notSupportedHeadline": "Estes serviços ainda não são suportados pelo Ferdi 5", 46 "import.notSupportedHeadline": "Estes serviços ainda não são suportados pelo Ferdi 5",
39 "import.skip.label": "Eu quero adicionar serviços manualmente", 47 "import.skip.label": "Eu quero adicionar serviços manualmente",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Fechar Tarefas", 84 "menu.Todoss.closeTodosDrawer": "Fechar Tarefas",
77 "menu.Todoss.openTodosDrawer": "Abrir Tarefas", 85 "menu.Todoss.openTodosDrawer": "Abrir Tarefas",
78 "menu.app.about": "Sobre o Ferdi", 86 "menu.app.about": "Sobre o Ferdi",
79 "menu.app.announcement": "O que há de novo?",
80 "menu.app.autohideMenuBar": "Auto-ocultar barra de menu", 87 "menu.app.autohideMenuBar": "Auto-ocultar barra de menu",
81 "menu.app.checkForUpdates": "Procurar atualizações", 88 "menu.app.checkForUpdates": "Procurar atualizações",
82 "menu.app.hide": "Ocultar", 89 "menu.app.hide": "Ocultar",
83 "menu.app.hideOthers": "Ocultar outros", 90 "menu.app.hideOthers": "Ocultar outros",
84 "menu.app.quit": "Sair",
85 "menu.app.settings": "Configurações",
86 "menu.app.unhide": "Reexibir", 91 "menu.app.unhide": "Reexibir",
87 "menu.edit": "Editar", 92 "menu.edit": "Editar",
88 "menu.edit.copy": "Copiar", 93 "menu.edit.copy": "Copiar",
@@ -147,7 +152,6 @@
147 "password.link.login": "Iniciar sessão", 152 "password.link.login": "Iniciar sessão",
148 "password.link.signup": "Criar uma conta gratuita", 153 "password.link.signup": "Criar uma conta gratuita",
149 "password.noUser": "Não existe nenhuma conta associada a esse endereço de e-mail", 154 "password.noUser": "Não existe nenhuma conta associada a esse endereço de e-mail",
150 "password.submit.label": "Confirmar",
151 "password.successInfo": "Por favor, verifique seu e-mail", 155 "password.successInfo": "Por favor, verifique seu e-mail",
152 "pricing.features.accountSync": "Sincronização da conta", 156 "pricing.features.accountSync": "Sincronização da conta",
153 "pricing.features.customWebsites": "Adicionar Websites Personalizados", 157 "pricing.features.customWebsites": "Adicionar Websites Personalizados",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Incluir versões instáveis (beta)", 218 "settings.app.form.beta": "Incluir versões instáveis (beta)",
215 "settings.app.form.clipboardNotifications": "Não exibir notificações para eventos da área de transferência", 219 "settings.app.form.clipboardNotifications": "Não exibir notificações para eventos da área de transferência",
216 "settings.app.form.closeToSystemTray": "Fechar o Ferdi para a barra do sistema", 220 "settings.app.form.closeToSystemTray": "Fechar o Ferdi para a barra do sistema",
221 "settings.app.form.confirmOnQuit": "Exigir confirmação ao sair do Ferdi",
217 "settings.app.form.customTodoServer": "Servidor de Tarefas Personalizado", 222 "settings.app.form.customTodoServer": "Servidor de Tarefas Personalizado",
218 "settings.app.form.darkMode": "Habilitar modo noturno", 223 "settings.app.form.darkMode": "Habilitar modo noturno",
219 "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU", 224 "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU",
@@ -249,9 +254,8 @@
249 "settings.app.form.startMinimized": "Iniciar minimizado", 254 "settings.app.form.startMinimized": "Iniciar minimizado",
250 "settings.app.form.universalDarkMode": "Habilitar modo noturno universal", 255 "settings.app.form.universalDarkMode": "Habilitar modo noturno universal",
251 "settings.app.form.useTouchIdToUnlock": "Permitir usar TouchID para desbloquear Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Permitir usar TouchID para desbloquear Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Usar estilo horizontal",
253 "settings.app.form.wakeUpStrategy": "Estratégia de despertar", 258 "settings.app.form.wakeUpStrategy": "Estratégia de despertar",
254 "settings.app.headline": "Configurações",
255 "settings.app.headlineAdvanced": "Avançado", 259 "settings.app.headlineAdvanced": "Avançado",
256 "settings.app.headlineAppearance": "Aparência", 260 "settings.app.headlineAppearance": "Aparência",
257 "settings.app.headlineGeneral": "Geral", 261 "settings.app.headlineGeneral": "Geral",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Conta", 285 "settings.navigation.account": "Conta",
282 "settings.navigation.availableServices": "Serviços disponíveis", 286 "settings.navigation.availableServices": "Serviços disponíveis",
283 "settings.navigation.logout": "Terminar sessão", 287 "settings.navigation.logout": "Terminar sessão",
284 "settings.navigation.settings": "Configurações",
285 "settings.navigation.supportFerdi": "Sobre o Ferdi", 288 "settings.navigation.supportFerdi": "Sobre o Ferdi",
286 "settings.navigation.team": "Gerenciar equipes", 289 "settings.navigation.team": "Gerenciar equipes",
287 "settings.navigation.yourServices": "Seus serviços", 290 "settings.navigation.yourServices": "Seus serviços",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Desativar notificações e áudio", 417 "sidebar.muteApp": "Desativar notificações e áudio",
415 "sidebar.openTodosDrawer": "Abrir as Tarefas", 418 "sidebar.openTodosDrawer": "Abrir as Tarefas",
416 "sidebar.openWorkspaceDrawer": "Abrir a janela da Área de trabalho", 419 "sidebar.openWorkspaceDrawer": "Abrir a janela da Área de trabalho",
417 "sidebar.settings": "Configurações",
418 "sidebar.unmuteApp": "Ativar notificações e áudio", 420 "sidebar.unmuteApp": "Ativar notificações e áudio",
419 "signup.email.label": "Endereço de e-mail", 421 "signup.email.label": "Endereço de e-mail",
420 "signup.emailDuplicate": "Já existe uma conta associada a este endereço de email", 422 "signup.emailDuplicate": "Já existe uma conta associada a este endereço de email",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Desativar o modo escuro", 435 "tabs.item.disableDarkMode": "Desativar o modo escuro",
434 "tabs.item.disableNotifications": "Desativar notificações", 436 "tabs.item.disableNotifications": "Desativar notificações",
435 "tabs.item.disableService": "Desativar serviço", 437 "tabs.item.disableService": "Desativar serviço",
436 "tabs.item.edit": "Editar",
437 "tabs.item.enableAudio": "Ativar áudio", 438 "tabs.item.enableAudio": "Ativar áudio",
438 "tabs.item.enableDarkMode": "Ativar o modo escuro", 439 "tabs.item.enableDarkMode": "Ativar o modo escuro",
439 "tabs.item.enableNotification": "Ativar notificações", 440 "tabs.item.enableNotification": "Ativar notificações",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 9bea37357..da431f4e3 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Servidor personalizado", 4 "changeserver.customServerLabel": "Servidor personalizado",
5 "changeserver.headline": "Alterar servidor", 5 "changeserver.headline": "Alterar servidor",
6 "changeserver.label": "Servidor", 6 "changeserver.label": "Servidor",
7 "changeserver.submit": "Enviar",
8 "changeserver.urlError": "Introduza um URL válido", 7 "changeserver.urlError": "Introduza um URL válido",
9 "changeserver.warning": "As configurações extras oferecidas pelo Ferdi não serão gravadas", 8 "changeserver.warning": "As configurações extras oferecidas pelo Ferdi não serão gravadas",
10 "connectionLostBanner.cta": "Reiniciar serviço", 9 "connectionLostBanner.cta": "Reiniciar serviço",
11 "connectionLostBanner.informationLink": "O que aconteceu?", 10 "connectionLostBanner.informationLink": "O que aconteceu?",
12 "connectionLostBanner.message": "Oh não! O Ferdi perdeu a ligação com {name}.", 11 "connectionLostBanner.message": "Oh não! O Ferdi perdeu a ligação com {name}.",
13 "feature.announcements.changelog.headline": "Alterações no Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publicar informações de depuração", 13 "feature.debugger.title": "Publicar informações de depuração",
15 "feature.nightlyBuilds.activate": "Activar", 14 "feature.nightlyBuilds.activate": "Activar",
16 "feature.nightlyBuilds.cancel": "Cancelar",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Houve um erro ao tentar publicar as informações de depuração. Por favor, tente novamente mais tarde ou visualize a consola para mais informações.", 17 "feature.publishDebugInfo.error": "Houve um erro ao tentar publicar as informações de depuração. Por favor, tente novamente mais tarde ou visualize a consola para mais informações.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "A procurar...", 25 "feature.quickSwitch.search": "A procurar...",
28 "feature.quickSwitch.title": "Troca Rápida", 26 "feature.quickSwitch.title": "Troca Rápida",
29 "global.api.unhealthy": "Não é possível ligar aos serviços online de Ferdi", 27 "global.api.unhealthy": "Não é possível ligar aos serviços online de Ferdi",
28 "global.cancel": "Cancelar",
29 "global.edit": "Editar",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Não está ligado à internet.", 31 "global.notConnectedToTheInternet": "Não está ligado à internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Configurações",
31 "global.spellchecker.useDefault": "Use o padrão de sistema ({default})", 37 "global.spellchecker.useDefault": "Use o padrão de sistema ({default})",
32 "global.spellchecking.autodetect": "Detectar idioma automaticamente", 38 "global.spellchecking.autodetect": "Detectar idioma automaticamente",
33 "global.spellchecking.autodetect.short": "Automático", 39 "global.spellchecking.autodetect.short": "Automático",
34 "global.spellchecking.language": "Idioma para corrector ortográfico", 40 "global.spellchecking.language": "Idioma para corrector ortográfico",
41 "global.submit": "Enviar",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importe os seus serviços do Ferdi 4", 45 "import.headline": "Importe os seus serviços do Ferdi 4",
38 "import.notSupportedHeadline": "Serviços ainda não são suportados por Ferdi 5", 46 "import.notSupportedHeadline": "Serviços ainda não são suportados por Ferdi 5",
39 "import.skip.label": "Quero adicionar serviços manualmente", 47 "import.skip.label": "Quero adicionar serviços manualmente",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Fechar a barra de Tarefas", 84 "menu.Todoss.closeTodosDrawer": "Fechar a barra de Tarefas",
77 "menu.Todoss.openTodosDrawer": "Abrir a barra de Tarefas", 85 "menu.Todoss.openTodosDrawer": "Abrir a barra de Tarefas",
78 "menu.app.about": "Acerca de Ferdi", 86 "menu.app.about": "Acerca de Ferdi",
79 "menu.app.announcement": "O que há de novo?",
80 "menu.app.autohideMenuBar": "Ocultar barra de menu automaticamente", 87 "menu.app.autohideMenuBar": "Ocultar barra de menu automaticamente",
81 "menu.app.checkForUpdates": "Procurar atualizações", 88 "menu.app.checkForUpdates": "Procurar atualizações",
82 "menu.app.hide": "Ocultar", 89 "menu.app.hide": "Ocultar",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Configurações",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Editar", 92 "menu.edit": "Editar",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Entrar na sua conta", 152 "password.link.login": "Entrar na sua conta",
148 "password.link.signup": "Criar uma conta gratuita", 153 "password.link.signup": "Criar uma conta gratuita",
149 "password.noUser": "Não foi encontrado nenhum utilizador com este e-mail", 154 "password.noUser": "Não foi encontrado nenhum utilizador com este e-mail",
150 "password.submit.label": "Enviar",
151 "password.successInfo": "Por favor, verifique o seu e-mail", 155 "password.successInfo": "Por favor, verifique o seu e-mail",
152 "pricing.features.accountSync": "Sincronização de conta", 156 "pricing.features.accountSync": "Sincronização de conta",
153 "pricing.features.customWebsites": "Adicionar Websites Personalizados", 157 "pricing.features.customWebsites": "Adicionar Websites Personalizados",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Incluir versões beta", 218 "settings.app.form.beta": "Incluir versões beta",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Servidor Personalizado de Tarefas", 222 "settings.app.form.customTodoServer": "Servidor Personalizado de Tarefas",
218 "settings.app.form.darkMode": "Ativar modo noturno", 223 "settings.app.form.darkMode": "Ativar modo noturno",
219 "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU", 224 "settings.app.form.enableGPUAcceleration": "Ativar Aceleração de GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Permite usar o TouchID para desbloquear Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Permite usar o TouchID para desbloquear Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Configurações",
255 "settings.app.headlineAdvanced": "Avançado", 259 "settings.app.headlineAdvanced": "Avançado",
256 "settings.app.headlineAppearance": "Aparência", 260 "settings.app.headlineAppearance": "Aparência",
257 "settings.app.headlineGeneral": "Geral", 261 "settings.app.headlineGeneral": "Geral",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Conta", 285 "settings.navigation.account": "Conta",
282 "settings.navigation.availableServices": "Serviços disponíveis", 286 "settings.navigation.availableServices": "Serviços disponíveis",
283 "settings.navigation.logout": "Sair", 287 "settings.navigation.logout": "Sair",
284 "settings.navigation.settings": "Configurações",
285 "settings.navigation.supportFerdi": "Acerca de Ferdi", 288 "settings.navigation.supportFerdi": "Acerca de Ferdi",
286 "settings.navigation.team": "Gerir Equipa", 289 "settings.navigation.team": "Gerir Equipa",
287 "settings.navigation.yourServices": "Os seus serviços", 290 "settings.navigation.yourServices": "Os seus serviços",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Desativar notificações e áudio", 417 "sidebar.muteApp": "Desativar notificações e áudio",
415 "sidebar.openTodosDrawer": "Abrir Tarefas Ferdi", 418 "sidebar.openTodosDrawer": "Abrir Tarefas Ferdi",
416 "sidebar.openWorkspaceDrawer": "Abrir a barra lateral da área de trabalho", 419 "sidebar.openWorkspaceDrawer": "Abrir a barra lateral da área de trabalho",
417 "sidebar.settings": "Configurações",
418 "sidebar.unmuteApp": "Ativar notificações e áudio", 420 "sidebar.unmuteApp": "Ativar notificações e áudio",
419 "signup.email.label": "Endereço de E-mail", 421 "signup.email.label": "Endereço de E-mail",
420 "signup.emailDuplicate": "Já existe um utilizador com este endereço de e-mail", 422 "signup.emailDuplicate": "Já existe um utilizador com este endereço de e-mail",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Desativar notificações", 436 "tabs.item.disableNotifications": "Desativar notificações",
435 "tabs.item.disableService": "Desativar serviço", 437 "tabs.item.disableService": "Desativar serviço",
436 "tabs.item.edit": "Editar",
437 "tabs.item.enableAudio": "Ativar áudio", 438 "tabs.item.enableAudio": "Ativar áudio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Ativar notificações", 440 "tabs.item.enableNotification": "Ativar notificações",
diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json
index 855576db4..6e2ee4c19 100644
--- a/src/i18n/locales/ro.json
+++ b/src/i18n/locales/ro.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Introduceți un URL valid", 7 "changeserver.urlError": "Introduceți un URL valid",
9 "changeserver.warning": "Setările suplimentare oferite de Ferdi nu vor fi salvate", 8 "changeserver.warning": "Setările suplimentare oferite de Ferdi nu vor fi salvate",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "Ce s-a întâmplat?", 10 "connectionLostBanner.informationLink": "Ce s-a întâmplat?",
12 "connectionLostBanner.message": "Oh nu! Ferdi a pierdut conexiunea cu {name}.", 11 "connectionLostBanner.message": "Oh nu! Ferdi a pierdut conexiunea cu {name}.",
13 "feature.announcements.changelog.headline": "Modificări în Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activare", 14 "feature.nightlyBuilds.activate": "Activare",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Căutare...", 25 "feature.quickSwitch.search": "Căutare...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nu se pot conecta la Ferdi servicii online", 27 "global.api.unhealthy": "Nu se pot conecta la Ferdi servicii online",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Nu ești conectat la internet.", 31 "global.notConnectedToTheInternet": "Nu ești conectat la internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Folosește sistemul implicit ({default})", 37 "global.spellchecker.useDefault": "Folosește sistemul implicit ({default})",
32 "global.spellchecking.autodetect": "Detectează limba automat", 38 "global.spellchecking.autodetect": "Detectează limba automat",
33 "global.spellchecking.autodetect.short": "Automat", 39 "global.spellchecking.autodetect.short": "Automat",
34 "global.spellchecking.language": "Limba de verificare a ortografiei", 40 "global.spellchecking.language": "Limba de verificare a ortografiei",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importă serviciile tale Ferdi 4", 45 "import.headline": "Importă serviciile tale Ferdi 4",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 78654554b..4a7222914 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Пользовательский сервер", 4 "changeserver.customServerLabel": "Пользовательский сервер",
5 "changeserver.headline": "Изменить сервер", 5 "changeserver.headline": "Изменить сервер",
6 "changeserver.label": "Сервер", 6 "changeserver.label": "Сервер",
7 "changeserver.submit": "Принять",
8 "changeserver.urlError": "Введите допустимый URL-адрес", 7 "changeserver.urlError": "Введите допустимый URL-адрес",
9 "changeserver.warning": "Дополнительные настройки, предлагаемые Ферди, не будут сохранены", 8 "changeserver.warning": "Дополнительные настройки, предлагаемые Ферди, не будут сохранены",
10 "connectionLostBanner.cta": "Перезапустить сервис", 9 "connectionLostBanner.cta": "Перезапустить сервис",
11 "connectionLostBanner.informationLink": "Что случилось?", 10 "connectionLostBanner.informationLink": "Что случилось?",
12 "connectionLostBanner.message": "О нет! Ферди потерял связь с {name}.", 11 "connectionLostBanner.message": "О нет! Ферди потерял связь с {name}.",
13 "feature.announcements.changelog.headline": "Изменения в версии Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Опубликовать отладочную информацию", 13 "feature.debugger.title": "Опубликовать отладочную информацию",
15 "feature.nightlyBuilds.activate": "Активировать", 14 "feature.nightlyBuilds.activate": "Активировать",
16 "feature.nightlyBuilds.cancel": "Отмена",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Поиск...", 25 "feature.quickSwitch.search": "Поиск...",
28 "feature.quickSwitch.title": "Быстрое переключение", 26 "feature.quickSwitch.title": "Быстрое переключение",
29 "global.api.unhealthy": "Невозможно подключиться к онлайн-сервисам Ferdi", 27 "global.api.unhealthy": "Невозможно подключиться к онлайн-сервисам Ferdi",
28 "global.cancel": "Отмена",
29 "global.edit": "Правка",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет", 31 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Настройки",
31 "global.spellchecker.useDefault": "Использовать системные параметры по умолчанию ({default})", 37 "global.spellchecker.useDefault": "Использовать системные параметры по умолчанию ({default})",
32 "global.spellchecking.autodetect": "Найти язык автоматически", 38 "global.spellchecking.autodetect": "Найти язык автоматически",
33 "global.spellchecking.autodetect.short": "Авто", 39 "global.spellchecking.autodetect.short": "Авто",
34 "global.spellchecking.language": "Проверка правописания", 40 "global.spellchecking.language": "Проверка правописания",
41 "global.submit": "Принять",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Импортировать ваши сервисы из Ferdi 4", 45 "import.headline": "Импортировать ваши сервисы из Ferdi 4",
38 "import.notSupportedHeadline": "Сервисы пока ещё не поддерживаются в Ferdi 5", 46 "import.notSupportedHeadline": "Сервисы пока ещё не поддерживаются в Ferdi 5",
39 "import.skip.label": "Я хочу добавить сервисы вручную", 47 "import.skip.label": "Я хочу добавить сервисы вручную",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Закрыть панель задач Todos", 84 "menu.Todoss.closeTodosDrawer": "Закрыть панель задач Todos",
77 "menu.Todoss.openTodosDrawer": "Закрыть панель задач Todos", 85 "menu.Todoss.openTodosDrawer": "Закрыть панель задач Todos",
78 "menu.app.about": "О Ferdi", 86 "menu.app.about": "О Ferdi",
79 "menu.app.announcement": "Что нового?",
80 "menu.app.autohideMenuBar": "Автоматически скрывать панель", 87 "menu.app.autohideMenuBar": "Автоматически скрывать панель",
81 "menu.app.checkForUpdates": "Проверить обновления", 88 "menu.app.checkForUpdates": "Проверить обновления",
82 "menu.app.hide": "Скрыть", 89 "menu.app.hide": "Скрыть",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Настройки",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Правка", 92 "menu.edit": "Правка",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Вход", 152 "password.link.login": "Вход",
148 "password.link.signup": "Создать бесплатный аккаунт", 153 "password.link.signup": "Создать бесплатный аккаунт",
149 "password.noUser": "Не найдено пользователя с таким адресом электронной почты", 154 "password.noUser": "Не найдено пользователя с таким адресом электронной почты",
150 "password.submit.label": "Принять",
151 "password.successInfo": "Проверьте вашу электронную почту", 155 "password.successInfo": "Проверьте вашу электронную почту",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Добавить пользовательские веб-сайты", 157 "pricing.features.customWebsites": "Добавить пользовательские веб-сайты",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Включая бета версии", 218 "settings.app.form.beta": "Включая бета версии",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Включить ускорение GPU", 224 "settings.app.form.enableGPUAcceleration": "Включить ускорение GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Настройки",
255 "settings.app.headlineAdvanced": "Дополнительно", 259 "settings.app.headlineAdvanced": "Дополнительно",
256 "settings.app.headlineAppearance": "Внешний вид", 260 "settings.app.headlineAppearance": "Внешний вид",
257 "settings.app.headlineGeneral": "Общие", 261 "settings.app.headlineGeneral": "Общие",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Аккаунт", 285 "settings.navigation.account": "Аккаунт",
282 "settings.navigation.availableServices": "Доступные сервисы", 286 "settings.navigation.availableServices": "Доступные сервисы",
283 "settings.navigation.logout": "Выход", 287 "settings.navigation.logout": "Выход",
284 "settings.navigation.settings": "Настройки",
285 "settings.navigation.supportFerdi": "О Ferdi", 288 "settings.navigation.supportFerdi": "О Ferdi",
286 "settings.navigation.team": "Управление Командой", 289 "settings.navigation.team": "Управление Командой",
287 "settings.navigation.yourServices": "Ваши сервисы", 290 "settings.navigation.yourServices": "Ваши сервисы",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Отключить уведомления и звук", 417 "sidebar.muteApp": "Отключить уведомления и звук",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Открыть меню окружений", 419 "sidebar.openWorkspaceDrawer": "Открыть меню окружений",
417 "sidebar.settings": "Настройки",
418 "sidebar.unmuteApp": "Включить уведомления и звук", 420 "sidebar.unmuteApp": "Включить уведомления и звук",
419 "signup.email.label": "Адрес электронной почты", 421 "signup.email.label": "Адрес электронной почты",
420 "signup.emailDuplicate": "Пользователь с таким адресом электронной почты уже существует", 422 "signup.emailDuplicate": "Пользователь с таким адресом электронной почты уже существует",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Отключить уведомления", 436 "tabs.item.disableNotifications": "Отключить уведомления",
435 "tabs.item.disableService": "Отключить сервис", 437 "tabs.item.disableService": "Отключить сервис",
436 "tabs.item.edit": "Правка",
437 "tabs.item.enableAudio": "Включить звук", 438 "tabs.item.enableAudio": "Включить звук",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Включить уведомления", 440 "tabs.item.enableNotification": "Включить уведомления",
diff --git a/src/i18n/locales/si.json b/src/i18n/locales/si.json
index 940864fa0..9ebf7f9e5 100644
--- a/src/i18n/locales/si.json
+++ b/src/i18n/locales/si.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
15 "global.api.unhealthy": "ෆ්රාන්ස් මාර්ගගත සේවාවන් වෙත සම්බන්ධ වීමට නොහැක.", 15 "global.api.unhealthy": "ෆ්රාන්ස් මාර්ගගත සේවාවන් වෙත සම්බන්ධ වීමට නොහැක.",
16 "global.edit": "Edit",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "ඔබ අන්තර්ජාලයට සම්බන්ධ වී නැත.", 18 "global.notConnectedToTheInternet": "ඔබ අන්තර්ජාලයට සම්බන්ධ වී නැත.",
19 "global.quit": "Quit",
20 "global.settings": "Settings",
18 "global.spellchecker.useDefault": "Use System Default ({default})", 21 "global.spellchecker.useDefault": "Use System Default ({default})",
19 "global.spellchecking.autodetect": "Detect language automatically", 22 "global.spellchecking.autodetect": "Detect language automatically",
20 "global.spellchecking.autodetect.short": "Automatic", 23 "global.spellchecking.autodetect.short": "Automatic",
21 "global.spellchecking.language": "Spell checking language", 24 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "යවන්න",
22 "import.headline": "ඔබගේ ෆ්රාන්ස් සේවාවන් නැවත ඇතුලත් කරගන්න.", 26 "import.headline": "ඔබගේ ෆ්රාන්ස් සේවාවන් නැවත ඇතුලත් කරගන්න.",
23 "import.notSupportedHeadline": "සේවාවන් සඳහා ෆ්රාන්ස් 5 හි තවමත් පහසුකම් සලසා නැත.", 27 "import.notSupportedHeadline": "සේවාවන් සඳහා ෆ්රාන්ස් 5 හි තවමත් පහසුකම් සලසා නැත.",
24 "import.skip.label": "සේවාවන් මවිසින් ඇතුලත් කල යුතුය. ", 28 "import.skip.label": "සේවාවන් මවිසින් ඇතුලත් කල යුතුය. ",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Check for updates", 55 "menu.app.checkForUpdates": "Check for updates",
52 "menu.app.hide": "Hide", 56 "menu.app.hide": "Hide",
53 "menu.app.hideOthers": "Hide Others", 57 "menu.app.hideOthers": "Hide Others",
54 "menu.app.quit": "Quit",
55 "menu.app.settings": "Settings",
56 "menu.app.unhide": "Unhide", 58 "menu.app.unhide": "Unhide",
57 "menu.edit": "Edit", 59 "menu.edit": "Edit",
58 "menu.edit.copy": "Copy", 60 "menu.edit.copy": "Copy",
@@ -109,7 +111,6 @@
109 "password.link.login": "ඔබේ ගිණුමට ඇතුල් වන්න ", 111 "password.link.login": "ඔබේ ගිණුමට ඇතුල් වන්න ",
110 "password.link.signup": "නව නොමිල ගිණුමක් අරඹන්න ", 112 "password.link.signup": "නව නොමිල ගිණුමක් අරඹන්න ",
111 "password.noUser": "එම විද්‍යුත් තැපැල් ලිපිනය යටතේ කිසිදු පරිශීලකයෙක් නොමැත ", 113 "password.noUser": "එම විද්‍යුත් තැපැල් ලිපිනය යටතේ කිසිදු පරිශීලකයෙක් නොමැත ",
112 "password.submit.label": "යවන්න",
113 "password.successInfo": "කරුණාකර ඔබේ විද්‍යුත් තැපෑල පිරික්සන්න", 114 "password.successInfo": "කරුණාකර ඔබේ විද්‍යුත් තැපෑල පිරික්සන්න",
114 "premiumFeature.button.upgradeAccount": "Upgrade account", 115 "premiumFeature.button.upgradeAccount": "Upgrade account",
115 "pricing.features.accountSync": "Account Synchronisation", 116 "pricing.features.accountSync": "Account Synchronisation",
@@ -179,7 +180,6 @@
179 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 180 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
180 "settings.app.form.showDisabledServices": "Display disabled services tabs", 181 "settings.app.form.showDisabledServices": "Display disabled services tabs",
181 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 182 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
182 "settings.app.headline": "Settings",
183 "settings.app.headlineAdvanced": "Advanced", 183 "settings.app.headlineAdvanced": "Advanced",
184 "settings.app.headlineAppearance": "Appearance", 184 "settings.app.headlineAppearance": "Appearance",
185 "settings.app.headlineGeneral": "General", 185 "settings.app.headlineGeneral": "General",
@@ -197,7 +197,6 @@
197 "settings.navigation.availableServices": "Available services", 197 "settings.navigation.availableServices": "Available services",
198 "settings.navigation.inviteFriends": "Invite Friends", 198 "settings.navigation.inviteFriends": "Invite Friends",
199 "settings.navigation.logout": "Logout", 199 "settings.navigation.logout": "Logout",
200 "settings.navigation.settings": "Settings",
201 "settings.navigation.team": "Manage Team", 200 "settings.navigation.team": "Manage Team",
202 "settings.navigation.yourServices": "Your services", 201 "settings.navigation.yourServices": "Your services",
203 "settings.navigation.yourWorkspaces": "Your workspaces", 202 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -304,7 +303,6 @@
304 "sidebar.muteApp": "Disable notifications & audio", 303 "sidebar.muteApp": "Disable notifications & audio",
305 "sidebar.openTodosDrawer": "Open Ferdi Todos", 304 "sidebar.openTodosDrawer": "Open Ferdi Todos",
306 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 305 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
307 "sidebar.settings": "Settings",
308 "sidebar.unmuteApp": "Enable notifications & audio", 306 "sidebar.unmuteApp": "Enable notifications & audio",
309 "signup.email.label": "Email address", 307 "signup.email.label": "Email address",
310 "signup.emailDuplicate": "A user with that email address already exists", 308 "signup.emailDuplicate": "A user with that email address already exists",
@@ -321,7 +319,6 @@
321 "tabs.item.disableAudio": "Disable audio", 319 "tabs.item.disableAudio": "Disable audio",
322 "tabs.item.disableNotifications": "Disable notifications", 320 "tabs.item.disableNotifications": "Disable notifications",
323 "tabs.item.disableService": "Disable service", 321 "tabs.item.disableService": "Disable service",
324 "tabs.item.edit": "Edit",
325 "tabs.item.enableAudio": "Enable audio", 322 "tabs.item.enableAudio": "Enable audio",
326 "tabs.item.enableNotification": "Enable notifications", 323 "tabs.item.enableNotification": "Enable notifications",
327 "tabs.item.enableService": "Enable service", 324 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index d41ab866c..7e84088d1 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Vlastný server", 4 "changeserver.customServerLabel": "Vlastný server",
5 "changeserver.headline": "Zmeniť server", 5 "changeserver.headline": "Zmeniť server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Odoslať",
8 "changeserver.urlError": "Zadajte platnú adresu URL", 7 "changeserver.urlError": "Zadajte platnú adresu URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Obnoviť službu", 9 "connectionLostBanner.cta": "Obnoviť službu",
11 "connectionLostBanner.informationLink": "Čo sa stalo?", 10 "connectionLostBanner.informationLink": "Čo sa stalo?",
12 "connectionLostBanner.message": "Oh nie! Ferdi stratil pripojenie k {name}.", 11 "connectionLostBanner.message": "Oh nie! Ferdi stratil pripojenie k {name}.",
13 "feature.announcements.changelog.headline": "Zmeny vo Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Zverejniť informácie ladenia", 13 "feature.debugger.title": "Zverejniť informácie ladenia",
15 "feature.nightlyBuilds.activate": "Aktivovať", 14 "feature.nightlyBuilds.activate": "Aktivovať",
16 "feature.nightlyBuilds.cancel": "Zrušiť",
17 "feature.nightlyBuilds.info": "Tzv. \"nočné verzie\" sú vysoko experimentálne verzie Ferdi, ktoré môžu obsahovať nedoladená alebo nedokončené funkcie. Tieto verzie sú používané predovšetkým vývojármi, aby otestovali novo-vyvíjané funkcie a spôsob, akým sa budú správať vo finálnej verzii. Ak neviete čo robíte, navrhujeme neaktivovať tieto experimentálne verzie.", 15 "feature.nightlyBuilds.info": "Tzv. \"nočné verzie\" sú vysoko experimentálne verzie Ferdi, ktoré môžu obsahovať nedoladená alebo nedokončené funkcie. Tieto verzie sú používané predovšetkým vývojármi, aby otestovali novo-vyvíjané funkcie a spôsob, akým sa budú správať vo finálnej verzii. Ak neviete čo robíte, navrhujeme neaktivovať tieto experimentálne verzie.",
18 "feature.nightlyBuilds.title": "Vývojárske verzie", 16 "feature.nightlyBuilds.title": "Vývojárske verzie",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Hľadať...", 25 "feature.quickSwitch.search": "Hľadať...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi", 27 "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi",
28 "global.cancel": "Zrušiť",
29 "global.edit": "Upraviť",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.", 31 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Nastavenia",
31 "global.spellchecker.useDefault": "Použiť predvolené nastavenie systému ({default})", 37 "global.spellchecker.useDefault": "Použiť predvolené nastavenie systému ({default})",
32 "global.spellchecking.autodetect": "Automaticky rozpoznať jazyk", 38 "global.spellchecking.autodetect": "Automaticky rozpoznať jazyk",
33 "global.spellchecking.autodetect.short": "Automatický", 39 "global.spellchecking.autodetect.short": "Automatický",
34 "global.spellchecking.language": "Jazyk kontroly pravopisu", 40 "global.spellchecking.language": "Jazyk kontroly pravopisu",
41 "global.submit": "Odoslať",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importovať vaše služby z Ferdi 4", 45 "import.headline": "Importovať vaše služby z Ferdi 4",
38 "import.notSupportedHeadline": "Služby zatiaľ nie sú podporované vo verzii Ferdi 5", 46 "import.notSupportedHeadline": "Služby zatiaľ nie sú podporované vo verzii Ferdi 5",
39 "import.skip.label": "Chcem pridať služby ručne", 47 "import.skip.label": "Chcem pridať služby ručne",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "O aplikácii", 86 "menu.app.about": "O aplikácii",
79 "menu.app.announcement": "Čo je nové?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Skontrolovať aktualizácie", 88 "menu.app.checkForUpdates": "Skontrolovať aktualizácie",
82 "menu.app.hide": "Skryť", 89 "menu.app.hide": "Skryť",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Nastavenia",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Upraviť", 92 "menu.edit": "Upraviť",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Prihlásiť sa do vášho účtu", 152 "password.link.login": "Prihlásiť sa do vášho účtu",
148 "password.link.signup": "Vytvoriť používateľský účet zdarma", 153 "password.link.signup": "Vytvoriť používateľský účet zdarma",
149 "password.noUser": "Používateľ s touto e-mailovou adresou nebol nájdený", 154 "password.noUser": "Používateľ s touto e-mailovou adresou nebol nájdený",
150 "password.submit.label": "Odoslať",
151 "password.successInfo": "Skontrolujte prosím váš e-mail", 155 "password.successInfo": "Skontrolujte prosím váš e-mail",
152 "pricing.features.accountSync": "Synchronizácia účtu", 156 "pricing.features.accountSync": "Synchronizácia účtu",
153 "pricing.features.customWebsites": "Pridať vlastnú webstránku", 157 "pricing.features.customWebsites": "Pridať vlastnú webstránku",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Vrátane beta verzií", 218 "settings.app.form.beta": "Vrátane beta verzií",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Zapnúť GPU zrýchlenie", 224 "settings.app.form.enableGPUAcceleration": "Zapnúť GPU zrýchlenie",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Nastavenia",
255 "settings.app.headlineAdvanced": "Pokročilé", 259 "settings.app.headlineAdvanced": "Pokročilé",
256 "settings.app.headlineAppearance": "Vzhľad", 260 "settings.app.headlineAppearance": "Vzhľad",
257 "settings.app.headlineGeneral": "Všeobecné", 261 "settings.app.headlineGeneral": "Všeobecné",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Účet", 285 "settings.navigation.account": "Účet",
282 "settings.navigation.availableServices": "Dostupné služby", 286 "settings.navigation.availableServices": "Dostupné služby",
283 "settings.navigation.logout": "Odhlásiť sa", 287 "settings.navigation.logout": "Odhlásiť sa",
284 "settings.navigation.settings": "Nastavenia",
285 "settings.navigation.supportFerdi": "O aplikácii", 288 "settings.navigation.supportFerdi": "O aplikácii",
286 "settings.navigation.team": "Spravovať tím", 289 "settings.navigation.team": "Spravovať tím",
287 "settings.navigation.yourServices": "Vaše služby", 290 "settings.navigation.yourServices": "Vaše služby",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Vypnúť upozornenia a zvuky", 417 "sidebar.muteApp": "Vypnúť upozornenia a zvuky",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Otvoriť workspace záložku", 419 "sidebar.openWorkspaceDrawer": "Otvoriť workspace záložku",
417 "sidebar.settings": "Nastavenia",
418 "sidebar.unmuteApp": "Povoliť oznámenia a zvuky", 420 "sidebar.unmuteApp": "Povoliť oznámenia a zvuky",
419 "signup.email.label": "E-mailová adresa", 421 "signup.email.label": "E-mailová adresa",
420 "signup.emailDuplicate": "Používateľ s touto e-mailovou adresou už jestvuje", 422 "signup.emailDuplicate": "Používateľ s touto e-mailovou adresou už jestvuje",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Zakázať oznámenia", 436 "tabs.item.disableNotifications": "Zakázať oznámenia",
435 "tabs.item.disableService": "Vypnúť službu", 437 "tabs.item.disableService": "Vypnúť službu",
436 "tabs.item.edit": "Upraviť",
437 "tabs.item.enableAudio": "Zapnúť zvuk", 438 "tabs.item.enableAudio": "Zapnúť zvuk",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Povoliť oznámenia", 440 "tabs.item.enableNotification": "Povoliť oznámenia",
diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json
index ff3ed1486..2c145d6f4 100644
--- a/src/i18n/locales/sl.json
+++ b/src/i18n/locales/sl.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Reload Service", 9 "connectionLostBanner.cta": "Reload Service",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "Cancel",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Can't connect to Ferdi online services", 27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "You are not connected to the internet.", 31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Automatic",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Import your Ferdi 4 services", 45 "import.headline": "Import your Ferdi 4 services",
38 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
39 "import.skip.label": "I want to add services manually", 47 "import.skip.label": "I want to add services manually",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "Hide", 89 "menu.app.hide": "Hide",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Settings",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Edit", 92 "menu.edit": "Edit",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Settings",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "Settings",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Settings",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "Email address", 421 "signup.email.label": "Email address",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "Edit",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/locales/sq.json b/src/i18n/locales/sq.json
index fd1cbf1fd..59f77fbb1 100644
--- a/src/i18n/locales/sq.json
+++ b/src/i18n/locales/sq.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
15 "global.api.unhealthy": "Can't connect to Ferdi online services", 15 "global.api.unhealthy": "Can't connect to Ferdi online services",
16 "global.edit": "Edit",
16 "global.franzProRequired": "Ferdi Professional Required", 17 "global.franzProRequired": "Ferdi Professional Required",
17 "global.notConnectedToTheInternet": "You are not connected to the internet.", 18 "global.notConnectedToTheInternet": "You are not connected to the internet.",
19 "global.quit": "Quit",
20 "global.settings": "Settings",
18 "global.spellchecker.useDefault": "Use System Default ({default})", 21 "global.spellchecker.useDefault": "Use System Default ({default})",
19 "global.spellchecking.autodetect": "Detect language automatically", 22 "global.spellchecking.autodetect": "Detect language automatically",
20 "global.spellchecking.autodetect.short": "Automatic", 23 "global.spellchecking.autodetect.short": "Automatic",
21 "global.spellchecking.language": "Spell checking language", 24 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "Submit",
22 "import.headline": "Import your Ferdi 4 services", 26 "import.headline": "Import your Ferdi 4 services",
23 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 27 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
24 "import.skip.label": "I want to add services manually", 28 "import.skip.label": "I want to add services manually",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "Check for updates", 55 "menu.app.checkForUpdates": "Check for updates",
52 "menu.app.hide": "Hide", 56 "menu.app.hide": "Hide",
53 "menu.app.hideOthers": "Hide Others", 57 "menu.app.hideOthers": "Hide Others",
54 "menu.app.quit": "Quit",
55 "menu.app.settings": "Settings",
56 "menu.app.unhide": "Unhide", 58 "menu.app.unhide": "Unhide",
57 "menu.edit": "Edit", 59 "menu.edit": "Edit",
58 "menu.edit.copy": "Copy", 60 "menu.edit.copy": "Copy",
@@ -109,7 +111,6 @@
109 "password.link.login": "Sign in to your account", 111 "password.link.login": "Sign in to your account",
110 "password.link.signup": "Create a free account", 112 "password.link.signup": "Create a free account",
111 "password.noUser": "No user with that email address was found", 113 "password.noUser": "No user with that email address was found",
112 "password.submit.label": "Submit",
113 "password.successInfo": "Please check your email", 114 "password.successInfo": "Please check your email",
114 "premiumFeature.button.upgradeAccount": "Upgrade account", 115 "premiumFeature.button.upgradeAccount": "Upgrade account",
115 "pricing.features.accountSync": "Account Synchronisation", 116 "pricing.features.accountSync": "Account Synchronisation",
@@ -179,7 +180,6 @@
179 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 180 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
180 "settings.app.form.showDisabledServices": "Display disabled services tabs", 181 "settings.app.form.showDisabledServices": "Display disabled services tabs",
181 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 182 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
182 "settings.app.headline": "Settings",
183 "settings.app.headlineAdvanced": "Advanced", 183 "settings.app.headlineAdvanced": "Advanced",
184 "settings.app.headlineAppearance": "Appearance", 184 "settings.app.headlineAppearance": "Appearance",
185 "settings.app.headlineGeneral": "General", 185 "settings.app.headlineGeneral": "General",
@@ -197,7 +197,6 @@
197 "settings.navigation.availableServices": "Available services", 197 "settings.navigation.availableServices": "Available services",
198 "settings.navigation.inviteFriends": "Invite Friends", 198 "settings.navigation.inviteFriends": "Invite Friends",
199 "settings.navigation.logout": "Logout", 199 "settings.navigation.logout": "Logout",
200 "settings.navigation.settings": "Settings",
201 "settings.navigation.team": "Manage Team", 200 "settings.navigation.team": "Manage Team",
202 "settings.navigation.yourServices": "Your services", 201 "settings.navigation.yourServices": "Your services",
203 "settings.navigation.yourWorkspaces": "Your workspaces", 202 "settings.navigation.yourWorkspaces": "Your workspaces",
@@ -304,7 +303,6 @@
304 "sidebar.muteApp": "Disable notifications & audio", 303 "sidebar.muteApp": "Disable notifications & audio",
305 "sidebar.openTodosDrawer": "Open Ferdi Todos", 304 "sidebar.openTodosDrawer": "Open Ferdi Todos",
306 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 305 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
307 "sidebar.settings": "Settings",
308 "sidebar.unmuteApp": "Enable notifications & audio", 306 "sidebar.unmuteApp": "Enable notifications & audio",
309 "signup.email.label": "Email address", 307 "signup.email.label": "Email address",
310 "signup.emailDuplicate": "A user with that email address already exists", 308 "signup.emailDuplicate": "A user with that email address already exists",
@@ -321,7 +319,6 @@
321 "tabs.item.disableAudio": "Disable audio", 319 "tabs.item.disableAudio": "Disable audio",
322 "tabs.item.disableNotifications": "Disable notifications", 320 "tabs.item.disableNotifications": "Disable notifications",
323 "tabs.item.disableService": "Disable service", 321 "tabs.item.disableService": "Disable service",
324 "tabs.item.edit": "Edit",
325 "tabs.item.enableAudio": "Enable audio", 322 "tabs.item.enableAudio": "Enable audio",
326 "tabs.item.enableNotification": "Enable notifications", 323 "tabs.item.enableNotification": "Enable notifications",
327 "tabs.item.enableService": "Enable service", 324 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
index 6eca2d9c2..8ee9417f6 100644
--- a/src/i18n/locales/sr.json
+++ b/src/i18n/locales/sr.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Prilagođen server", 4 "changeserver.customServerLabel": "Prilagođen server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "Сервер", 6 "changeserver.label": "Сервер",
7 "changeserver.submit": "Pošalji",
8 "changeserver.urlError": "Унесите исправан URL", 7 "changeserver.urlError": "Унесите исправан URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "Поново учирај услугу", 9 "connectionLostBanner.cta": "Поново учирај услугу",
11 "connectionLostBanner.informationLink": "Шта се десило?", 10 "connectionLostBanner.informationLink": "Шта се десило?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Publish debugging information", 13 "feature.debugger.title": "Publish debugging information",
15 "feature.nightlyBuilds.activate": "Активирај", 14 "feature.nightlyBuilds.activate": "Активирај",
16 "feature.nightlyBuilds.cancel": "Odustani",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Search...", 25 "feature.quickSwitch.search": "Search...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Nije moguće pristupiti Ferdi-ovim on-line servisima. ", 27 "global.api.unhealthy": "Nije moguće pristupiti Ferdi-ovim on-line servisima. ",
28 "global.cancel": "Odustani",
29 "global.edit": "Uredi",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Niste povezani sa serverom.", 31 "global.notConnectedToTheInternet": "Niste povezani sa serverom.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Postavke",
31 "global.spellchecker.useDefault": "Use System Default ({default})", 37 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Detect language automatically",
33 "global.spellchecking.autodetect.short": "Аутоматски", 39 "global.spellchecking.autodetect.short": "Аутоматски",
34 "global.spellchecking.language": "Spell checking language", 40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Pošalji",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Uvezite svoje Ferdi 4 servise", 45 "import.headline": "Uvezite svoje Ferdi 4 servise",
38 "import.notSupportedHeadline": "Servis trenutno nije podržan u Ferdi 5", 46 "import.notSupportedHeadline": "Servis trenutno nije podržan u Ferdi 5",
39 "import.skip.label": "Желим да додам услуге ручно", 47 "import.skip.label": "Желим да додам услуге ручно",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "O Francu", 86 "menu.app.about": "O Francu",
79 "menu.app.announcement": "What's new?",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Potraži ažuriranja", 88 "menu.app.checkForUpdates": "Potraži ažuriranja",
82 "menu.app.hide": "Sakrij", 89 "menu.app.hide": "Sakrij",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Postavke",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Uredi", 92 "menu.edit": "Uredi",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Prijavite se na Vaš račun", 152 "password.link.login": "Prijavite se na Vaš račun",
148 "password.link.signup": "Stvorite besplatan račun", 153 "password.link.signup": "Stvorite besplatan račun",
149 "password.noUser": "Ne postoji ni jedan korisnik s tom e-mail adresom", 154 "password.noUser": "Ne postoji ni jedan korisnik s tom e-mail adresom",
150 "password.submit.label": "Pošalji",
151 "password.successInfo": "Molimo Vas da provjerite vašu e-mail adresu", 155 "password.successInfo": "Molimo Vas da provjerite vašu e-mail adresu",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Obuhvati i beta verzije", 218 "settings.app.form.beta": "Obuhvati i beta verzije",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Омогући убрзање графичке јединице", 224 "settings.app.form.enableGPUAcceleration": "Омогући убрзање графичке јединице",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Postavke",
255 "settings.app.headlineAdvanced": "Napredne alatke", 259 "settings.app.headlineAdvanced": "Napredne alatke",
256 "settings.app.headlineAppearance": "Izgled", 260 "settings.app.headlineAppearance": "Izgled",
257 "settings.app.headlineGeneral": "Općenito", 261 "settings.app.headlineGeneral": "Općenito",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Korisnički nalog", 285 "settings.navigation.account": "Korisnički nalog",
282 "settings.navigation.availableServices": "Dostupne usluge", 286 "settings.navigation.availableServices": "Dostupne usluge",
283 "settings.navigation.logout": "Odjava", 287 "settings.navigation.logout": "Odjava",
284 "settings.navigation.settings": "Postavke",
285 "settings.navigation.supportFerdi": "O Francu", 288 "settings.navigation.supportFerdi": "O Francu",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Vaše usluge", 290 "settings.navigation.yourServices": "Vaše usluge",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Онемогући обавештења и звукове", 417 "sidebar.muteApp": "Онемогући обавештења и звукове",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Postavke",
418 "sidebar.unmuteApp": "Искључи обавештења и звукове", 420 "sidebar.unmuteApp": "Искључи обавештења и звукове",
419 "signup.email.label": "Vaša e-adresa", 421 "signup.email.label": "Vaša e-adresa",
420 "signup.emailDuplicate": "Već postoji korisnik s tom e-mail adresom", 422 "signup.emailDuplicate": "Već postoji korisnik s tom e-mail adresom",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Onemogući obavijesti", 436 "tabs.item.disableNotifications": "Onemogući obavijesti",
435 "tabs.item.disableService": "Onemogući servis", 437 "tabs.item.disableService": "Onemogući servis",
436 "tabs.item.edit": "Uredi",
437 "tabs.item.enableAudio": "Omogućite zvuk", 438 "tabs.item.enableAudio": "Omogućite zvuk",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Omogućite obavijesti", 440 "tabs.item.enableNotification": "Omogućite obavijesti",
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json
index f6dfdd4ad..87b92e398 100644
--- a/src/i18n/locales/sv.json
+++ b/src/i18n/locales/sv.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Anpassad server", 4 "changeserver.customServerLabel": "Anpassad server",
5 "changeserver.headline": "Byt server", 5 "changeserver.headline": "Byt server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.submit": "Skicka",
8 "changeserver.urlError": "Ange en giltig URL", 7 "changeserver.urlError": "Ange en giltig URL",
9 "changeserver.warning": "Extra inställningar från Ferdi kommer inte sparas", 8 "changeserver.warning": "Extra inställningar från Ferdi kommer inte sparas",
10 "connectionLostBanner.cta": "Ladda om tjänst", 9 "connectionLostBanner.cta": "Ladda om tjänst",
11 "connectionLostBanner.informationLink": "Vad hände?", 10 "connectionLostBanner.informationLink": "Vad hände?",
12 "connectionLostBanner.message": "Åh nej! Ferdi förlorade anslutningen till {name}.", 11 "connectionLostBanner.message": "Åh nej! Ferdi förlorade anslutningen till {name}.",
13 "feature.announcements.changelog.headline": "Ändringar i Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Skicka felsökningsinformation", 13 "feature.debugger.title": "Skicka felsökningsinformation",
15 "feature.nightlyBuilds.activate": "Aktivera", 14 "feature.nightlyBuilds.activate": "Aktivera",
16 "feature.nightlyBuilds.cancel": "Avbryt",
17 "feature.nightlyBuilds.info": "Nattliga kompileringar är väldigt experimentella versioner av Ferdi som kan innehålla ofärdiga och ännu ej testade funktioner. Nattliga kompilering är i första hand tänkt för utvecklare för att kunna testa hur nya funktioner fungerar och presterar. Är du osäker på vad detta innebär rekommenderas du att inte aktivera nattliga kompileringar.", 15 "feature.nightlyBuilds.info": "Nattliga kompileringar är väldigt experimentella versioner av Ferdi som kan innehålla ofärdiga och ännu ej testade funktioner. Nattliga kompilering är i första hand tänkt för utvecklare för att kunna testa hur nya funktioner fungerar och presterar. Är du osäker på vad detta innebär rekommenderas du att inte aktivera nattliga kompileringar.",
18 "feature.nightlyBuilds.title": "Nattlig kompilering", 16 "feature.nightlyBuilds.title": "Nattlig kompilering",
19 "feature.publishDebugInfo.error": "Ett fel uppstod när felsökningsinformationen skulle skickas. Försök igen senare eller se konsolen för mer information.", 17 "feature.publishDebugInfo.error": "Ett fel uppstod när felsökningsinformationen skulle skickas. Försök igen senare eller se konsolen för mer information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Sök...", 25 "feature.quickSwitch.search": "Sök...",
28 "feature.quickSwitch.title": "Snabbväxling", 26 "feature.quickSwitch.title": "Snabbväxling",
29 "global.api.unhealthy": "Kan inte ansluta till Ferdis onlinetjänster", 27 "global.api.unhealthy": "Kan inte ansluta till Ferdis onlinetjänster",
28 "global.cancel": "Avbryt",
29 "global.edit": "Redigera",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Du är inte ansluten till Internet.", 31 "global.notConnectedToTheInternet": "Du är inte ansluten till Internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Inställningar",
31 "global.spellchecker.useDefault": "Använd systemstandard ({default})", 37 "global.spellchecker.useDefault": "Använd systemstandard ({default})",
32 "global.spellchecking.autodetect": "Identifiera språk automatiskt", 38 "global.spellchecking.autodetect": "Identifiera språk automatiskt",
33 "global.spellchecking.autodetect.short": "Automatisk", 39 "global.spellchecking.autodetect.short": "Automatisk",
34 "global.spellchecking.language": "Rättstavningsspråk", 40 "global.spellchecking.language": "Rättstavningsspråk",
41 "global.submit": "Skicka",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Importera dina Ferdi 4-tjänster", 45 "import.headline": "Importera dina Ferdi 4-tjänster",
38 "import.notSupportedHeadline": "Tjänster som ännu inte stöds i Ferdi 5", 46 "import.notSupportedHeadline": "Tjänster som ännu inte stöds i Ferdi 5",
39 "import.skip.label": "Jag vill lägga till tjänster manuellt", 47 "import.skip.label": "Jag vill lägga till tjänster manuellt",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Stäng Todos-lådan", 84 "menu.Todoss.closeTodosDrawer": "Stäng Todos-lådan",
77 "menu.Todoss.openTodosDrawer": "Öppna Todos-lådan", 85 "menu.Todoss.openTodosDrawer": "Öppna Todos-lådan",
78 "menu.app.about": "Om Ferdi", 86 "menu.app.about": "Om Ferdi",
79 "menu.app.announcement": "Vad nytt har hänt?",
80 "menu.app.autohideMenuBar": "Dölj menyraden automatiskt", 87 "menu.app.autohideMenuBar": "Dölj menyraden automatiskt",
81 "menu.app.checkForUpdates": "Sök efter uppdateringar", 88 "menu.app.checkForUpdates": "Sök efter uppdateringar",
82 "menu.app.hide": "Dölj", 89 "menu.app.hide": "Dölj",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "Inställningar",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "Redigera", 92 "menu.edit": "Redigera",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Logga in på ditt konto", 152 "password.link.login": "Logga in på ditt konto",
148 "password.link.signup": "Skapa ett gratis konto", 153 "password.link.signup": "Skapa ett gratis konto",
149 "password.noUser": "Ingen användare med den e-postadressen hittades", 154 "password.noUser": "Ingen användare med den e-postadressen hittades",
150 "password.submit.label": "Skicka",
151 "password.successInfo": "Vänligen kontrollera din e-post", 155 "password.successInfo": "Vänligen kontrollera din e-post",
152 "pricing.features.accountSync": "Synkronisering av konto", 156 "pricing.features.accountSync": "Synkronisering av konto",
153 "pricing.features.customWebsites": "Lägg till egna webbplatser", 157 "pricing.features.customWebsites": "Lägg till egna webbplatser",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Inkludera betaversioner", 218 "settings.app.form.beta": "Inkludera betaversioner",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Anpassad Todo-server", 222 "settings.app.form.customTodoServer": "Anpassad Todo-server",
218 "settings.app.form.darkMode": "Aktivera mörkt läge", 223 "settings.app.form.darkMode": "Aktivera mörkt läge",
219 "settings.app.form.enableGPUAcceleration": "Aktivera GPU-hårdvaruacceleration", 224 "settings.app.form.enableGPUAcceleration": "Aktivera GPU-hårdvaruacceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Tillåt att TouchID används för att låsa upp Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Tillåt att TouchID används för att låsa upp Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Inställningar",
255 "settings.app.headlineAdvanced": "Avancerat", 259 "settings.app.headlineAdvanced": "Avancerat",
256 "settings.app.headlineAppearance": "Utseende", 260 "settings.app.headlineAppearance": "Utseende",
257 "settings.app.headlineGeneral": "Allmänt", 261 "settings.app.headlineGeneral": "Allmänt",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Konto", 285 "settings.navigation.account": "Konto",
282 "settings.navigation.availableServices": "Tillgängliga tjänster", 286 "settings.navigation.availableServices": "Tillgängliga tjänster",
283 "settings.navigation.logout": "Logga ut", 287 "settings.navigation.logout": "Logga ut",
284 "settings.navigation.settings": "Inställningar",
285 "settings.navigation.supportFerdi": "Om Ferdi", 288 "settings.navigation.supportFerdi": "Om Ferdi",
286 "settings.navigation.team": "Hantera grupp", 289 "settings.navigation.team": "Hantera grupp",
287 "settings.navigation.yourServices": "Dina tjänster", 290 "settings.navigation.yourServices": "Dina tjänster",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Inaktivera notifikationer och ljud", 417 "sidebar.muteApp": "Inaktivera notifikationer och ljud",
415 "sidebar.openTodosDrawer": "Öppna Ferdi Todos", 418 "sidebar.openTodosDrawer": "Öppna Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Öppna arbetsytan", 419 "sidebar.openWorkspaceDrawer": "Öppna arbetsytan",
417 "sidebar.settings": "Inställningar",
418 "sidebar.unmuteApp": "Aktivera aviseringar och ljud", 420 "sidebar.unmuteApp": "Aktivera aviseringar och ljud",
419 "signup.email.label": "E-postadress", 421 "signup.email.label": "E-postadress",
420 "signup.emailDuplicate": "En användare med den e-postadressen finns redan", 422 "signup.emailDuplicate": "En användare med den e-postadressen finns redan",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Inaktivera aviseringar", 436 "tabs.item.disableNotifications": "Inaktivera aviseringar",
435 "tabs.item.disableService": "Inaktivera tjänst", 437 "tabs.item.disableService": "Inaktivera tjänst",
436 "tabs.item.edit": "Redigera",
437 "tabs.item.enableAudio": "Aktivera ljud", 438 "tabs.item.enableAudio": "Aktivera ljud",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Aktivera aviseringar", 440 "tabs.item.enableNotification": "Aktivera aviseringar",
diff --git a/src/i18n/locales/te.json b/src/i18n/locales/te.json
new file mode 100644
index 000000000..be9bbb961
--- /dev/null
+++ b/src/i18n/locales/te.json
@@ -0,0 +1,465 @@
1{
2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "Something went wrong",
4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server",
7 "changeserver.urlError": "Enter a valid URL",
8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
9 "connectionLostBanner.cta": "Reload Service",
10 "connectionLostBanner.informationLink": "What happened?",
11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
12 "feature.basicAuth.signIn": "Sign In",
13 "feature.debugger.title": "Publish debugging information",
14 "feature.nightlyBuilds.activate": "Activate",
15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
16 "feature.nightlyBuilds.title": "Nightly Builds",
17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
18 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service",
19 "feature.publishDebugInfo.privacy": "Privacy policy",
20 "feature.publishDebugInfo.publish": "Accept and publish",
21 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at",
22 "feature.publishDebugInfo.terms": "Terms of service",
23 "feature.publishDebugInfo.title": "Publish debug information",
24 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
25 "feature.quickSwitch.search": "Search...",
26 "feature.quickSwitch.title": "QuickSwitch",
27 "global.api.unhealthy": "Can't connect to Ferdi online services",
28 "global.cancel": "Cancel",
29 "global.edit": "Edit",
30 "global.no": "No",
31 "global.notConnectedToTheInternet": "You are not connected to the internet.",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Settings",
37 "global.spellchecker.useDefault": "Use System Default ({default})",
38 "global.spellchecking.autodetect": "Detect language automatically",
39 "global.spellchecking.autodetect.short": "Automatic",
40 "global.spellchecking.language": "Spell checking language",
41 "global.submit": "Submit",
42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
45 "import.headline": "Import your Ferdi 4 services",
46 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
47 "import.skip.label": "I want to add services manually",
48 "import.submit.label": "Import services",
49 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
50 "infobar.buttonChangelog": "What is new?",
51 "infobar.buttonInstallUpdate": "Restart & install update",
52 "infobar.buttonReloadServices": "Reload services",
53 "infobar.hide": "Hide",
54 "infobar.requiredRequestsFailed": "Could not load services and user information",
55 "infobar.servicesUpdated": "Your services have been updated.",
56 "infobar.updateAvailable": "A new update for Ferdi is available.",
57 "infobox.dismiss": "Dismiss",
58 "invite.email.label": "Email address",
59 "invite.headline.friends": "Invite 3 of your friends or colleagues",
60 "invite.name.label": "Name",
61 "invite.skip.label": "I want to do this later",
62 "invite.submit.label": "Send invites",
63 "invite.successInfo": "Invitations sent successfully",
64 "locked.headline": "Locked",
65 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
66 "locked.invalidCredentials": "Password invalid",
67 "locked.password.label": "Password",
68 "locked.submit.label": "Unlock",
69 "locked.touchId": "Unlock with Touch ID",
70 "locked.touchIdPrompt": "unlock via Touch ID",
71 "locked.unlockWithPassword": "Unlock with Password",
72 "login.changeServer": "Change server",
73 "login.customServerQuestion": "Using a Franz account to log in?",
74 "login.customServerSuggestion": "Try importing your Franz account into Ferdi",
75 "login.email.label": "Email address",
76 "login.headline": "Sign in",
77 "login.invalidCredentials": "Email or password not valid",
78 "login.link.password": "Reset password",
79 "login.link.signup": "Create a free account",
80 "login.password.label": "Password",
81 "login.serverLogout": "Your session expired, please login again.",
82 "login.submit.label": "Sign in",
83 "login.tokenExpired": "Your session expired, please login again.",
84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
86 "menu.app.about": "About Ferdi",
87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
88 "menu.app.checkForUpdates": "Check for updates",
89 "menu.app.hide": "Hide",
90 "menu.app.hideOthers": "Hide Others",
91 "menu.app.unhide": "Unhide",
92 "menu.edit": "Edit",
93 "menu.edit.copy": "Copy",
94 "menu.edit.cut": "Cut",
95 "menu.edit.delete": "Delete",
96 "menu.edit.emojiSymbols": "Emoji & Symbols",
97 "menu.edit.findInPage": "Find in Page",
98 "menu.edit.paste": "Paste",
99 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
100 "menu.edit.redo": "Redo",
101 "menu.edit.selectAll": "Select All",
102 "menu.edit.speech": "Speech",
103 "menu.edit.startDictation": "Start Dictation",
104 "menu.edit.startSpeaking": "Start Speaking",
105 "menu.edit.stopSpeaking": "Stop Speaking",
106 "menu.edit.undo": "Undo",
107 "menu.file": "File",
108 "menu.help": "Help",
109 "menu.help.changelog": "Changelog",
110 "menu.help.debugInfo": "Copy Debug Information",
111 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
112 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
113 "menu.help.importExportData": "Import/Export Configuration Data",
114 "menu.help.learnMore": "Learn More",
115 "menu.help.privacy": "Privacy Statement",
116 "menu.help.publishDebugInfo": "Publish Debug Information",
117 "menu.help.support": "Support",
118 "menu.help.tos": "Terms of Service",
119 "menu.services": "Services",
120 "menu.services.activatePreviousService": "Activate previous service",
121 "menu.services.addNewService": "Add New Service",
122 "menu.services.goHome": "Home",
123 "menu.services.setNextServiceActive": "Activate next service",
124 "menu.todos": "Todos",
125 "menu.todos.enableTodos": "Enable Todos",
126 "menu.view": "View",
127 "menu.view.back": "Back",
128 "menu.view.forward": "Forward",
129 "menu.view.lockFerdi": "Lock Ferdi",
130 "menu.view.openQuickSwitch": "Open Quick Switch",
131 "menu.view.reloadFerdi": "Reload Ferdi",
132 "menu.view.reloadService": "Reload Service",
133 "menu.view.reloadTodos": "Reload ToDos",
134 "menu.view.resetZoom": "Actual Size",
135 "menu.view.toggleDarkMode": "Toggle Dark Mode",
136 "menu.view.toggleDevTools": "Toggle Developer Tools",
137 "menu.view.toggleFullScreen": "Toggle Full Screen",
138 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
139 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools",
140 "menu.view.zoomIn": "Zoom In",
141 "menu.view.zoomOut": "Zoom Out",
142 "menu.window": "Window",
143 "menu.window.close": "Close",
144 "menu.window.minimize": "Minimize",
145 "menu.workspaces": "Workspaces",
146 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
147 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
148 "menu.workspaces.defaultWorkspace": "All services",
149 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
150 "password.email.label": "Email address",
151 "password.headline": "Reset password",
152 "password.link.login": "Sign in to your account",
153 "password.link.signup": "Create a free account",
154 "password.noUser": "No user with that email address was found",
155 "password.successInfo": "Please check your email",
156 "pricing.features.accountSync": "Account Synchronisation",
157 "pricing.features.customWebsites": "Add Custom Websites",
158 "pricing.features.desktopNotifications": "Desktop Notifications",
159 "pricing.features.onPremise": "On-premise & other Hosted Services",
160 "pricing.features.recipes": "Choose from more than 70 Services",
161 "pricing.features.serviceProxies": "Service Proxies",
162 "pricing.features.spellchecker": "Spellchecker support",
163 "pricing.features.teamManagement": "Team Management",
164 "pricing.features.thirdPartyServices": "Install 3rd party services",
165 "pricing.features.unlimitedServices": "Add unlimited services",
166 "pricing.features.workspaces": "Workspaces",
167 "service.crashHandler.action": "Reload {name}",
168 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
169 "service.crashHandler.headline": "Oh no!",
170 "service.crashHandler.text": "{name} has caused an error.",
171 "service.disabledHandler.action": "Enable {name}",
172 "service.disabledHandler.headline": "{name} is disabled",
173 "service.errorHandler.action": "Reload {name}",
174 "service.errorHandler.editAction": "Edit {name}",
175 "service.errorHandler.headline": "Oh no!",
176 "service.errorHandler.message": "Error",
177 "service.errorHandler.text": "{name} has failed to load.",
178 "service.webviewLoader.loading": "Loading {service}",
179 "services.getStarted": "Get started",
180 "services.login": "Please login to use Ferdi.",
181 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
182 "services.serverless": "Use Ferdi without an Account",
183 "services.welcome": "Welcome to Ferdi",
184 "settings.account.account.editButton": "Edit account",
185 "settings.account.accountUnavailable": "Account is unavailable",
186 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
187 "settings.account.buttonSave": "Update profile",
188 "settings.account.deleteAccount": "Delete account",
189 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
190 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
191 "settings.account.headline": "Account",
192 "settings.account.headlineAccount": "Account information",
193 "settings.account.headlineDangerZone": "Danger Zone",
194 "settings.account.headlineInvoices": "Invoices",
195 "settings.account.headlinePassword": "Change password",
196 "settings.account.headlineProfile": "Update profile",
197 "settings.account.successInfo": "Your changes have been saved",
198 "settings.account.tryReloadServices": "Try again",
199 "settings.account.tryReloadUserInfoRequest": "Try again",
200 "settings.account.userInfoRequestFailed": "Could not load user information",
201 "settings.account.yourLicense": "Your Ferdi License",
202 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
203 "settings.app.buttonClearAllCache": "Clear cache",
204 "settings.app.buttonInstallUpdate": "Restart & install update",
205 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder",
206 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
207 "settings.app.buttonSearchForUpdate": "Check for updates",
208 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
209 "settings.app.cacheNotCleared": "Couldn't clear all cache",
210 "settings.app.closeSettings": "Close settings",
211 "settings.app.currentVersion": "Current version:",
212 "settings.app.form.accentColor": "Accent color",
213 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting",
214 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer",
215 "settings.app.form.autoLaunchInBackground": "Open in background",
216 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start",
217 "settings.app.form.automaticUpdates": "Enable updates",
218 "settings.app.form.beta": "Include beta versions",
219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
222 "settings.app.form.customTodoServer": "Custom Todo Server",
223 "settings.app.form.darkMode": "Enable dark mode",
224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
225 "settings.app.form.enableLock": "Enable Password Lock",
226 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar",
227 "settings.app.form.enableSpellchecking": "Enable spell checking",
228 "settings.app.form.enableSystemTray": "Show Ferdi in system tray",
229 "settings.app.form.enableTodos": "Enable Ferdi Todos",
230 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup",
231 "settings.app.form.hibernationStrategy": "Hibernation strategy",
232 "settings.app.form.iconSize": "Service icon size",
233 "settings.app.form.inactivityLock": "Lock after inactivity",
234 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
235 "settings.app.form.language": "Language",
236 "settings.app.form.lockPassword": "Password",
237 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
238 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour",
239 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
240 "settings.app.form.passwordToggle": "Password toggle",
241 "settings.app.form.predefinedTodoServer": "Todo Server",
242 "settings.app.form.privateNotifications": "Don't show message content in notifications",
243 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
244 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
245 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",
246 "settings.app.form.scheduledDNDEnd": "To",
247 "settings.app.form.scheduledDNDStart": "From",
248 "settings.app.form.searchEngine": "Search engine",
249 "settings.app.form.sentry": "Send telemetry data",
250 "settings.app.form.serviceRibbonWidth": "Sidebar width",
251 "settings.app.form.showDisabledServices": "Display disabled services tabs",
252 "settings.app.form.showDragArea": "Show draggable area on window",
253 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
254 "settings.app.form.startMinimized": "Start minimized",
255 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
257 "settings.app.form.useVerticalStyle": "Use horizontal style",
258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
259 "settings.app.headlineAdvanced": "Advanced",
260 "settings.app.headlineAppearance": "Appearance",
261 "settings.app.headlineGeneral": "General",
262 "settings.app.headlineLanguage": "Language",
263 "settings.app.headlinePrivacy": "Privacy",
264 "settings.app.headlineUpdates": "Updates",
265 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
266 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
267 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
268 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
269 "settings.app.lockedPassword": "Password",
270 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
271 "settings.app.restartRequired": "Changes require restart",
272 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
273 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
274 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
275 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
276 "settings.app.subheadlineCache": "Cache",
277 "settings.app.subheadlineFerdiProfile": "Ferdi Profile",
278 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.",
279 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
280 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
281 "settings.app.updateStatusAvailable": "Update available, downloading...",
282 "settings.app.updateStatusSearching": "Is searching for update",
283 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi",
284 "settings.invite.headline": "Invite Friends",
285 "settings.navigation.account": "Account",
286 "settings.navigation.availableServices": "Available services",
287 "settings.navigation.logout": "Logout",
288 "settings.navigation.supportFerdi": "About Ferdi",
289 "settings.navigation.team": "Manage Team",
290 "settings.navigation.yourServices": "Your services",
291 "settings.navigation.yourWorkspaces": "Your workspaces",
292 "settings.recipes.all": "All services",
293 "settings.recipes.custom": "Custom Services",
294 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
295 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
296 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
297 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:",
298 "settings.recipes.customService.openDevDocs": "Developer Documentation",
299 "settings.recipes.customService.openFolder": "Open folder",
300 "settings.recipes.headline": "Available services",
301 "settings.recipes.missingService": "Missing a service?",
302 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.",
303 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
304 "settings.searchService": "Search service",
305 "settings.service.error.goBack": "Back to services",
306 "settings.service.error.headline": "Error",
307 "settings.service.error.message": "Could not load service recipe.",
308 "settings.service.form.addServiceHeadline": "Add {name}",
309 "settings.service.form.availableServices": "Available services",
310 "settings.service.form.customUrl": "Custom server",
311 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
312 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
313 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
314 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
315 "settings.service.form.deleteButton": "Delete service",
316 "settings.service.form.editServiceHeadline": "Edit {name}",
317 "settings.service.form.enableAudio": "Enable audio",
318 "settings.service.form.enableBadge": "Show unread message badges",
319 "settings.service.form.enableDarkMode": "Enable Dark Mode",
320 "settings.service.form.enableHibernation": "Enable hibernation",
321 "settings.service.form.enableNotification": "Enable notifications",
322 "settings.service.form.enableService": "Enable service",
323 "settings.service.form.headlineBadges": "Unread message badges",
324 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings",
325 "settings.service.form.headlineGeneral": "General",
326 "settings.service.form.headlineNotifications": "Notifications",
327 "settings.service.form.icon": "Custom icon",
328 "settings.service.form.iconDelete": "Delete",
329 "settings.service.form.iconUpload": "Drop your image, or click here",
330 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
331 "settings.service.form.indirectMessages": "Show message badge for all new messages",
332 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.",
333 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
334 "settings.service.form.name": "Name",
335 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
336 "settings.service.form.openUserCss": "Open user.css",
337 "settings.service.form.openUserJs": "Open user.js",
338 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
339 "settings.service.form.proxy.host": "Proxy Host/IP",
340 "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.",
341 "settings.service.form.proxy.isEnabled": "Use Proxy",
342 "settings.service.form.proxy.password": "Password (optional)",
343 "settings.service.form.proxy.port": "Port",
344 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
345 "settings.service.form.proxy.user": "User (optional)",
346 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
347 "settings.service.form.saveButton": "Save service",
348 "settings.service.form.tabHosted": "Hosted",
349 "settings.service.form.tabOnPremise": "Self hosted ⭐️",
350 "settings.service.form.team": "Team",
351 "settings.service.form.useHostedService": "Use the hosted {name} service.",
352 "settings.service.form.yourServices": "Your services",
353 "settings.services.deletedInfo": "Service has been deleted",
354 "settings.services.discoverServices": "Discover services",
355 "settings.services.headline": "Your services",
356 "settings.services.noServicesAdded": "Start by adding a service.",
357 "settings.services.servicesRequestFailed": "Could not load your services",
358 "settings.services.tooltip.isDisabled": "Service is disabled",
359 "settings.services.tooltip.isMuted": "All sounds are muted",
360 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
361 "settings.services.updatedInfo": "Your changes have been saved",
362 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
363 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
364 "settings.supportFerdi.headline": "About Ferdi",
365 "settings.supportFerdi.openSurvey": "Open survey",
366 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
367 "settings.supportFerdi.textDonationAnd": "and",
368 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
369 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors",
370 "settings.supportFerdi.textListContributors": "Full list of contributors",
371 "settings.supportFerdi.textListContributorsHere": "here",
372 "settings.supportFerdi.textOpenCollective": "Open Collective",
373 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
374 "settings.supportFerdi.textSupportWelcomeHere": "here",
375 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
376 "settings.supportFerdi.title": "Do you like Ferdi?",
377 "settings.team.contentHeadline": "Franz Team Management",
378 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
379 "settings.team.headline": "Team",
380 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.",
381 "settings.team.manageAction": "Manage your Team on meetfranz.com",
382 "settings.team.teamsUnavailable": "Teams are unavailable",
383 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.",
384 "settings.user.form.accountType.company": "Company",
385 "settings.user.form.accountType.individual": "Individual",
386 "settings.user.form.accountType.label": "Account type",
387 "settings.user.form.accountType.non-profit": "Non-Profit",
388 "settings.user.form.currentPassword": "Current password",
389 "settings.user.form.email": "Email",
390 "settings.user.form.firstname": "First Name",
391 "settings.user.form.lastname": "Last Name",
392 "settings.user.form.newPassword": "New password",
393 "settings.workspace.add.form.name": "Name",
394 "settings.workspace.add.form.submitButton": "Create workspace",
395 "settings.workspace.form.buttonDelete": "Delete workspace",
396 "settings.workspace.form.buttonSave": "Save workspace",
397 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
398 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
399 "settings.workspace.form.name": "Name",
400 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
401 "settings.workspace.form.yourWorkspaces": "Your workspaces",
402 "settings.workspaces.deletedInfo": "Workspace has been deleted",
403 "settings.workspaces.headline": "Your workspaces",
404 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.",
405 "settings.workspaces.tryReloadWorkspaces": "Try again",
406 "settings.workspaces.updatedInfo": "Your changes have been saved",
407 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
408 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
409 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
410 "setupAssistant.headline": "Let's get started",
411 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.",
412 "setupAssistant.submit.label": "Let's go",
413 "sidebar.addNewService": "Add new service",
414 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
415 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
416 "sidebar.lockFerdi": "Lock Ferdi",
417 "sidebar.muteApp": "Disable notifications & audio",
418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
420 "sidebar.unmuteApp": "Enable notifications & audio",
421 "signup.email.label": "Email address",
422 "signup.emailDuplicate": "A user with that email address already exists",
423 "signup.firstname.label": "First Name",
424 "signup.headline": "Sign up",
425 "signup.lastname.label": "Last Name",
426 "signup.legal.info": "By creating a Ferdi account you accept the",
427 "signup.legal.privacy": "Privacy Statement",
428 "signup.legal.terms": "Terms of service",
429 "signup.link.login": "Already have an account, sign in?",
430 "signup.password.label": "Password",
431 "signup.submit.label": "Create account",
432 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
433 "tabs.item.deleteService": "Delete service",
434 "tabs.item.disableAudio": "Disable audio",
435 "tabs.item.disableDarkMode": "Disable Dark mode",
436 "tabs.item.disableNotifications": "Disable notifications",
437 "tabs.item.disableService": "Disable service",
438 "tabs.item.enableAudio": "Enable audio",
439 "tabs.item.enableDarkMode": "Enable Dark mode",
440 "tabs.item.enableNotification": "Enable notifications",
441 "tabs.item.enableService": "Enable service",
442 "tabs.item.hibernateService": "Hibernate service",
443 "tabs.item.reload": "Reload",
444 "tabs.item.wakeUpService": "Wake up service",
445 "validation.email": "{field} is not valid",
446 "validation.minLength": "{field} should be at least {length} characters long",
447 "validation.oneRequired": "At least one is required",
448 "validation.required": "{field} is required",
449 "validation.url": "{field} is not a valid URL",
450 "webControls.back": "Back",
451 "webControls.forward": "Forward",
452 "webControls.goHome": "Home",
453 "webControls.openInBrowser": "Open in Browser",
454 "webControls.reload": "Reload",
455 "welcome.loginButton": "Login to your account",
456 "welcome.signupButton": "Create a free account",
457 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
458 "workspaceDrawer.allServices": "All services",
459 "workspaceDrawer.headline": "Workspaces",
460 "workspaceDrawer.item.contextMenuEdit": "edit",
461 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
462 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
463 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
464 "workspaces.switchingIndicator.switchingTo": "Switching to"
465}
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index f1094a69d..3b91dfad0 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Özel sunucu", 4 "changeserver.customServerLabel": "Özel sunucu",
5 "changeserver.headline": "Sunucuyu değiştir", 5 "changeserver.headline": "Sunucuyu değiştir",
6 "changeserver.label": "Sunucu", 6 "changeserver.label": "Sunucu",
7 "changeserver.submit": "Gönder",
8 "changeserver.urlError": "Geçerli bir URL girin", 7 "changeserver.urlError": "Geçerli bir URL girin",
9 "changeserver.warning": "Ferdi'nin sunduğu ekstra ayarlar kaydedilmeyecektir", 8 "changeserver.warning": "Ferdi'nin sunduğu ekstra ayarlar kaydedilmeyecektir",
10 "connectionLostBanner.cta": "Servisi Tekrar Yükle", 9 "connectionLostBanner.cta": "Servisi Tekrar Yükle",
11 "connectionLostBanner.informationLink": "Ne oldu?", 10 "connectionLostBanner.informationLink": "Ne oldu?",
12 "connectionLostBanner.message": "Nayır, nolamaz! Ferdi {name} ile bağlantısını yitirdi.", 11 "connectionLostBanner.message": "Nayır, nolamaz! Ferdi {name} ile bağlantısını yitirdi.",
13 "feature.announcements.changelog.headline": "Ferdi {version} Sürümündeki Değişiklikler", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Hata ayıklama bilgisini yayımla", 13 "feature.debugger.title": "Hata ayıklama bilgisini yayımla",
15 "feature.nightlyBuilds.activate": "Etkinleştir", 14 "feature.nightlyBuilds.activate": "Etkinleştir",
16 "feature.nightlyBuilds.cancel": "İptal",
17 "feature.nightlyBuilds.info": "Nightly yapılar Ferdi'nin deneysel sürümleri olup tamamlanmamış özellikler içerebilir. Bu nightly yapılar genellikle geliştiriciler tarafından yeni özellikleri deneyip geliştirmek için kullanılır. Ne yaptığınızı bilmiyorsanız nightly yapıları etkinleştirmeyin.", 15 "feature.nightlyBuilds.info": "Nightly yapılar Ferdi'nin deneysel sürümleri olup tamamlanmamış özellikler içerebilir. Bu nightly yapılar genellikle geliştiriciler tarafından yeni özellikleri deneyip geliştirmek için kullanılır. Ne yaptığınızı bilmiyorsanız nightly yapıları etkinleştirmeyin.",
18 "feature.nightlyBuilds.title": "Nightly Yapılar", 16 "feature.nightlyBuilds.title": "Nightly Yapılar",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Ara...", 25 "feature.quickSwitch.search": "Ara...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "Ferdi hizmetlerine şu anda erişilemiyor", 27 "global.api.unhealthy": "Ferdi hizmetlerine şu anda erişilemiyor",
28 "global.cancel": "İptal",
29 "global.edit": "Düzenle",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "İnternete bağlı değilsiniz.", 31 "global.notConnectedToTheInternet": "İnternete bağlı değilsiniz.",
32 "global.ok": "Ok",
33 "global.quit": "Çık",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Ayarlar",
31 "global.spellchecker.useDefault": "Sistem Dilini Kullan ({default})", 37 "global.spellchecker.useDefault": "Sistem Dilini Kullan ({default})",
32 "global.spellchecking.autodetect": "Dili otomatik tespit et", 38 "global.spellchecking.autodetect": "Dili otomatik tespit et",
33 "global.spellchecking.autodetect.short": "Otomatik", 39 "global.spellchecking.autodetect.short": "Otomatik",
34 "global.spellchecking.language": "İmla kontrol dili", 40 "global.spellchecking.language": "İmla kontrol dili",
41 "global.submit": "Gönder",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "Ferdi 4 servislerinizi içeri aktarın", 45 "import.headline": "Ferdi 4 servislerinizi içeri aktarın",
38 "import.notSupportedHeadline": "Henüz Ferdi 5'te desteklenmeyen servisler", 46 "import.notSupportedHeadline": "Henüz Ferdi 5'te desteklenmeyen servisler",
39 "import.skip.label": "Servisleri kendim eklemek istiyorum", 47 "import.skip.label": "Servisleri kendim eklemek istiyorum",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Yapılacaklar çekmecesini kapat", 84 "menu.Todoss.closeTodosDrawer": "Yapılacaklar çekmecesini kapat",
77 "menu.Todoss.openTodosDrawer": "Yapılacaklar çekmecesini aç", 85 "menu.Todoss.openTodosDrawer": "Yapılacaklar çekmecesini aç",
78 "menu.app.about": "Ferdi Hakkında", 86 "menu.app.about": "Ferdi Hakkında",
79 "menu.app.announcement": "Neler yeni?",
80 "menu.app.autohideMenuBar": "Menü çubuğunu otomatik otomatik olarak gizle", 87 "menu.app.autohideMenuBar": "Menü çubuğunu otomatik otomatik olarak gizle",
81 "menu.app.checkForUpdates": "Güncellemeleri kontrol et", 88 "menu.app.checkForUpdates": "Güncellemeleri kontrol et",
82 "menu.app.hide": "Gizle", 89 "menu.app.hide": "Gizle",
83 "menu.app.hideOthers": "Diğerlerini Gizle", 90 "menu.app.hideOthers": "Diğerlerini Gizle",
84 "menu.app.quit": "Çık",
85 "menu.app.settings": "Ayarlar",
86 "menu.app.unhide": "Göster", 91 "menu.app.unhide": "Göster",
87 "menu.edit": "Düzenle", 92 "menu.edit": "Düzenle",
88 "menu.edit.copy": "Kopyala", 93 "menu.edit.copy": "Kopyala",
@@ -147,7 +152,6 @@
147 "password.link.login": "Hesabına giriş yap", 152 "password.link.login": "Hesabına giriş yap",
148 "password.link.signup": "Ücretsiz hesap oluştur", 153 "password.link.signup": "Ücretsiz hesap oluştur",
149 "password.noUser": "Bu e-posta adresinde bir kullanıcı bulunamadı", 154 "password.noUser": "Bu e-posta adresinde bir kullanıcı bulunamadı",
150 "password.submit.label": "Gönder",
151 "password.successInfo": "E-postanızı kontrol ediniz", 155 "password.successInfo": "E-postanızı kontrol ediniz",
152 "pricing.features.accountSync": "Hesap Eşitleme", 156 "pricing.features.accountSync": "Hesap Eşitleme",
153 "pricing.features.customWebsites": "Özel Siteler Ekle", 157 "pricing.features.customWebsites": "Özel Siteler Ekle",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Beta versiyonları dahil et", 218 "settings.app.form.beta": "Beta versiyonları dahil et",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et", 224 "settings.app.form.enableGPUAcceleration": "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Ayarlar",
255 "settings.app.headlineAdvanced": "Gelişmiş", 259 "settings.app.headlineAdvanced": "Gelişmiş",
256 "settings.app.headlineAppearance": "Görünüm", 260 "settings.app.headlineAppearance": "Görünüm",
257 "settings.app.headlineGeneral": "Genel", 261 "settings.app.headlineGeneral": "Genel",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Hesap", 285 "settings.navigation.account": "Hesap",
282 "settings.navigation.availableServices": "Mevcut servisler", 286 "settings.navigation.availableServices": "Mevcut servisler",
283 "settings.navigation.logout": "Çıkış", 287 "settings.navigation.logout": "Çıkış",
284 "settings.navigation.settings": "Ayarlar",
285 "settings.navigation.supportFerdi": "Ferdi Hakkında", 288 "settings.navigation.supportFerdi": "Ferdi Hakkında",
286 "settings.navigation.team": "Ekibini Yönet", 289 "settings.navigation.team": "Ekibini Yönet",
287 "settings.navigation.yourServices": "Servislerin", 290 "settings.navigation.yourServices": "Servislerin",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Bildirimleri ve sesli uyarıları kapat", 417 "sidebar.muteApp": "Bildirimleri ve sesli uyarıları kapat",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç", 419 "sidebar.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç",
417 "sidebar.settings": "Ayarlar",
418 "sidebar.unmuteApp": "Bildirimleri ve sesli uyarıları etkinleştir", 420 "sidebar.unmuteApp": "Bildirimleri ve sesli uyarıları etkinleştir",
419 "signup.email.label": "E-posta adresi", 421 "signup.email.label": "E-posta adresi",
420 "signup.emailDuplicate": "Bu email adresine sahip bir kullanıcı zaten mevcut", 422 "signup.emailDuplicate": "Bu email adresine sahip bir kullanıcı zaten mevcut",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Bildirimleri devre dışı bırak", 436 "tabs.item.disableNotifications": "Bildirimleri devre dışı bırak",
435 "tabs.item.disableService": "Servisi devre dışı bırak", 437 "tabs.item.disableService": "Servisi devre dışı bırak",
436 "tabs.item.edit": "Düzenle",
437 "tabs.item.enableAudio": "Sesi etkinleştirin", 438 "tabs.item.enableAudio": "Sesi etkinleştirin",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Bildirimleri etkinleştir", 440 "tabs.item.enableNotification": "Bildirimleri etkinleştir",
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 69c62629c..b4f1fb66c 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -4,18 +4,16 @@
4 "changeserver.customServerLabel": "Користувацький сервер", 4 "changeserver.customServerLabel": "Користувацький сервер",
5 "changeserver.headline": "Змінити сервер", 5 "changeserver.headline": "Змінити сервер",
6 "changeserver.label": "Сервер", 6 "changeserver.label": "Сервер",
7 "changeserver.submit": "Подати", 7 "changeserver.urlError": "Введіть дійсний URL",
8 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Додаткові налаштування, запропоновані Ферді не будуть збережені", 8 "changeserver.warning": "Додаткові налаштування, запропоновані Ферді не будуть збережені",
10 "connectionLostBanner.cta": "Перезавантажити сервіс", 9 "connectionLostBanner.cta": "Перезавантажити сервіс",
11 "connectionLostBanner.informationLink": "Що трапилось?", 10 "connectionLostBanner.informationLink": "Що трапилось?",
12 "connectionLostBanner.message": "О ні! Ферді втратив з'єднання з {name}.", 11 "connectionLostBanner.message": "О ні! Ферді втратив з'єднання з {name}.",
13 "feature.announcements.changelog.headline": "Зміни у Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Опублікувати інформацію для налагодження", 13 "feature.debugger.title": "Опублікувати інформацію для налагодження",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Активувати",
16 "feature.nightlyBuilds.cancel": "Відмінити", 15 "feature.nightlyBuilds.info": "Нічні збірки - це високоекспериментальні версії Ferdi, що можуть містити \"неполіровані\" або незавершені функції. Нічні збірки в основному використовуються розробниками, щоб перевірити свої нові функції та те, як вони будуть працювати в фінальній версії. Якщо ви не знаєте, що ви робите, то радимо не активувати нічні збірки.",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 16 "feature.nightlyBuilds.title": "Нічні збірки",
18 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "Сталася помилка під час спроби опублікувати інформацію для налагодження. Будь ласка, спробуйте ще раз пізніше або перегляньте консоль для отримання додаткової інформації.", 17 "feature.publishDebugInfo.error": "Сталася помилка під час спроби опублікувати інформацію для налагодження. Будь ласка, спробуйте ще раз пізніше або перегляньте консоль для отримання додаткової інформації.",
20 "feature.publishDebugInfo.info": "Публікація інформації для налагодження допоможе нам знайти проблеми та помилки у Fredi. Публікуючи вашу зневаджувальну інформацію, ви приймаєте політику конфіденційності Ferdi Debugger та умови використання", 18 "feature.publishDebugInfo.info": "Публікація інформації для налагодження допоможе нам знайти проблеми та помилки у Fredi. Публікуючи вашу зневаджувальну інформацію, ви приймаєте політику конфіденційності Ferdi Debugger та умови використання",
21 "feature.publishDebugInfo.privacy": "Політика конфіденційності", 19 "feature.publishDebugInfo.privacy": "Політика конфіденційності",
@@ -25,15 +23,25 @@
25 "feature.publishDebugInfo.title": "Опублікувати інформацію для налагодження", 23 "feature.publishDebugInfo.title": "Опублікувати інформацію для налагодження",
26 "feature.quickSwitch.info": "Виберіть сервіс за допомогою TAB, стрілок ↑ та ↓. Натисніть ENTER, щоб відкрити.", 24 "feature.quickSwitch.info": "Виберіть сервіс за допомогою TAB, стрілок ↑ та ↓. Натисніть ENTER, щоб відкрити.",
27 "feature.quickSwitch.search": "Пошук...", 25 "feature.quickSwitch.search": "Пошук...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "Швидке перемикання",
29 "global.api.unhealthy": "Не можливо підключитись до онлайн сервісів Ferdi", 27 "global.api.unhealthy": "Не можливо підключитись до онлайн сервісів Ferdi",
28 "global.cancel": "Відмінити",
29 "global.edit": "Редагувати",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", 31 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.",
32 "global.ok": "Ok",
33 "global.quit": "Вийти",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Налаштування",
31 "global.spellchecker.useDefault": "Використовувати системні параметри за змовчуванням ({default})", 37 "global.spellchecker.useDefault": "Використовувати системні параметри за змовчуванням ({default})",
32 "global.spellchecking.autodetect": "Detect language automatically", 38 "global.spellchecking.autodetect": "Автоматично визначати мову",
33 "global.spellchecking.autodetect.short": "Automatic", 39 "global.spellchecking.autodetect.short": "Автоматично",
34 "global.spellchecking.language": "Мова перевірки правопису", 40 "global.spellchecking.language": "Мова перевірки правопису",
41 "global.submit": "Подати",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "Ідентифікатор браузера", 43 "global.userAgentPref": "Ідентифікатор браузера",
44 "global.yes": "Yes",
37 "import.headline": "Імпортувати ваші сервіси з Ferdi 4", 45 "import.headline": "Імпортувати ваші сервіси з Ferdi 4",
38 "import.notSupportedHeadline": "Наразі сервіси не підтримуються у Ferdi 5", 46 "import.notSupportedHeadline": "Наразі сервіси не підтримуються у Ferdi 5",
39 "import.skip.label": "Я бажаю додати сервіс вручну", 47 "import.skip.label": "Я бажаю додати сервіс вручну",
@@ -46,7 +54,7 @@
46 "infobar.requiredRequestsFailed": "Не вдалося завантажити сервіси та інформацію користувача", 54 "infobar.requiredRequestsFailed": "Не вдалося завантажити сервіси та інформацію користувача",
47 "infobar.servicesUpdated": "Ваші сервіси було оновлено.", 55 "infobar.servicesUpdated": "Ваші сервіси було оновлено.",
48 "infobar.updateAvailable": "Нове оновлення для Ferdi доступне.", 56 "infobar.updateAvailable": "Нове оновлення для Ferdi доступне.",
49 "infobox.dismiss": "Dismiss", 57 "infobox.dismiss": "Відхилити",
50 "invite.email.label": "Email адреса", 58 "invite.email.label": "Email адреса",
51 "invite.headline.friends": "Запросіть 3-х ваших друзів або колег", 59 "invite.headline.friends": "Запросіть 3-х ваших друзів або колег",
52 "invite.name.label": "Ім'я", 60 "invite.name.label": "Ім'я",
@@ -76,48 +84,45 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "Про Ferdi", 86 "menu.app.about": "Про Ferdi",
79 "menu.app.announcement": "Що нового?",
80 "menu.app.autohideMenuBar": "Автоматично приховувати меню", 87 "menu.app.autohideMenuBar": "Автоматично приховувати меню",
81 "menu.app.checkForUpdates": "Перевірити наявність оновлень", 88 "menu.app.checkForUpdates": "Перевірити наявність оновлень",
82 "menu.app.hide": "Приховати", 89 "menu.app.hide": "Приховати",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit", 91 "menu.app.unhide": "Показати",
85 "menu.app.settings": "Налаштування",
86 "menu.app.unhide": "Unhide",
87 "menu.edit": "Редагувати", 92 "menu.edit": "Редагувати",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Копіювати",
89 "menu.edit.cut": "Cut", 94 "menu.edit.cut": "Вирізати",
90 "menu.edit.delete": "Видалити", 95 "menu.edit.delete": "Видалити",
91 "menu.edit.emojiSymbols": "Емодзі та символи", 96 "menu.edit.emojiSymbols": "Емодзі та символи",
92 "menu.edit.findInPage": "Знайти на сторінці", 97 "menu.edit.findInPage": "Знайти на сторінці",
93 "menu.edit.paste": "Paste", 98 "menu.edit.paste": "Вставити",
94 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 99 "menu.edit.pasteAndMatchStyle": "Вставити з дотриманням стилю",
95 "menu.edit.redo": "Redo", 100 "menu.edit.redo": "Повторити",
96 "menu.edit.selectAll": "Select All", 101 "menu.edit.selectAll": "Виділити все",
97 "menu.edit.speech": "Мова", 102 "menu.edit.speech": "Мова",
98 "menu.edit.startDictation": "Почати диктувати", 103 "menu.edit.startDictation": "Почати диктувати",
99 "menu.edit.startSpeaking": "Почати говорити", 104 "menu.edit.startSpeaking": "Почати говорити",
100 "menu.edit.stopSpeaking": "Закінчити говорити", 105 "menu.edit.stopSpeaking": "Закінчити говорити",
101 "menu.edit.undo": "Undo", 106 "menu.edit.undo": "Відмінити",
102 "menu.file": "Файл", 107 "menu.file": "Файл",
103 "menu.help": "Help", 108 "menu.help": "Довідка",
104 "menu.help.changelog": "Журнал змін", 109 "menu.help.changelog": "Журнал змін",
105 "menu.help.debugInfo": "Копіювати інформацію для налагодження", 110 "menu.help.debugInfo": "Копіювати інформацію для налагодження",
106 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 111 "menu.help.debugInfoCopiedBody": "Інформацію для відлагодження було скопійовано до буфера обміну.",
107 "menu.help.debugInfoCopiedHeadline": "Інформація для відладки", 112 "menu.help.debugInfoCopiedHeadline": "Інформація для відладки",
108 "menu.help.importExportData": "Import/Export Configuration Data", 113 "menu.help.importExportData": "Імпорт/експорт даних конфігурації",
109 "menu.help.learnMore": "Докладніше", 114 "menu.help.learnMore": "Докладніше",
110 "menu.help.privacy": "Заява про конфіденційність", 115 "menu.help.privacy": "Заява про конфіденційність",
111 "menu.help.publishDebugInfo": "Publish Debug Information", 116 "menu.help.publishDebugInfo": "Опублікувати інформацію для налагодження",
112 "menu.help.support": "Підтримка", 117 "menu.help.support": "Підтримка",
113 "menu.help.tos": "Умови використання", 118 "menu.help.tos": "Умови використання",
114 "menu.services": "Служби", 119 "menu.services": "Служби",
115 "menu.services.activatePreviousService": "Activate previous service", 120 "menu.services.activatePreviousService": "Активувати попередню службу",
116 "menu.services.addNewService": "Add New Service", 121 "menu.services.addNewService": "Додати новий сервіс",
117 "menu.services.goHome": "Головна", 122 "menu.services.goHome": "Головна",
118 "menu.services.setNextServiceActive": "Активувати наступний сервіс", 123 "menu.services.setNextServiceActive": "Активувати наступний сервіс",
119 "menu.todos": "Todos", 124 "menu.todos": "Завдання",
120 "menu.todos.enableTodos": "Enable Todos", 125 "menu.todos.enableTodos": "Увімкнути Завдання",
121 "menu.view": "Вигляд", 126 "menu.view": "Вигляд",
122 "menu.view.back": "Назад", 127 "menu.view.back": "Назад",
123 "menu.view.forward": "Вперед", 128 "menu.view.forward": "Вперед",
@@ -147,7 +152,6 @@
147 "password.link.login": "Увійти до вашого акаунту", 152 "password.link.login": "Увійти до вашого акаунту",
148 "password.link.signup": "Створити безплатний акаунт", 153 "password.link.signup": "Створити безплатний акаунт",
149 "password.noUser": "Не знайдено жодного користувача з цією email адресою", 154 "password.noUser": "Не знайдено жодного користувача з цією email адресою",
150 "password.submit.label": "Подати",
151 "password.successInfo": "Будь ласка, перевірте ваш email", 155 "password.successInfo": "Будь ласка, перевірте ваш email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Включити бета-версії", 218 "settings.app.form.beta": "Включити бета-версії",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Ввімкнути прискорення GPU", 224 "settings.app.form.enableGPUAcceleration": "Ввімкнути прискорення GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Дозволити використання TouchID для розблокування Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Дозволити використання TouchID для розблокування Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "Налаштування",
255 "settings.app.headlineAdvanced": "Додаткові налаштування", 259 "settings.app.headlineAdvanced": "Додаткові налаштування",
256 "settings.app.headlineAppearance": "Вигляд", 260 "settings.app.headlineAppearance": "Вигляд",
257 "settings.app.headlineGeneral": "Загальні", 261 "settings.app.headlineGeneral": "Загальні",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Акаунт", 285 "settings.navigation.account": "Акаунт",
282 "settings.navigation.availableServices": "Доступні сервіси", 286 "settings.navigation.availableServices": "Доступні сервіси",
283 "settings.navigation.logout": "Вийти", 287 "settings.navigation.logout": "Вийти",
284 "settings.navigation.settings": "Налаштування",
285 "settings.navigation.supportFerdi": "Про Ferdi", 288 "settings.navigation.supportFerdi": "Про Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Ваші сервіси", 290 "settings.navigation.yourServices": "Ваші сервіси",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Вимкнути сповіщення та звуки", 417 "sidebar.muteApp": "Вимкнути сповіщення та звуки",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "Налаштування",
418 "sidebar.unmuteApp": "Увімкнути сповіщення та звуки", 420 "sidebar.unmuteApp": "Увімкнути сповіщення та звуки",
419 "signup.email.label": "Email адреса", 421 "signup.email.label": "Email адреса",
420 "signup.emailDuplicate": "Користувач із цією email адресою вже існує", 422 "signup.emailDuplicate": "Користувач із цією email адресою вже існує",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Вимкнути сповіщення", 436 "tabs.item.disableNotifications": "Вимкнути сповіщення",
435 "tabs.item.disableService": "Вимкнути сервіс", 437 "tabs.item.disableService": "Вимкнути сервіс",
436 "tabs.item.edit": "Редагувати",
437 "tabs.item.enableAudio": "Увімкнути звук", 438 "tabs.item.enableAudio": "Увімкнути звук",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Увімкнути сповіщення", 440 "tabs.item.enableNotification": "Увімкнути сповіщення",
diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json
index b860ad8c8..0bf52bf1d 100644
--- a/src/i18n/locales/vi.json
+++ b/src/i18n/locales/vi.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Máy chủ tùy chỉnh", 4 "changeserver.customServerLabel": "Máy chủ tùy chỉnh",
5 "changeserver.headline": "Thay đổi máy chủ", 5 "changeserver.headline": "Thay đổi máy chủ",
6 "changeserver.label": "Máy chủ", 6 "changeserver.label": "Máy chủ",
7 "changeserver.submit": "Gửi",
8 "changeserver.urlError": "Nhập địa chỉ web", 7 "changeserver.urlError": "Nhập địa chỉ web",
9 "changeserver.warning": "Cài đặt mở rộng sẽ không được lưu lại", 8 "changeserver.warning": "Cài đặt mở rộng sẽ không được lưu lại",
10 "connectionLostBanner.cta": "Tải lại dịch vụ", 9 "connectionLostBanner.cta": "Tải lại dịch vụ",
11 "connectionLostBanner.informationLink": "Điều gì đã xảy ra?", 10 "connectionLostBanner.informationLink": "Điều gì đã xảy ra?",
12 "connectionLostBanner.message": "Mất kết nối tới {name}.", 11 "connectionLostBanner.message": "Mất kết nối tới {name}.",
13 "feature.announcements.changelog.headline": "Những thay đổi trong phiên bản {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "Gửi thông tin gỡ lỗi", 13 "feature.debugger.title": "Gửi thông tin gỡ lỗi",
15 "feature.nightlyBuilds.activate": "Kích hoạt", 14 "feature.nightlyBuilds.activate": "Kích hoạt",
16 "feature.nightlyBuilds.cancel": "Hủy",
17 "feature.nightlyBuilds.info": "Các bản Nightly là các phiên bản Ferdi mang tính thử nghiệm có thể chứa các tính năng chưa được hoàn thiện. Các bản Nightly chủ yếu được các nhà phát triển sử dụng để kiểm tra các tính năng mới được phát triển của họ và cách chúng sẽ hoạt động trong bản dựng cuối cùng. Nếu bạn không biết mình đang làm gì, chúng tôi khuyên bạn không nên kích hoạt các bản dựng hàng đêm.", 15 "feature.nightlyBuilds.info": "Các bản Nightly là các phiên bản Ferdi mang tính thử nghiệm có thể chứa các tính năng chưa được hoàn thiện. Các bản Nightly chủ yếu được các nhà phát triển sử dụng để kiểm tra các tính năng mới được phát triển của họ và cách chúng sẽ hoạt động trong bản dựng cuối cùng. Nếu bạn không biết mình đang làm gì, chúng tôi khuyên bạn không nên kích hoạt các bản dựng hàng đêm.",
18 "feature.nightlyBuilds.title": "Phiên bản Nightly", 16 "feature.nightlyBuilds.title": "Phiên bản Nightly",
19 "feature.publishDebugInfo.error": "Đã xảy ra lỗi khi cố gắng xuất bản thông tin gỡ lỗi. Vui lòng thử lại sau hoặc xem bảng điều khiển để biết thêm thông tin.", 17 "feature.publishDebugInfo.error": "Đã xảy ra lỗi khi cố gắng xuất bản thông tin gỡ lỗi. Vui lòng thử lại sau hoặc xem bảng điều khiển để biết thêm thông tin.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "Tìm kiếm...", 25 "feature.quickSwitch.search": "Tìm kiếm...",
28 "feature.quickSwitch.title": "Chuyển đổi nhanh", 26 "feature.quickSwitch.title": "Chuyển đổi nhanh",
29 "global.api.unhealthy": "Không thể kết nối đến máy chủ trực tuyến của Ferdi", 27 "global.api.unhealthy": "Không thể kết nối đến máy chủ trực tuyến của Ferdi",
28 "global.cancel": "Hủy",
29 "global.edit": "Chỉnh sửa",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "Bạn không kết nối với Internet.", 31 "global.notConnectedToTheInternet": "Bạn không kết nối với Internet.",
32 "global.ok": "Ok",
33 "global.quit": "Thoát",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "Các thiết lập",
31 "global.spellchecker.useDefault": "Dùng mặc định hệ thống ({default})", 37 "global.spellchecker.useDefault": "Dùng mặc định hệ thống ({default})",
32 "global.spellchecking.autodetect": "Tự động phát hiện ngôn ngữ", 38 "global.spellchecking.autodetect": "Tự động phát hiện ngôn ngữ",
33 "global.spellchecking.autodetect.short": "Tự động", 39 "global.spellchecking.autodetect.short": "Tự động",
34 "global.spellchecking.language": "Ngôn ngữ kiểm tra chính tả", 40 "global.spellchecking.language": "Ngôn ngữ kiểm tra chính tả",
41 "global.submit": "Gửi",
35 "global.userAgentHelp": "Sử dụng 'https://whatmyuseragent.com/' (để khám phá) hoặc 'https://developers.whatismybrowser.com/useragents/explore/' (để chọn) tác nhân người dùng mong muốn của bạn và sao chép-dán nó vào đây.", 42 "global.userAgentHelp": "Sử dụng 'https://whatmyuseragent.com/' (để khám phá) hoặc 'https://developers.whatismybrowser.com/useragents/explore/' (để chọn) tác nhân người dùng mong muốn của bạn và sao chép-dán nó vào đây.",
36 "global.userAgentPref": "Tác nhân Người dùng", 43 "global.userAgentPref": "Tác nhân Người dùng",
44 "global.yes": "Yes",
37 "import.headline": "Nhập các dịch vụ Ferdi 4 của bạn", 45 "import.headline": "Nhập các dịch vụ Ferdi 4 của bạn",
38 "import.notSupportedHeadline": "Các dịch vụ chưa được hỗ trợ trong Ferdi 5", 46 "import.notSupportedHeadline": "Các dịch vụ chưa được hỗ trợ trong Ferdi 5",
39 "import.skip.label": "Tôi muốn thêm dịch vụ theo cách thủ công", 47 "import.skip.label": "Tôi muốn thêm dịch vụ theo cách thủ công",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Đóng mục Việc cần làm", 84 "menu.Todoss.closeTodosDrawer": "Đóng mục Việc cần làm",
77 "menu.Todoss.openTodosDrawer": "Mở mục Việc cần làm", 85 "menu.Todoss.openTodosDrawer": "Mở mục Việc cần làm",
78 "menu.app.about": "Giới thiệu về phần mềm Ferdi", 86 "menu.app.about": "Giới thiệu về phần mềm Ferdi",
79 "menu.app.announcement": "Có gì mới?",
80 "menu.app.autohideMenuBar": "Tự động ẩn thanh Menu", 87 "menu.app.autohideMenuBar": "Tự động ẩn thanh Menu",
81 "menu.app.checkForUpdates": "Kiểm tra cập nhật", 88 "menu.app.checkForUpdates": "Kiểm tra cập nhật",
82 "menu.app.hide": "Ẩn", 89 "menu.app.hide": "Ẩn",
83 "menu.app.hideOthers": "Ẩn các mục khác", 90 "menu.app.hideOthers": "Ẩn các mục khác",
84 "menu.app.quit": "Thoát",
85 "menu.app.settings": "Các thiết lập",
86 "menu.app.unhide": "Bỏ ẩn", 91 "menu.app.unhide": "Bỏ ẩn",
87 "menu.edit": "Chỉnh sửa", 92 "menu.edit": "Chỉnh sửa",
88 "menu.edit.copy": "Sao chép", 93 "menu.edit.copy": "Sao chép",
@@ -147,7 +152,6 @@
147 "password.link.login": "Đăng nhập Tài khoản", 152 "password.link.login": "Đăng nhập Tài khoản",
148 "password.link.signup": "Tạo tài khoản miễn phí", 153 "password.link.signup": "Tạo tài khoản miễn phí",
149 "password.noUser": "Không tìm thấy người dùng được đăng ký với địa chỉ e-mail này", 154 "password.noUser": "Không tìm thấy người dùng được đăng ký với địa chỉ e-mail này",
150 "password.submit.label": "Gửi",
151 "password.successInfo": "Vui lòng kiểm tra hộp thư của bạn", 155 "password.successInfo": "Vui lòng kiểm tra hộp thư của bạn",
152 "pricing.features.accountSync": "Đồng bộ hóa Tài khoản", 156 "pricing.features.accountSync": "Đồng bộ hóa Tài khoản",
153 "pricing.features.customWebsites": "Thêm Trang web tùy chỉnh", 157 "pricing.features.customWebsites": "Thêm Trang web tùy chỉnh",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Bao gồm phiên bản thử nghiệp", 218 "settings.app.form.beta": "Bao gồm phiên bản thử nghiệp",
215 "settings.app.form.clipboardNotifications": "Không hiển thị thông báo cho các sự kiện khay nhớ tạm", 219 "settings.app.form.clipboardNotifications": "Không hiển thị thông báo cho các sự kiện khay nhớ tạm",
216 "settings.app.form.closeToSystemTray": "Thu nhỏ Ferdi xuống khay hệ thống", 220 "settings.app.form.closeToSystemTray": "Thu nhỏ Ferdi xuống khay hệ thống",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Tùy chỉnh Server Todo", 222 "settings.app.form.customTodoServer": "Tùy chỉnh Server Todo",
218 "settings.app.form.darkMode": "Cho phép Chế độ nền tối", 223 "settings.app.form.darkMode": "Cho phép Chế độ nền tối",
219 "settings.app.form.enableGPUAcceleration": "Bật Tăng tốc GPU", 224 "settings.app.form.enableGPUAcceleration": "Bật Tăng tốc GPU",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Cho phép sử dụng TouchID để mở khóa Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Cho phép sử dụng TouchID để mở khóa Ferdi",
252 "settings.app.form.useVerticalStyle": "Sử dụng kiểu ngang", 257 "settings.app.form.useVerticalStyle": "Sử dụng kiểu ngang",
253 "settings.app.form.wakeUpStrategy": "Chiến lược đánh thức", 258 "settings.app.form.wakeUpStrategy": "Chiến lược đánh thức",
254 "settings.app.headline": "Các thiết lập",
255 "settings.app.headlineAdvanced": "Nâng cao", 259 "settings.app.headlineAdvanced": "Nâng cao",
256 "settings.app.headlineAppearance": "Giao diện", 260 "settings.app.headlineAppearance": "Giao diện",
257 "settings.app.headlineGeneral": "Chung", 261 "settings.app.headlineGeneral": "Chung",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Tài khoản", 285 "settings.navigation.account": "Tài khoản",
282 "settings.navigation.availableServices": "Các dịch vụ có sẵn", 286 "settings.navigation.availableServices": "Các dịch vụ có sẵn",
283 "settings.navigation.logout": "Đăng xuất", 287 "settings.navigation.logout": "Đăng xuất",
284 "settings.navigation.settings": "Các thiết lập",
285 "settings.navigation.supportFerdi": "Giới thiệu về phần mềm Ferdi", 288 "settings.navigation.supportFerdi": "Giới thiệu về phần mềm Ferdi",
286 "settings.navigation.team": "Quản lý Nhóm", 289 "settings.navigation.team": "Quản lý Nhóm",
287 "settings.navigation.yourServices": "Dịch vụ của bạn", 290 "settings.navigation.yourServices": "Dịch vụ của bạn",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Tắt thông báo và âm thanh", 417 "sidebar.muteApp": "Tắt thông báo và âm thanh",
415 "sidebar.openTodosDrawer": "Mở Ferdi Todos", 418 "sidebar.openTodosDrawer": "Mở Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Mở không gian làm việc", 419 "sidebar.openWorkspaceDrawer": "Mở không gian làm việc",
417 "sidebar.settings": "Các thiết lập",
418 "sidebar.unmuteApp": "Bật thông báo và âm thanh", 420 "sidebar.unmuteApp": "Bật thông báo và âm thanh",
419 "signup.email.label": "Địa chỉ E-mail", 421 "signup.email.label": "Địa chỉ E-mail",
420 "signup.emailDuplicate": "Một người dùng với địa chỉ email đó đã tồn tại", 422 "signup.emailDuplicate": "Một người dùng với địa chỉ email đó đã tồn tại",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Vô hiệu hóa chế độ tối", 435 "tabs.item.disableDarkMode": "Vô hiệu hóa chế độ tối",
434 "tabs.item.disableNotifications": "Vô hiệu hóa thông báo", 436 "tabs.item.disableNotifications": "Vô hiệu hóa thông báo",
435 "tabs.item.disableService": "Vô hiệu hóa dịch vụ", 437 "tabs.item.disableService": "Vô hiệu hóa dịch vụ",
436 "tabs.item.edit": "Chỉnh sửa",
437 "tabs.item.enableAudio": "Cho phép âm thanh", 438 "tabs.item.enableAudio": "Cho phép âm thanh",
438 "tabs.item.enableDarkMode": "Kích hoạt chế độ tối", 439 "tabs.item.enableDarkMode": "Kích hoạt chế độ tối",
439 "tabs.item.enableNotification": "Kích hoạt thông báo", 440 "tabs.item.enableNotification": "Kích hoạt thông báo",
diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json
index 057d86253..632127f4d 100644
--- a/src/i18n/locales/zh-CN.json
+++ b/src/i18n/locales/zh-CN.json
@@ -21,12 +21,16 @@
21 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 21 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
22 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 22 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
23 "global.api.unhealthy": "Can't connect to Ferdi online services", 23 "global.api.unhealthy": "Can't connect to Ferdi online services",
24 "global.edit": "Edit",
24 "global.franzProRequired": "Ferdi Professional Required", 25 "global.franzProRequired": "Ferdi Professional Required",
25 "global.notConnectedToTheInternet": "You are not connected to the internet.", 26 "global.notConnectedToTheInternet": "You are not connected to the internet.",
27 "global.quit": "Quit",
28 "global.settings": "Settings",
26 "global.spellchecker.useDefault": "Use System Default ({default})", 29 "global.spellchecker.useDefault": "Use System Default ({default})",
27 "global.spellchecking.autodetect": "Detect language automatically", 30 "global.spellchecking.autodetect": "Detect language automatically",
28 "global.spellchecking.autodetect.short": "Automatic", 31 "global.spellchecking.autodetect.short": "Automatic",
29 "global.spellchecking.language": "Spell checking language", 32 "global.spellchecking.language": "Spell checking language",
33 "global.submit": "Submit",
30 "import.headline": "Import your Ferdi 4 services", 34 "import.headline": "Import your Ferdi 4 services",
31 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 35 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
32 "import.skip.label": "I want to add services manually", 36 "import.skip.label": "I want to add services manually",
@@ -69,8 +73,6 @@
69 "menu.app.checkForUpdates": "Check for updates", 73 "menu.app.checkForUpdates": "Check for updates",
70 "menu.app.hide": "Hide", 74 "menu.app.hide": "Hide",
71 "menu.app.hideOthers": "Hide Others", 75 "menu.app.hideOthers": "Hide Others",
72 "menu.app.quit": "Quit",
73 "menu.app.settings": "Settings",
74 "menu.app.unhide": "Unhide", 76 "menu.app.unhide": "Unhide",
75 "menu.edit": "Edit", 77 "menu.edit": "Edit",
76 "menu.edit.copy": "Copy", 78 "menu.edit.copy": "Copy",
@@ -131,7 +133,6 @@
131 "password.link.login": "Sign in to your account", 133 "password.link.login": "Sign in to your account",
132 "password.link.signup": "Create a free account", 134 "password.link.signup": "Create a free account",
133 "password.noUser": "No user with that email address was found", 135 "password.noUser": "No user with that email address was found",
134 "password.submit.label": "Submit",
135 "password.successInfo": "Please check your email", 136 "password.successInfo": "Please check your email",
136 "premiumFeature.button.upgradeAccount": "Upgrade account", 137 "premiumFeature.button.upgradeAccount": "Upgrade account",
137 "pricing.features.accountSync": "Account Synchronisation", 138 "pricing.features.accountSync": "Account Synchronisation",
@@ -197,6 +198,7 @@
197 "settings.app.form.autoLaunchInBackground": "Open in background", 198 "settings.app.form.autoLaunchInBackground": "Open in background",
198 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", 199 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start",
199 "settings.app.form.beta": "Include beta versions", 200 "settings.app.form.beta": "Include beta versions",
201 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
200 "settings.app.form.darkMode": "Enable dark mode", 202 "settings.app.form.darkMode": "Enable dark mode",
201 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 203 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
202 "settings.app.form.enableLock": "Enable Password Lock", 204 "settings.app.form.enableLock": "Enable Password Lock",
@@ -210,7 +212,6 @@
210 "settings.app.form.language": "Language", 212 "settings.app.form.language": "Language",
211 "settings.app.form.lockPassword": "Password", 213 "settings.app.form.lockPassword": "Password",
212 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", 214 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
213 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
214 "settings.app.form.noUpdates": "Disable updates", 215 "settings.app.form.noUpdates": "Disable updates",
215 "settings.app.form.privateNotifications": "Don't show message content in notifications", 216 "settings.app.form.privateNotifications": "Don't show message content in notifications",
216 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 217 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
@@ -226,7 +227,6 @@
226 "settings.app.form.startMinimized": "Start minimized in tray", 227 "settings.app.form.startMinimized": "Start minimized in tray",
227 "settings.app.form.todoServer": "Todo Server", 228 "settings.app.form.todoServer": "Todo Server",
228 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 229 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
229 "settings.app.headline": "Settings",
230 "settings.app.headlineAdvanced": "Advanced", 230 "settings.app.headlineAdvanced": "Advanced",
231 "settings.app.headlineAppearance": "Appearance", 231 "settings.app.headlineAppearance": "Appearance",
232 "settings.app.headlineGeneral": "General", 232 "settings.app.headlineGeneral": "General",
@@ -255,7 +255,6 @@
255 "settings.navigation.account": "Account", 255 "settings.navigation.account": "Account",
256 "settings.navigation.availableServices": "Available services", 256 "settings.navigation.availableServices": "Available services",
257 "settings.navigation.logout": "Logout", 257 "settings.navigation.logout": "Logout",
258 "settings.navigation.settings": "Settings",
259 "settings.navigation.supportFerdi": "Support Ferdi", 258 "settings.navigation.supportFerdi": "Support Ferdi",
260 "settings.navigation.team": "Manage Team", 259 "settings.navigation.team": "Manage Team",
261 "settings.navigation.yourServices": "Your services", 260 "settings.navigation.yourServices": "Your services",
@@ -369,7 +368,6 @@
369 "sidebar.muteApp": "Disable notifications & audio", 368 "sidebar.muteApp": "Disable notifications & audio",
370 "sidebar.openTodosDrawer": "Open Ferdi Todos", 369 "sidebar.openTodosDrawer": "Open Ferdi Todos",
371 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 370 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
372 "sidebar.settings": "Settings",
373 "sidebar.unmuteApp": "Enable notifications & audio", 371 "sidebar.unmuteApp": "Enable notifications & audio",
374 "signup.email.label": "Email address", 372 "signup.email.label": "Email address",
375 "signup.emailDuplicate": "A user with that email address already exists", 373 "signup.emailDuplicate": "A user with that email address already exists",
@@ -386,7 +384,6 @@
386 "tabs.item.disableAudio": "Disable audio", 384 "tabs.item.disableAudio": "Disable audio",
387 "tabs.item.disableNotifications": "Disable notifications", 385 "tabs.item.disableNotifications": "Disable notifications",
388 "tabs.item.disableService": "Disable service", 386 "tabs.item.disableService": "Disable service",
389 "tabs.item.edit": "Edit",
390 "tabs.item.enableAudio": "Enable audio", 387 "tabs.item.enableAudio": "Enable audio",
391 "tabs.item.enableNotification": "Enable notifications", 388 "tabs.item.enableNotification": "Enable notifications",
392 "tabs.item.enableService": "Enable service", 389 "tabs.item.enableService": "Enable service",
diff --git a/src/i18n/locales/zh-HANS.json b/src/i18n/locales/zh-HANS.json
index b7de29eb5..a214e551c 100644
--- a/src/i18n/locales/zh-HANS.json
+++ b/src/i18n/locales/zh-HANS.json
@@ -13,12 +13,16 @@
13 "feature.shareFranz.shareText.twitter": "我已经为Ferdi添加了{count}个服务!在www.getferdi.com/cc @FerdiMessenger上获得适用于WhatsApp,Messenger,Slack,Skype和co的免费应用程序", 13 "feature.shareFranz.shareText.twitter": "我已经为Ferdi添加了{count}个服务!在www.getferdi.com/cc @FerdiMessenger上获得适用于WhatsApp,Messenger,Slack,Skype和co的免费应用程序",
14 "feature.shareFranz.text": "告诉你的朋友和同事Ferdi有多棒并且帮助我们传播Ferdi。", 14 "feature.shareFranz.text": "告诉你的朋友和同事Ferdi有多棒并且帮助我们传播Ferdi。",
15 "global.api.unhealthy": "无法连接Ferdi在线服务", 15 "global.api.unhealthy": "无法连接Ferdi在线服务",
16 "global.edit": "编辑",
16 "global.franzProRequired": "需要 Ferdi 专业版。", 17 "global.franzProRequired": "需要 Ferdi 专业版。",
17 "global.notConnectedToTheInternet": "没有网络服务", 18 "global.notConnectedToTheInternet": "没有网络服务",
19 "global.quit": "退出",
20 "global.settings": "设置",
18 "global.spellchecker.useDefault": "使用系统默认设置({default})", 21 "global.spellchecker.useDefault": "使用系统默认设置({default})",
19 "global.spellchecking.autodetect": "自动检测语言", 22 "global.spellchecking.autodetect": "自动检测语言",
20 "global.spellchecking.autodetect.short": "自动", 23 "global.spellchecking.autodetect.short": "自动",
21 "global.spellchecking.language": "语言拼写检查", 24 "global.spellchecking.language": "语言拼写检查",
25 "global.submit": "提交",
22 "import.headline": "导入自定义Ferdi 4服务", 26 "import.headline": "导入自定义Ferdi 4服务",
23 "import.notSupportedHeadline": "Ferdi 5 目前不支持此项服务", 27 "import.notSupportedHeadline": "Ferdi 5 目前不支持此项服务",
24 "import.skip.label": "手动添加服务", 28 "import.skip.label": "手动添加服务",
@@ -51,8 +55,6 @@
51 "menu.app.checkForUpdates": "检查更新", 55 "menu.app.checkForUpdates": "检查更新",
52 "menu.app.hide": "隐藏", 56 "menu.app.hide": "隐藏",
53 "menu.app.hideOthers": "隐藏其它", 57 "menu.app.hideOthers": "隐藏其它",
54 "menu.app.quit": "退出",
55 "menu.app.settings": "设置",
56 "menu.app.unhide": "显示", 58 "menu.app.unhide": "显示",
57 "menu.edit": "编辑", 59 "menu.edit": "编辑",
58 "menu.edit.copy": "复制", 60 "menu.edit.copy": "复制",
@@ -109,7 +111,6 @@
109 "password.link.login": "登录到您的帐户", 111 "password.link.login": "登录到您的帐户",
110 "password.link.signup": "创建一个免费账户", 112 "password.link.signup": "创建一个免费账户",
111 "password.noUser": "该邮箱尚未注册", 113 "password.noUser": "该邮箱尚未注册",
112 "password.submit.label": "提交",
113 "password.successInfo": "请检查您的 email 邮箱", 114 "password.successInfo": "请检查您的 email 邮箱",
114 "premiumFeature.button.upgradeAccount": "升级账户", 115 "premiumFeature.button.upgradeAccount": "升级账户",
115 "pricing.features.accountSync": "帐户同步", 116 "pricing.features.accountSync": "帐户同步",
@@ -179,7 +180,6 @@
179 "settings.app.form.runInBackground": "关闭窗口时保持 Ferdi 在后台运行", 180 "settings.app.form.runInBackground": "关闭窗口时保持 Ferdi 在后台运行",
180 "settings.app.form.showDisabledServices": "显示已禁用的服务标签页", 181 "settings.app.form.showDisabledServices": "显示已禁用的服务标签页",
181 "settings.app.form.showMessagesBadgesWhenMuted": "在通知被禁用时显示未读消息提示。", 182 "settings.app.form.showMessagesBadgesWhenMuted": "在通知被禁用时显示未读消息提示。",
182 "settings.app.headline": "设置",
183 "settings.app.headlineAdvanced": "高级", 183 "settings.app.headlineAdvanced": "高级",
184 "settings.app.headlineAppearance": "外观", 184 "settings.app.headlineAppearance": "外观",
185 "settings.app.headlineGeneral": "通用", 185 "settings.app.headlineGeneral": "通用",
@@ -197,7 +197,6 @@
197 "settings.navigation.availableServices": "可用的服务", 197 "settings.navigation.availableServices": "可用的服务",
198 "settings.navigation.inviteFriends": "邀请朋友", 198 "settings.navigation.inviteFriends": "邀请朋友",
199 "settings.navigation.logout": "退出账户", 199 "settings.navigation.logout": "退出账户",
200 "settings.navigation.settings": "设置",
201 "settings.navigation.team": "管理团队", 200 "settings.navigation.team": "管理团队",
202 "settings.navigation.yourServices": "您的服务", 201 "settings.navigation.yourServices": "您的服务",
203 "settings.navigation.yourWorkspaces": "你的工作组", 202 "settings.navigation.yourWorkspaces": "你的工作组",
@@ -304,7 +303,6 @@
304 "sidebar.muteApp": "关闭通知和声音提醒", 303 "sidebar.muteApp": "关闭通知和声音提醒",
305 "sidebar.openTodosDrawer": "Open Ferdi Todos", 304 "sidebar.openTodosDrawer": "Open Ferdi Todos",
306 "sidebar.openWorkspaceDrawer": "打开工作组列表", 305 "sidebar.openWorkspaceDrawer": "打开工作组列表",
307 "sidebar.settings": "设置",
308 "sidebar.unmuteApp": "开启通知和声音提醒", 306 "sidebar.unmuteApp": "开启通知和声音提醒",
309 "signup.email.label": "电子邮件", 307 "signup.email.label": "电子邮件",
310 "signup.emailDuplicate": "此邮箱已被注册", 308 "signup.emailDuplicate": "此邮箱已被注册",
@@ -321,7 +319,6 @@
321 "tabs.item.disableAudio": "禁止声音", 319 "tabs.item.disableAudio": "禁止声音",
322 "tabs.item.disableNotifications": "停止通知", 320 "tabs.item.disableNotifications": "停止通知",
323 "tabs.item.disableService": "停用服务", 321 "tabs.item.disableService": "停用服务",
324 "tabs.item.edit": "编辑",
325 "tabs.item.enableAudio": "启用声音", 322 "tabs.item.enableAudio": "启用声音",
326 "tabs.item.enableNotification": "启用通知", 323 "tabs.item.enableNotification": "启用通知",
327 "tabs.item.enableService": "启用服务", 324 "tabs.item.enableService": "启用服务",
diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json
index ff96a4107..22a0b6771 100644
--- a/src/i18n/locales/zh-HANT.json
+++ b/src/i18n/locales/zh-HANT.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "切換服務器", 5 "changeserver.headline": "切換服務器",
6 "changeserver.label": "伺服器", 6 "changeserver.label": "伺服器",
7 "changeserver.submit": "送出",
8 "changeserver.urlError": "Enter a valid URL", 7 "changeserver.urlError": "Enter a valid URL",
9 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
10 "connectionLostBanner.cta": "重新載入", 9 "connectionLostBanner.cta": "重新載入",
11 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
12 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
13 "feature.announcements.changelog.headline": "Ferdi 有了更新 {version}", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "發布除錯訊息", 13 "feature.debugger.title": "發布除錯訊息",
15 "feature.nightlyBuilds.activate": "Activate", 14 "feature.nightlyBuilds.activate": "Activate",
16 "feature.nightlyBuilds.cancel": "取消",
17 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 15 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "feature.nightlyBuilds.title": "Nightly Builds", 16 "feature.nightlyBuilds.title": "Nightly Builds",
19 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 17 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "搜尋...", 25 "feature.quickSwitch.search": "搜尋...",
28 "feature.quickSwitch.title": "QuickSwitch", 26 "feature.quickSwitch.title": "QuickSwitch",
29 "global.api.unhealthy": "無法連接到Ferdi網路服務", 27 "global.api.unhealthy": "無法連接到Ferdi網路服務",
28 "global.cancel": "取消",
29 "global.edit": "編輯",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "您未連上網際網路", 31 "global.notConnectedToTheInternet": "您未連上網際網路",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "設置",
31 "global.spellchecker.useDefault": "使用系統預設值({default})", 37 "global.spellchecker.useDefault": "使用系統預設值({default})",
32 "global.spellchecking.autodetect": "自動檢測語言", 38 "global.spellchecking.autodetect": "自動檢測語言",
33 "global.spellchecking.autodetect.short": "自動", 39 "global.spellchecking.autodetect.short": "自動",
34 "global.spellchecking.language": "拼字檢查語言", 40 "global.spellchecking.language": "拼字檢查語言",
41 "global.submit": "送出",
35 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 42 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
36 "global.userAgentPref": "User Agent", 43 "global.userAgentPref": "User Agent",
44 "global.yes": "Yes",
37 "import.headline": "匯入您的 Ferdi 4 服務", 45 "import.headline": "匯入您的 Ferdi 4 服務",
38 "import.notSupportedHeadline": "此服務不被 Ferdi 5 支持", 46 "import.notSupportedHeadline": "此服務不被 Ferdi 5 支持",
39 "import.skip.label": "我想手動匯入", 47 "import.skip.label": "我想手動匯入",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "關於 Ferdi", 86 "menu.app.about": "關於 Ferdi",
79 "menu.app.announcement": "最新消息!",
80 "menu.app.autohideMenuBar": "自動隱藏功能表列", 87 "menu.app.autohideMenuBar": "自動隱藏功能表列",
81 "menu.app.checkForUpdates": "檢查更新", 88 "menu.app.checkForUpdates": "檢查更新",
82 "menu.app.hide": "隱藏", 89 "menu.app.hide": "隱藏",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "設置",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "編輯", 92 "menu.edit": "編輯",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "登入您的帳戶", 152 "password.link.login": "登入您的帳戶",
148 "password.link.signup": "建立一個免費帳戶", 153 "password.link.signup": "建立一個免費帳戶",
149 "password.noUser": "此電子郵件帳戶不存在", 154 "password.noUser": "此電子郵件帳戶不存在",
150 "password.submit.label": "送出",
151 "password.successInfo": "請重新確認您的電子郵件信箱", 155 "password.successInfo": "請重新確認您的電子郵件信箱",
152 "pricing.features.accountSync": "帳號同步", 156 "pricing.features.accountSync": "帳號同步",
153 "pricing.features.customWebsites": "添加自訂網站", 157 "pricing.features.customWebsites": "添加自訂網站",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "包含開發中版本", 218 "settings.app.form.beta": "包含開發中版本",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "啟用夜間模式", 223 "settings.app.form.darkMode": "啟用夜間模式",
219 "settings.app.form.enableGPUAcceleration": "開啟顯示卡(GPU)加速", 224 "settings.app.form.enableGPUAcceleration": "開啟顯示卡(GPU)加速",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "設置",
255 "settings.app.headlineAdvanced": "高級設置", 259 "settings.app.headlineAdvanced": "高級設置",
256 "settings.app.headlineAppearance": "外觀", 260 "settings.app.headlineAppearance": "外觀",
257 "settings.app.headlineGeneral": "一般", 261 "settings.app.headlineGeneral": "一般",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "帳戶", 285 "settings.navigation.account": "帳戶",
282 "settings.navigation.availableServices": "可用服務", 286 "settings.navigation.availableServices": "可用服務",
283 "settings.navigation.logout": "登出", 287 "settings.navigation.logout": "登出",
284 "settings.navigation.settings": "設置",
285 "settings.navigation.supportFerdi": "關於 Ferdi", 288 "settings.navigation.supportFerdi": "關於 Ferdi",
286 "settings.navigation.team": "管理團隊", 289 "settings.navigation.team": "管理團隊",
287 "settings.navigation.yourServices": "您的服務", 290 "settings.navigation.yourServices": "您的服務",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "停用通知", 417 "sidebar.muteApp": "停用通知",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "打開工作區", 419 "sidebar.openWorkspaceDrawer": "打開工作區",
417 "sidebar.settings": "設置",
418 "sidebar.unmuteApp": "啟用通知", 420 "sidebar.unmuteApp": "啟用通知",
419 "signup.email.label": "電子郵件信箱", 421 "signup.email.label": "電子郵件信箱",
420 "signup.emailDuplicate": "此電子郵件信箱已被註冊", 422 "signup.emailDuplicate": "此電子郵件信箱已被註冊",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "停用通知", 436 "tabs.item.disableNotifications": "停用通知",
435 "tabs.item.disableService": "停用服務", 437 "tabs.item.disableService": "停用服務",
436 "tabs.item.edit": "編輯",
437 "tabs.item.enableAudio": "啟用音效", 438 "tabs.item.enableAudio": "啟用音效",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "啟用通知", 440 "tabs.item.enableNotification": "啟用通知",
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json
index d2b86d5ef..c8e0e698a 100644
--- a/src/i18n/locales/zh-TW.json
+++ b/src/i18n/locales/zh-TW.json
@@ -10,12 +10,16 @@
10 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 10 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger",
11 "feature.shareFranz.text": "告訴所有朋友和同事Ferdi有多棒!", 11 "feature.shareFranz.text": "告訴所有朋友和同事Ferdi有多棒!",
12 "global.api.unhealthy": "無法連線至 Ferdi 的伺服器", 12 "global.api.unhealthy": "無法連線至 Ferdi 的伺服器",
13 "global.edit": "編輯",
13 "global.franzProRequired": "Ferdi Professional Required", 14 "global.franzProRequired": "Ferdi Professional Required",
14 "global.notConnectedToTheInternet": "你沒有連上網路。", 15 "global.notConnectedToTheInternet": "你沒有連上網路。",
16 "global.quit": "結束",
17 "global.settings": "設定",
15 "global.spellchecker.useDefault": "使用系統預設 ({default})", 18 "global.spellchecker.useDefault": "使用系統預設 ({default})",
16 "global.spellchecking.autodetect": "自動偵測語言", 19 "global.spellchecking.autodetect": "自動偵測語言",
17 "global.spellchecking.autodetect.short": "自動的", 20 "global.spellchecking.autodetect.short": "自動的",
18 "global.spellchecking.language": "拼字檢查語言", 21 "global.spellchecking.language": "拼字檢查語言",
22 "global.submit": "送出",
19 "import.headline": "匯入 Ferdi 4 的服務", 23 "import.headline": "匯入 Ferdi 4 的服務",
20 "import.notSupportedHeadline": "Ferdi 5 尚未支援此服務", 24 "import.notSupportedHeadline": "Ferdi 5 尚未支援此服務",
21 "import.skip.label": "手動添加服務", 25 "import.skip.label": "手動添加服務",
@@ -48,8 +52,6 @@
48 "menu.app.checkForUpdates": "檢查更新", 52 "menu.app.checkForUpdates": "檢查更新",
49 "menu.app.hide": "隱藏", 53 "menu.app.hide": "隱藏",
50 "menu.app.hideOthers": "隱藏其他", 54 "menu.app.hideOthers": "隱藏其他",
51 "menu.app.quit": "結束",
52 "menu.app.settings": "設定",
53 "menu.app.unhide": "顯示", 55 "menu.app.unhide": "顯示",
54 "menu.edit": "編輯", 56 "menu.edit": "編輯",
55 "menu.edit.copy": "拷貝", 57 "menu.edit.copy": "拷貝",
@@ -104,7 +106,6 @@
104 "password.link.login": "登入您的帳號", 106 "password.link.login": "登入您的帳號",
105 "password.link.signup": "建立免費帳號", 107 "password.link.signup": "建立免費帳號",
106 "password.noUser": "找不到該電子郵件地址的用戶", 108 "password.noUser": "找不到該電子郵件地址的用戶",
107 "password.submit.label": "送出",
108 "password.successInfo": "請檢查您的電子郵件", 109 "password.successInfo": "請檢查您的電子郵件",
109 "premiumFeature.button.upgradeAccount": "升級帳號", 110 "premiumFeature.button.upgradeAccount": "升級帳號",
110 "pricing.features.adFree": "Forever ad-free", 111 "pricing.features.adFree": "Forever ad-free",
@@ -157,6 +158,7 @@
157 "settings.app.form.autoLaunchInBackground": "在背景開啟", 158 "settings.app.form.autoLaunchInBackground": "在背景開啟",
158 "settings.app.form.autoLaunchOnStart": "開機時啟動 Ferdi", 159 "settings.app.form.autoLaunchOnStart": "開機時啟動 Ferdi",
159 "settings.app.form.beta": "包含測試版", 160 "settings.app.form.beta": "包含測試版",
161 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
160 "settings.app.form.darkMode": "加入黑暗面", 162 "settings.app.form.darkMode": "加入黑暗面",
161 "settings.app.form.enableGPUAcceleration": "啟用 GPU 加速", 163 "settings.app.form.enableGPUAcceleration": "啟用 GPU 加速",
162 "settings.app.form.enableSpellchecking": "啟用拼字檢查", 164 "settings.app.form.enableSpellchecking": "啟用拼字檢查",
@@ -165,11 +167,9 @@
165 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 167 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
166 "settings.app.form.language": "語言", 168 "settings.app.form.language": "語言",
167 "settings.app.form.minimizeToSystemTray": "最小化 Ferdi 到系統列", 169 "settings.app.form.minimizeToSystemTray": "最小化 Ferdi 到系統列",
168 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
169 "settings.app.form.runInBackground": "當關閉視窗時,保持 Ferdi 在背景運作", 170 "settings.app.form.runInBackground": "當關閉視窗時,保持 Ferdi 在背景運作",
170 "settings.app.form.showDisabledServices": "顯示停用的服務標籤", 171 "settings.app.form.showDisabledServices": "顯示停用的服務標籤",
171 "settings.app.form.showMessagesBadgesWhenMuted": "當通知關閉時,標記未讀的訊息", 172 "settings.app.form.showMessagesBadgesWhenMuted": "當通知關閉時,標記未讀的訊息",
172 "settings.app.headline": "設定",
173 "settings.app.headlineAdvanced": "進階", 173 "settings.app.headlineAdvanced": "進階",
174 "settings.app.headlineAppearance": "外觀", 174 "settings.app.headlineAppearance": "外觀",
175 "settings.app.headlineGeneral": "一般", 175 "settings.app.headlineGeneral": "一般",
@@ -187,7 +187,6 @@
187 "settings.navigation.availableServices": "可使用的服務", 187 "settings.navigation.availableServices": "可使用的服務",
188 "settings.navigation.inviteFriends": "邀請朋友", 188 "settings.navigation.inviteFriends": "邀請朋友",
189 "settings.navigation.logout": "登出", 189 "settings.navigation.logout": "登出",
190 "settings.navigation.settings": "設定",
191 "settings.navigation.team": "管理團隊", 190 "settings.navigation.team": "管理團隊",
192 "settings.navigation.yourServices": "您的服務", 191 "settings.navigation.yourServices": "您的服務",
193 "settings.navigation.yourWorkspaces": "所有工作區", 192 "settings.navigation.yourWorkspaces": "所有工作區",
@@ -289,7 +288,6 @@
289 "sidebar.muteApp": "關閉通知和通知音效", 288 "sidebar.muteApp": "關閉通知和通知音效",
290 "sidebar.openTodosDrawer": "Open Ferdi Todos", 289 "sidebar.openTodosDrawer": "Open Ferdi Todos",
291 "sidebar.openWorkspaceDrawer": "打開工作空間", 290 "sidebar.openWorkspaceDrawer": "打開工作空間",
292 "sidebar.settings": "設定",
293 "sidebar.unmuteApp": "開啟通知和通知音效", 291 "sidebar.unmuteApp": "開啟通知和通知音效",
294 "signup.email.label": "電子郵件地址", 292 "signup.email.label": "電子郵件地址",
295 "signup.emailDuplicate": "該使用者的電子郵件位址已存在", 293 "signup.emailDuplicate": "該使用者的電子郵件位址已存在",
@@ -306,7 +304,6 @@
306 "tabs.item.disableAudio": "停用音訊", 304 "tabs.item.disableAudio": "停用音訊",
307 "tabs.item.disableNotifications": "停用通知", 305 "tabs.item.disableNotifications": "停用通知",
308 "tabs.item.disableService": "關閉服務", 306 "tabs.item.disableService": "關閉服務",
309 "tabs.item.edit": "編輯",
310 "tabs.item.enableAudio": "啟用音訊", 307 "tabs.item.enableAudio": "啟用音訊",
311 "tabs.item.enableNotification": "啟用通知", 308 "tabs.item.enableNotification": "啟用通知",
312 "tabs.item.enableService": "啟用服務", 309 "tabs.item.enableService": "啟用服務",
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json
index de9d937e3..fa30d636a 100644
--- a/src/i18n/locales/zh.json
+++ b/src/i18n/locales/zh.json
@@ -4,16 +4,14 @@
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Change server",
6 "changeserver.label": "服务器:", 6 "changeserver.label": "服务器:",
7 "changeserver.submit": "Submit",
8 "changeserver.urlError": "输入有效的URL", 7 "changeserver.urlError": "输入有效的URL",
9 "changeserver.warning": "Ferdi提供的额外设置将不会被保存", 8 "changeserver.warning": "Ferdi提供的额外设置将不会被保存",
10 "connectionLostBanner.cta": "重新加载服务", 9 "connectionLostBanner.cta": "重新加载服务",
11 "connectionLostBanner.informationLink": "发生了什么?", 10 "connectionLostBanner.informationLink": "发生了什么?",
12 "connectionLostBanner.message": "哦不!Ferdi失去了与 {name} 的连接。", 11 "connectionLostBanner.message": "哦不!Ferdi失去了与 {name} 的连接。",
13 "feature.announcements.changelog.headline": "Ferdi的变化", 12 "feature.basicAuth.signIn": "Sign In",
14 "feature.debugger.title": "发布调试信息", 13 "feature.debugger.title": "发布调试信息",
15 "feature.nightlyBuilds.activate": "激活", 14 "feature.nightlyBuilds.activate": "激活",
16 "feature.nightlyBuilds.cancel": "取消",
17 "feature.nightlyBuilds.info": "每夜版(Nightly builds) 是Ferdi的实验性版本,可能包含未完善或未完成的功能。这些每夜版主要由开发人员来测试他们新开发的功能及它们在最终版本的的表现。如果您不知道自己在做什么,我们建议您不要激活每夜版。", 15 "feature.nightlyBuilds.info": "每夜版(Nightly builds) 是Ferdi的实验性版本,可能包含未完善或未完成的功能。这些每夜版主要由开发人员来测试他们新开发的功能及它们在最终版本的的表现。如果您不知道自己在做什么,我们建议您不要激活每夜版。",
18 "feature.nightlyBuilds.title": "每夜版", 16 "feature.nightlyBuilds.title": "每夜版",
19 "feature.publishDebugInfo.error": "发布调试信息时出错。请稍后再试或查看控制台以获取更多信息。", 17 "feature.publishDebugInfo.error": "发布调试信息时出错。请稍后再试或查看控制台以获取更多信息。",
@@ -27,13 +25,23 @@
27 "feature.quickSwitch.search": "搜索...", 25 "feature.quickSwitch.search": "搜索...",
28 "feature.quickSwitch.title": "快速切换", 26 "feature.quickSwitch.title": "快速切换",
29 "global.api.unhealthy": "无法链接到 Ferdi 在线服务", 27 "global.api.unhealthy": "无法链接到 Ferdi 在线服务",
28 "global.cancel": "取消",
29 "global.edit": "编辑",
30 "global.no": "No",
30 "global.notConnectedToTheInternet": "您没有连接到互联网。", 31 "global.notConnectedToTheInternet": "您没有连接到互联网。",
32 "global.ok": "Ok",
33 "global.quit": "Quit",
34 "global.quitConfirmation": "Do you really want to quit Ferdi?",
35 "global.save": "Save",
36 "global.settings": "设置",
31 "global.spellchecker.useDefault": "使用系统默认值 ({default})", 37 "global.spellchecker.useDefault": "使用系统默认值 ({default})",
32 "global.spellchecking.autodetect": "自动检测语言", 38 "global.spellchecking.autodetect": "自动检测语言",
33 "global.spellchecking.autodetect.short": "自动", 39 "global.spellchecking.autodetect.short": "自动",
34 "global.spellchecking.language": "拼写检查语言", 40 "global.spellchecking.language": "拼写检查语言",
41 "global.submit": "Submit",
35 "global.userAgentHelp": "使用 'https://whatmyuseragent.com/' (以发现)或 'https://developers.whatismybrowser.com/useragents/explore/' (以选择) 你所需要的用户代理并复制粘贴到这里。", 42 "global.userAgentHelp": "使用 'https://whatmyuseragent.com/' (以发现)或 'https://developers.whatismybrowser.com/useragents/explore/' (以选择) 你所需要的用户代理并复制粘贴到这里。",
36 "global.userAgentPref": "浏览器标识(用户代理)", 43 "global.userAgentPref": "浏览器标识(用户代理)",
44 "global.yes": "Yes",
37 "import.headline": "导入你的 Ferdi 4 服务", 45 "import.headline": "导入你的 Ferdi 4 服务",
38 "import.notSupportedHeadline": "Ferdi 5尚未支持的服务", 46 "import.notSupportedHeadline": "Ferdi 5尚未支持的服务",
39 "import.skip.label": "我想手动添加服务", 47 "import.skip.label": "我想手动添加服务",
@@ -76,13 +84,10 @@
76 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 84 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
77 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 85 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
78 "menu.app.about": "About Ferdi", 86 "menu.app.about": "About Ferdi",
79 "menu.app.announcement": "新功能",
80 "menu.app.autohideMenuBar": "Auto-hide menu bar", 87 "menu.app.autohideMenuBar": "Auto-hide menu bar",
81 "menu.app.checkForUpdates": "Check for updates", 88 "menu.app.checkForUpdates": "Check for updates",
82 "menu.app.hide": "隐藏", 89 "menu.app.hide": "隐藏",
83 "menu.app.hideOthers": "Hide Others", 90 "menu.app.hideOthers": "Hide Others",
84 "menu.app.quit": "Quit",
85 "menu.app.settings": "设置",
86 "menu.app.unhide": "Unhide", 91 "menu.app.unhide": "Unhide",
87 "menu.edit": "编辑", 92 "menu.edit": "编辑",
88 "menu.edit.copy": "Copy", 93 "menu.edit.copy": "Copy",
@@ -147,7 +152,6 @@
147 "password.link.login": "Sign in to your account", 152 "password.link.login": "Sign in to your account",
148 "password.link.signup": "Create a free account", 153 "password.link.signup": "Create a free account",
149 "password.noUser": "No user with that email address was found", 154 "password.noUser": "No user with that email address was found",
150 "password.submit.label": "Submit",
151 "password.successInfo": "Please check your email", 155 "password.successInfo": "Please check your email",
152 "pricing.features.accountSync": "Account Synchronisation", 156 "pricing.features.accountSync": "Account Synchronisation",
153 "pricing.features.customWebsites": "Add Custom Websites", 157 "pricing.features.customWebsites": "Add Custom Websites",
@@ -214,6 +218,7 @@
214 "settings.app.form.beta": "Include beta versions", 218 "settings.app.form.beta": "Include beta versions",
215 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 219 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
216 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 220 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
221 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
217 "settings.app.form.customTodoServer": "Custom Todo Server", 222 "settings.app.form.customTodoServer": "Custom Todo Server",
218 "settings.app.form.darkMode": "Enable dark mode", 223 "settings.app.form.darkMode": "Enable dark mode",
219 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 224 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
@@ -251,7 +256,6 @@
251 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 256 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
252 "settings.app.form.useVerticalStyle": "Use horizontal style", 257 "settings.app.form.useVerticalStyle": "Use horizontal style",
253 "settings.app.form.wakeUpStrategy": "Wake up strategy", 258 "settings.app.form.wakeUpStrategy": "Wake up strategy",
254 "settings.app.headline": "设置",
255 "settings.app.headlineAdvanced": "Advanced", 259 "settings.app.headlineAdvanced": "Advanced",
256 "settings.app.headlineAppearance": "Appearance", 260 "settings.app.headlineAppearance": "Appearance",
257 "settings.app.headlineGeneral": "General", 261 "settings.app.headlineGeneral": "General",
@@ -281,7 +285,6 @@
281 "settings.navigation.account": "Account", 285 "settings.navigation.account": "Account",
282 "settings.navigation.availableServices": "Available services", 286 "settings.navigation.availableServices": "Available services",
283 "settings.navigation.logout": "Logout", 287 "settings.navigation.logout": "Logout",
284 "settings.navigation.settings": "设置",
285 "settings.navigation.supportFerdi": "About Ferdi", 288 "settings.navigation.supportFerdi": "About Ferdi",
286 "settings.navigation.team": "Manage Team", 289 "settings.navigation.team": "Manage Team",
287 "settings.navigation.yourServices": "Your services", 290 "settings.navigation.yourServices": "Your services",
@@ -414,7 +417,6 @@
414 "sidebar.muteApp": "Disable notifications & audio", 417 "sidebar.muteApp": "Disable notifications & audio",
415 "sidebar.openTodosDrawer": "Open Ferdi Todos", 418 "sidebar.openTodosDrawer": "Open Ferdi Todos",
416 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 419 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
417 "sidebar.settings": "设置",
418 "sidebar.unmuteApp": "Enable notifications & audio", 420 "sidebar.unmuteApp": "Enable notifications & audio",
419 "signup.email.label": "电子邮箱地址", 421 "signup.email.label": "电子邮箱地址",
420 "signup.emailDuplicate": "A user with that email address already exists", 422 "signup.emailDuplicate": "A user with that email address already exists",
@@ -433,7 +435,6 @@
433 "tabs.item.disableDarkMode": "Disable Dark mode", 435 "tabs.item.disableDarkMode": "Disable Dark mode",
434 "tabs.item.disableNotifications": "Disable notifications", 436 "tabs.item.disableNotifications": "Disable notifications",
435 "tabs.item.disableService": "Disable service", 437 "tabs.item.disableService": "Disable service",
436 "tabs.item.edit": "编辑",
437 "tabs.item.enableAudio": "Enable audio", 438 "tabs.item.enableAudio": "Enable audio",
438 "tabs.item.enableDarkMode": "Enable Dark mode", 439 "tabs.item.enableDarkMode": "Enable Dark mode",
439 "tabs.item.enableNotification": "Enable notifications", 440 "tabs.item.enableNotification": "Enable notifications",
diff --git a/src/i18n/messages/src/components/AppUpdateInfoBar.json b/src/i18n/messages/src/components/AppUpdateInfoBar.json
index da801b548..b99eaff67 100644
--- a/src/i18n/messages/src/components/AppUpdateInfoBar.json
+++ b/src/i18n/messages/src/components/AppUpdateInfoBar.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!A new update for Ferdi is available.", 4 "defaultMessage": "!!!A new update for Ferdi is available.",
5 "file": "src/components/AppUpdateInfoBar.js", 5 "file": "src/components/AppUpdateInfoBar.js",
6 "start": { 6 "start": {
7 "line": 9, 7 "line": 10,
8 "column": 19 8 "column": 19
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 12, 11 "line": 13,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Changelog", 17 "defaultMessage": "!!!Changelog",
18 "file": "src/components/AppUpdateInfoBar.js", 18 "file": "src/components/AppUpdateInfoBar.js",
19 "start": { 19 "start": {
20 "line": 13, 20 "line": 14,
21 "column": 13 21 "column": 13
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 16, 24 "line": 17,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Restart & install update", 30 "defaultMessage": "!!!Restart & install update",
31 "file": "src/components/AppUpdateInfoBar.js", 31 "file": "src/components/AppUpdateInfoBar.js",
32 "start": { 32 "start": {
33 "line": 17, 33 "line": 18,
34 "column": 23 34 "column": 23
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 20, 37 "line": 21,
38 "column": 3 38 "column": 3
39 } 39 }
40 } 40 }
diff --git a/src/i18n/messages/src/components/auth/ChangeServer.json b/src/i18n/messages/src/components/auth/ChangeServer.json
index c8f74a3c0..87e0b5857 100644
--- a/src/i18n/messages/src/components/auth/ChangeServer.json
+++ b/src/i18n/messages/src/components/auth/ChangeServer.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Change server", 4 "defaultMessage": "!!!Change server",
5 "file": "src/components/auth/ChangeServer.js", 5 "file": "src/components/auth/ChangeServer.js",
6 "start": { 6 "start": {
7 "line": 14, 7 "line": 15,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 17, 11 "line": 18,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Server", 17 "defaultMessage": "!!!Server",
18 "file": "src/components/auth/ChangeServer.js", 18 "file": "src/components/auth/ChangeServer.js",
19 "start": { 19 "start": {
20 "line": 18, 20 "line": 19,
21 "column": 9 21 "column": 9
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 21, 24 "line": 22,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved", 30 "defaultMessage": "!!!Extra settings offered by Ferdi will not be saved",
31 "file": "src/components/auth/ChangeServer.js", 31 "file": "src/components/auth/ChangeServer.js",
32 "start": { 32 "start": {
33 "line": 22, 33 "line": 23,
34 "column": 11 34 "column": 11
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 25, 37 "line": 26,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Custom server", 43 "defaultMessage": "!!!Custom server",
44 "file": "src/components/auth/ChangeServer.js", 44 "file": "src/components/auth/ChangeServer.js",
45 "start": { 45 "start": {
46 "line": 26, 46 "line": 27,
47 "column": 21 47 "column": 21
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 29, 50 "line": 30,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,24 +56,11 @@
56 "defaultMessage": "!!!Enter a valid URL", 56 "defaultMessage": "!!!Enter a valid URL",
57 "file": "src/components/auth/ChangeServer.js", 57 "file": "src/components/auth/ChangeServer.js",
58 "start": { 58 "start": {
59 "line": 30, 59 "line": 31,
60 "column": 12 60 "column": 12
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "changeserver.submit",
69 "defaultMessage": "!!!Submit",
70 "file": "src/components/auth/ChangeServer.js",
71 "start": {
72 "line": 34, 63 "line": 34,
73 "column": 10
74 },
75 "end": {
76 "line": 37,
77 "column": 3 64 "column": 3
78 } 65 }
79 } 66 }
diff --git a/src/i18n/messages/src/components/auth/Password.json b/src/i18n/messages/src/components/auth/Password.json
index f335b3acb..336ba42ef 100644
--- a/src/i18n/messages/src/components/auth/Password.json
+++ b/src/i18n/messages/src/components/auth/Password.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Forgot password", 4 "defaultMessage": "!!!Forgot password",
5 "file": "src/components/auth/Password.js", 5 "file": "src/components/auth/Password.js",
6 "start": { 6 "start": {
7 "line": 14, 7 "line": 15,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 17, 11 "line": 18,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,24 +17,11 @@
17 "defaultMessage": "!!!Email address", 17 "defaultMessage": "!!!Email address",
18 "file": "src/components/auth/Password.js", 18 "file": "src/components/auth/Password.js",
19 "start": { 19 "start": {
20 "line": 18, 20 "line": 19,
21 "column": 14 21 "column": 14
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "password.submit.label",
30 "defaultMessage": "!!!Submit",
31 "file": "src/components/auth/Password.js",
32 "start": {
33 "line": 22, 24 "line": 22,
34 "column": 21
35 },
36 "end": {
37 "line": 25,
38 "column": 3 25 "column": 3
39 } 26 }
40 }, 27 },
@@ -43,11 +30,11 @@
43 "defaultMessage": "!!!Your new password was sent to your email address", 30 "defaultMessage": "!!!Your new password was sent to your email address",
44 "file": "src/components/auth/Password.js", 31 "file": "src/components/auth/Password.js",
45 "start": { 32 "start": {
46 "line": 26, 33 "line": 23,
47 "column": 15 34 "column": 15
48 }, 35 },
49 "end": { 36 "end": {
50 "line": 29, 37 "line": 26,
51 "column": 3 38 "column": 3
52 } 39 }
53 }, 40 },
@@ -56,11 +43,11 @@
56 "defaultMessage": "!!!No user affiliated with that email address", 43 "defaultMessage": "!!!No user affiliated with that email address",
57 "file": "src/components/auth/Password.js", 44 "file": "src/components/auth/Password.js",
58 "start": { 45 "start": {
59 "line": 30, 46 "line": 27,
60 "column": 10 47 "column": 10
61 }, 48 },
62 "end": { 49 "end": {
63 "line": 33, 50 "line": 30,
64 "column": 3 51 "column": 3
65 } 52 }
66 }, 53 },
@@ -69,11 +56,11 @@
69 "defaultMessage": "!!!Create a free account", 56 "defaultMessage": "!!!Create a free account",
70 "file": "src/components/auth/Password.js", 57 "file": "src/components/auth/Password.js",
71 "start": { 58 "start": {
72 "line": 34, 59 "line": 31,
73 "column": 14 60 "column": 14
74 }, 61 },
75 "end": { 62 "end": {
76 "line": 37, 63 "line": 34,
77 "column": 3 64 "column": 3
78 } 65 }
79 }, 66 },
@@ -82,11 +69,11 @@
82 "defaultMessage": "!!!Sign in to your account", 69 "defaultMessage": "!!!Sign in to your account",
83 "file": "src/components/auth/Password.js", 70 "file": "src/components/auth/Password.js",
84 "start": { 71 "start": {
85 "line": 38, 72 "line": 35,
86 "column": 13 73 "column": 13
87 }, 74 },
88 "end": { 75 "end": {
89 "line": 41, 76 "line": 38,
90 "column": 3 77 "column": 3
91 } 78 }
92 } 79 }
diff --git a/src/i18n/messages/src/components/auth/SetupAssistant.json b/src/i18n/messages/src/components/auth/SetupAssistant.json
index f950228b7..108adab26 100644
--- a/src/i18n/messages/src/components/auth/SetupAssistant.json
+++ b/src/i18n/messages/src/components/auth/SetupAssistant.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Let's get started", 4 "defaultMessage": "!!!Let's get started",
5 "file": "src/components/auth/SetupAssistant.js", 5 "file": "src/components/auth/SetupAssistant.js",
6 "start": { 6 "start": {
7 "line": 19, 7 "line": 20,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 22, 11 "line": 23,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Choose from our most used services and get back on top of your messaging now.", 17 "defaultMessage": "!!!Choose from our most used services and get back on top of your messaging now.",
18 "file": "src/components/auth/SetupAssistant.js", 18 "file": "src/components/auth/SetupAssistant.js",
19 "start": { 19 "start": {
20 "line": 23, 20 "line": 24,
21 "column": 15 21 "column": 15
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 27, 24 "line": 28,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Let's go", 30 "defaultMessage": "!!!Let's go",
31 "file": "src/components/auth/SetupAssistant.js", 31 "file": "src/components/auth/SetupAssistant.js",
32 "start": { 32 "start": {
33 "line": 28, 33 "line": 29,
34 "column": 21 34 "column": 21
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 31, 37 "line": 32,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Invitations sent successfully", 43 "defaultMessage": "!!!Invitations sent successfully",
44 "file": "src/components/auth/SetupAssistant.js", 44 "file": "src/components/auth/SetupAssistant.js",
45 "start": { 45 "start": {
46 "line": 32, 46 "line": 33,
47 "column": 21 47 "column": 21
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 35, 50 "line": 36,
51 "column": 3 51 "column": 3
52 } 52 }
53 } 53 }
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json
index f16baea32..9bc435f12 100644
--- a/src/i18n/messages/src/components/layout/Sidebar.json
+++ b/src/i18n/messages/src/components/layout/Sidebar.json
@@ -1,27 +1,14 @@
1[ 1[
2 { 2 {
3 "id": "sidebar.settings",
4 "defaultMessage": "!!!Settings",
5 "file": "src/components/layout/Sidebar.js",
6 "start": {
7 "line": 17,
8 "column": 12
9 },
10 "end": {
11 "line": 20,
12 "column": 3
13 }
14 },
15 {
16 "id": "sidebar.addNewService", 3 "id": "sidebar.addNewService",
17 "defaultMessage": "!!!Add new service", 4 "defaultMessage": "!!!Add new service",
18 "file": "src/components/layout/Sidebar.js", 5 "file": "src/components/layout/Sidebar.js",
19 "start": { 6 "start": {
20 "line": 21, 7 "line": 18,
21 "column": 17 8 "column": 17
22 }, 9 },
23 "end": { 10 "end": {
24 "line": 24, 11 "line": 21,
25 "column": 3 12 "column": 3
26 } 13 }
27 }, 14 },
@@ -30,11 +17,11 @@
30 "defaultMessage": "!!!Disable notifications & audio", 17 "defaultMessage": "!!!Disable notifications & audio",
31 "file": "src/components/layout/Sidebar.js", 18 "file": "src/components/layout/Sidebar.js",
32 "start": { 19 "start": {
33 "line": 25, 20 "line": 22,
34 "column": 8 21 "column": 8
35 }, 22 },
36 "end": { 23 "end": {
37 "line": 28, 24 "line": 25,
38 "column": 3 25 "column": 3
39 } 26 }
40 }, 27 },
@@ -43,11 +30,11 @@
43 "defaultMessage": "!!!Enable notifications & audio", 30 "defaultMessage": "!!!Enable notifications & audio",
44 "file": "src/components/layout/Sidebar.js", 31 "file": "src/components/layout/Sidebar.js",
45 "start": { 32 "start": {
46 "line": 29, 33 "line": 26,
47 "column": 10 34 "column": 10
48 }, 35 },
49 "end": { 36 "end": {
50 "line": 32, 37 "line": 29,
51 "column": 3 38 "column": 3
52 } 39 }
53 }, 40 },
@@ -56,11 +43,11 @@
56 "defaultMessage": "!!!Open workspace drawer", 43 "defaultMessage": "!!!Open workspace drawer",
57 "file": "src/components/layout/Sidebar.js", 44 "file": "src/components/layout/Sidebar.js",
58 "start": { 45 "start": {
59 "line": 33, 46 "line": 30,
60 "column": 23 47 "column": 23
61 }, 48 },
62 "end": { 49 "end": {
63 "line": 36, 50 "line": 33,
64 "column": 3 51 "column": 3
65 } 52 }
66 }, 53 },
@@ -69,37 +56,37 @@
69 "defaultMessage": "!!!Close workspace drawer", 56 "defaultMessage": "!!!Close workspace drawer",
70 "file": "src/components/layout/Sidebar.js", 57 "file": "src/components/layout/Sidebar.js",
71 "start": { 58 "start": {
72 "line": 37, 59 "line": 34,
73 "column": 24 60 "column": 24
74 }, 61 },
75 "end": { 62 "end": {
76 "line": 40, 63 "line": 37,
77 "column": 3 64 "column": 3
78 } 65 }
79 }, 66 },
80 { 67 {
81 "id": "sidebar.openTodosDrawer", 68 "id": "sidebar.openTodosDrawer",
82 "defaultMessage": "!!!Open Franz Todos", 69 "defaultMessage": "!!!Open Ferdi Todos",
83 "file": "src/components/layout/Sidebar.js", 70 "file": "src/components/layout/Sidebar.js",
84 "start": { 71 "start": {
85 "line": 41, 72 "line": 38,
86 "column": 19 73 "column": 19
87 }, 74 },
88 "end": { 75 "end": {
89 "line": 44, 76 "line": 41,
90 "column": 3 77 "column": 3
91 } 78 }
92 }, 79 },
93 { 80 {
94 "id": "sidebar.closeTodosDrawer", 81 "id": "sidebar.closeTodosDrawer",
95 "defaultMessage": "!!!Close Franz Todos", 82 "defaultMessage": "!!!Close Ferdi Todos",
96 "file": "src/components/layout/Sidebar.js", 83 "file": "src/components/layout/Sidebar.js",
97 "start": { 84 "start": {
98 "line": 45, 85 "line": 42,
99 "column": 20 86 "column": 20
100 }, 87 },
101 "end": { 88 "end": {
102 "line": 48, 89 "line": 45,
103 "column": 3 90 "column": 3
104 } 91 }
105 }, 92 },
@@ -108,11 +95,11 @@
108 "defaultMessage": "!!!Lock Ferdi", 95 "defaultMessage": "!!!Lock Ferdi",
109 "file": "src/components/layout/Sidebar.js", 96 "file": "src/components/layout/Sidebar.js",
110 "start": { 97 "start": {
111 "line": 49, 98 "line": 46,
112 "column": 13 99 "column": 13
113 }, 100 },
114 "end": { 101 "end": {
115 "line": 52, 102 "line": 49,
116 "column": 3 103 "column": 3
117 } 104 }
118 } 105 }
diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json
index 92ff6fb14..de854f1e1 100644
--- a/src/i18n/messages/src/components/services/tabs/TabItem.json
+++ b/src/i18n/messages/src/components/services/tabs/TabItem.json
@@ -4,24 +4,11 @@
4 "defaultMessage": "!!!Reload", 4 "defaultMessage": "!!!Reload",
5 "file": "src/components/services/tabs/TabItem.js", 5 "file": "src/components/services/tabs/TabItem.js",
6 "start": { 6 "start": {
7 "line": 20, 7 "line": 21,
8 "column": 10 8 "column": 10
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 23,
12 "column": 3
13 }
14 },
15 {
16 "id": "tabs.item.edit",
17 "defaultMessage": "!!!Edit",
18 "file": "src/components/services/tabs/TabItem.js",
19 "start": {
20 "line": 24, 11 "line": 24,
21 "column": 8
22 },
23 "end": {
24 "line": 27,
25 "column": 3 12 "column": 3
26 } 13 }
27 }, 14 },
@@ -30,11 +17,11 @@
30 "defaultMessage": "!!!Disable notifications", 17 "defaultMessage": "!!!Disable notifications",
31 "file": "src/components/services/tabs/TabItem.js", 18 "file": "src/components/services/tabs/TabItem.js",
32 "start": { 19 "start": {
33 "line": 28, 20 "line": 25,
34 "column": 24 21 "column": 24
35 }, 22 },
36 "end": { 23 "end": {
37 "line": 31, 24 "line": 28,
38 "column": 3 25 "column": 3
39 } 26 }
40 }, 27 },
@@ -43,11 +30,11 @@
43 "defaultMessage": "!!!Enable notifications", 30 "defaultMessage": "!!!Enable notifications",
44 "file": "src/components/services/tabs/TabItem.js", 31 "file": "src/components/services/tabs/TabItem.js",
45 "start": { 32 "start": {
46 "line": 32, 33 "line": 29,
47 "column": 23 34 "column": 23
48 }, 35 },
49 "end": { 36 "end": {
50 "line": 35, 37 "line": 32,
51 "column": 3 38 "column": 3
52 } 39 }
53 }, 40 },
@@ -56,11 +43,11 @@
56 "defaultMessage": "!!!Disable audio", 43 "defaultMessage": "!!!Disable audio",
57 "file": "src/components/services/tabs/TabItem.js", 44 "file": "src/components/services/tabs/TabItem.js",
58 "start": { 45 "start": {
59 "line": 36, 46 "line": 33,
60 "column": 16 47 "column": 16
61 }, 48 },
62 "end": { 49 "end": {
63 "line": 39, 50 "line": 36,
64 "column": 3 51 "column": 3
65 } 52 }
66 }, 53 },
@@ -69,11 +56,11 @@
69 "defaultMessage": "!!!Enable audio", 56 "defaultMessage": "!!!Enable audio",
70 "file": "src/components/services/tabs/TabItem.js", 57 "file": "src/components/services/tabs/TabItem.js",
71 "start": { 58 "start": {
72 "line": 40, 59 "line": 37,
73 "column": 15 60 "column": 15
74 }, 61 },
75 "end": { 62 "end": {
76 "line": 43, 63 "line": 40,
77 "column": 3 64 "column": 3
78 } 65 }
79 }, 66 },
@@ -82,11 +69,11 @@
82 "defaultMessage": "!!!Enable Dark mode", 69 "defaultMessage": "!!!Enable Dark mode",
83 "file": "src/components/services/tabs/TabItem.js", 70 "file": "src/components/services/tabs/TabItem.js",
84 "start": { 71 "start": {
85 "line": 44, 72 "line": 41,
86 "column": 18 73 "column": 18
87 }, 74 },
88 "end": { 75 "end": {
89 "line": 47, 76 "line": 44,
90 "column": 3 77 "column": 3
91 } 78 }
92 }, 79 },
@@ -95,11 +82,11 @@
95 "defaultMessage": "!!!Disable Dark mode", 82 "defaultMessage": "!!!Disable Dark mode",
96 "file": "src/components/services/tabs/TabItem.js", 83 "file": "src/components/services/tabs/TabItem.js",
97 "start": { 84 "start": {
98 "line": 48, 85 "line": 45,
99 "column": 19 86 "column": 19
100 }, 87 },
101 "end": { 88 "end": {
102 "line": 51, 89 "line": 48,
103 "column": 3 90 "column": 3
104 } 91 }
105 }, 92 },
@@ -108,11 +95,11 @@
108 "defaultMessage": "!!!Disable Service", 95 "defaultMessage": "!!!Disable Service",
109 "file": "src/components/services/tabs/TabItem.js", 96 "file": "src/components/services/tabs/TabItem.js",
110 "start": { 97 "start": {
111 "line": 52, 98 "line": 49,
112 "column": 18 99 "column": 18
113 }, 100 },
114 "end": { 101 "end": {
115 "line": 55, 102 "line": 52,
116 "column": 3 103 "column": 3
117 } 104 }
118 }, 105 },
@@ -121,11 +108,11 @@
121 "defaultMessage": "!!!Enable Service", 108 "defaultMessage": "!!!Enable Service",
122 "file": "src/components/services/tabs/TabItem.js", 109 "file": "src/components/services/tabs/TabItem.js",
123 "start": { 110 "start": {
124 "line": 56, 111 "line": 53,
125 "column": 17 112 "column": 17
126 }, 113 },
127 "end": { 114 "end": {
128 "line": 59, 115 "line": 56,
129 "column": 3 116 "column": 3
130 } 117 }
131 }, 118 },
@@ -134,11 +121,11 @@
134 "defaultMessage": "!!!Hibernate Service", 121 "defaultMessage": "!!!Hibernate Service",
135 "file": "src/components/services/tabs/TabItem.js", 122 "file": "src/components/services/tabs/TabItem.js",
136 "start": { 123 "start": {
137 "line": 60, 124 "line": 57,
138 "column": 20 125 "column": 20
139 }, 126 },
140 "end": { 127 "end": {
141 "line": 63, 128 "line": 60,
142 "column": 3 129 "column": 3
143 } 130 }
144 }, 131 },
@@ -147,11 +134,11 @@
147 "defaultMessage": "!!!Wake Up Service", 134 "defaultMessage": "!!!Wake Up Service",
148 "file": "src/components/services/tabs/TabItem.js", 135 "file": "src/components/services/tabs/TabItem.js",
149 "start": { 136 "start": {
150 "line": 64, 137 "line": 61,
151 "column": 17 138 "column": 17
152 }, 139 },
153 "end": { 140 "end": {
154 "line": 67, 141 "line": 64,
155 "column": 3 142 "column": 3
156 } 143 }
157 }, 144 },
@@ -160,11 +147,11 @@
160 "defaultMessage": "!!!Delete Service", 147 "defaultMessage": "!!!Delete Service",
161 "file": "src/components/services/tabs/TabItem.js", 148 "file": "src/components/services/tabs/TabItem.js",
162 "start": { 149 "start": {
163 "line": 68, 150 "line": 65,
164 "column": 17 151 "column": 17
165 }, 152 },
166 "end": { 153 "end": {
167 "line": 71, 154 "line": 68,
168 "column": 3 155 "column": 3
169 } 156 }
170 }, 157 },
@@ -173,11 +160,11 @@
173 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?", 160 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?",
174 "file": "src/components/services/tabs/TabItem.js", 161 "file": "src/components/services/tabs/TabItem.js",
175 "start": { 162 "start": {
176 "line": 72, 163 "line": 69,
177 "column": 24 164 "column": 24
178 }, 165 },
179 "end": { 166 "end": {
180 "line": 76, 167 "line": 73,
181 "column": 3 168 "column": 3
182 } 169 }
183 } 170 }
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
index 705b7cee3..2029ad7af 100644
--- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
+++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Available services", 4 "defaultMessage": "!!!Available services",
5 "file": "src/components/settings/navigation/SettingsNavigation.js", 5 "file": "src/components/settings/navigation/SettingsNavigation.js",
6 "start": { 6 "start": {
7 "line": 15, 7 "line": 16,
8 "column": 21 8 "column": 21
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 18, 11 "line": 19,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Your services", 17 "defaultMessage": "!!!Your services",
18 "file": "src/components/settings/navigation/SettingsNavigation.js", 18 "file": "src/components/settings/navigation/SettingsNavigation.js",
19 "start": { 19 "start": {
20 "line": 19, 20 "line": 20,
21 "column": 16 21 "column": 16
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 22, 24 "line": 23,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Your workspaces", 30 "defaultMessage": "!!!Your workspaces",
31 "file": "src/components/settings/navigation/SettingsNavigation.js", 31 "file": "src/components/settings/navigation/SettingsNavigation.js",
32 "start": { 32 "start": {
33 "line": 23, 33 "line": 24,
34 "column": 18 34 "column": 18
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 26, 37 "line": 27,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Account", 43 "defaultMessage": "!!!Account",
44 "file": "src/components/settings/navigation/SettingsNavigation.js", 44 "file": "src/components/settings/navigation/SettingsNavigation.js",
45 "start": { 45 "start": {
46 "line": 27, 46 "line": 28,
47 "column": 11 47 "column": 11
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 30, 50 "line": 31,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,24 +56,11 @@
56 "defaultMessage": "!!!Manage Team", 56 "defaultMessage": "!!!Manage Team",
57 "file": "src/components/settings/navigation/SettingsNavigation.js", 57 "file": "src/components/settings/navigation/SettingsNavigation.js",
58 "start": { 58 "start": {
59 "line": 31, 59 "line": 32,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.navigation.settings",
69 "defaultMessage": "!!!Settings",
70 "file": "src/components/settings/navigation/SettingsNavigation.js",
71 "start": {
72 "line": 35, 63 "line": 35,
73 "column": 12
74 },
75 "end": {
76 "line": 38,
77 "column": 3 64 "column": 3
78 } 65 }
79 }, 66 },
@@ -82,11 +69,11 @@
82 "defaultMessage": "!!!About Ferdi", 69 "defaultMessage": "!!!About Ferdi",
83 "file": "src/components/settings/navigation/SettingsNavigation.js", 70 "file": "src/components/settings/navigation/SettingsNavigation.js",
84 "start": { 71 "start": {
85 "line": 39, 72 "line": 36,
86 "column": 16 73 "column": 16
87 }, 74 },
88 "end": { 75 "end": {
89 "line": 42, 76 "line": 39,
90 "column": 3 77 "column": 3
91 } 78 }
92 }, 79 },
@@ -95,11 +82,11 @@
95 "defaultMessage": "!!!Logout", 82 "defaultMessage": "!!!Logout",
96 "file": "src/components/settings/navigation/SettingsNavigation.js", 83 "file": "src/components/settings/navigation/SettingsNavigation.js",
97 "start": { 84 "start": {
98 "line": 43, 85 "line": 40,
99 "column": 10 86 "column": 10
100 }, 87 },
101 "end": { 88 "end": {
102 "line": 46, 89 "line": 43,
103 "column": 3 90 "column": 3
104 } 91 }
105 } 92 }
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
index da1581864..c281ebff3 100644
--- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
+++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
@@ -1,27 +1,14 @@
1[ 1[
2 { 2 {
3 "id": "settings.app.headline",
4 "defaultMessage": "!!!Settings",
5 "file": "src/components/settings/settings/EditSettingsForm.js",
6 "start": {
7 "line": 21,
8 "column": 12
9 },
10 "end": {
11 "line": 24,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.app.headlineGeneral", 3 "id": "settings.app.headlineGeneral",
17 "defaultMessage": "!!!General", 4 "defaultMessage": "!!!General",
18 "file": "src/components/settings/settings/EditSettingsForm.js", 5 "file": "src/components/settings/settings/EditSettingsForm.js",
19 "start": { 6 "start": {
20 "line": 25, 7 "line": 21,
21 "column": 19 8 "column": 19
22 }, 9 },
23 "end": { 10 "end": {
24 "line": 28, 11 "line": 24,
25 "column": 3 12 "column": 3
26 } 13 }
27 }, 14 },
@@ -30,11 +17,11 @@
30 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 17 "defaultMessage": "!!!Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
31 "file": "src/components/settings/settings/EditSettingsForm.js", 18 "file": "src/components/settings/settings/EditSettingsForm.js",
32 "start": { 19 "start": {
33 "line": 29, 20 "line": 25,
34 "column": 14 21 "column": 14
35 }, 22 },
36 "end": { 23 "end": {
37 "line": 32, 24 "line": 28,
38 "column": 3 25 "column": 3
39 } 26 }
40 }, 27 },
@@ -43,11 +30,11 @@
43 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 30 "defaultMessage": "!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
44 "file": "src/components/settings/settings/EditSettingsForm.js", 31 "file": "src/components/settings/settings/EditSettingsForm.js",
45 "start": { 32 "start": {
46 "line": 33, 33 "line": 29,
47 "column": 17 34 "column": 17
48 }, 35 },
49 "end": { 36 "end": {
50 "line": 36, 37 "line": 32,
51 "column": 3 38 "column": 3
52 } 39 }
53 }, 40 },
@@ -56,11 +43,11 @@
56 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 43 "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
57 "file": "src/components/settings/settings/EditSettingsForm.js", 44 "file": "src/components/settings/settings/EditSettingsForm.js",
58 "start": { 45 "start": {
59 "line": 37, 46 "line": 33,
60 "column": 22 47 "column": 22
61 }, 48 },
62 "end": { 49 "end": {
63 "line": 40, 50 "line": 36,
64 "column": 3 51 "column": 3
65 } 52 }
66 }, 53 },
@@ -69,11 +56,11 @@
69 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", 56 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)",
70 "file": "src/components/settings/settings/EditSettingsForm.js", 57 "file": "src/components/settings/settings/EditSettingsForm.js",
71 "start": { 58 "start": {
72 "line": 41, 59 "line": 37,
73 "column": 18 60 "column": 18
74 }, 61 },
75 "end": { 62 "end": {
76 "line": 44, 63 "line": 40,
77 "column": 3 64 "column": 3
78 } 65 }
79 }, 66 },
@@ -82,11 +69,11 @@
82 "defaultMessage": "!!!Password", 69 "defaultMessage": "!!!Password",
83 "file": "src/components/settings/settings/EditSettingsForm.js", 70 "file": "src/components/settings/settings/EditSettingsForm.js",
84 "start": { 71 "start": {
85 "line": 45, 72 "line": 41,
86 "column": 18 73 "column": 18
87 }, 74 },
88 "end": { 75 "end": {
89 "line": 48, 76 "line": 44,
90 "column": 3 77 "column": 3
91 } 78 }
92 }, 79 },
@@ -95,11 +82,11 @@
95 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 82 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
96 "file": "src/components/settings/settings/EditSettingsForm.js", 83 "file": "src/components/settings/settings/EditSettingsForm.js",
97 "start": { 84 "start": {
98 "line": 49, 85 "line": 45,
99 "column": 22 86 "column": 22
100 }, 87 },
101 "end": { 88 "end": {
102 "line": 52, 89 "line": 48,
103 "column": 3 90 "column": 3
104 } 91 }
105 }, 92 },
@@ -108,11 +95,11 @@
108 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 95 "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
109 "file": "src/components/settings/settings/EditSettingsForm.js", 96 "file": "src/components/settings/settings/EditSettingsForm.js",
110 "start": { 97 "start": {
111 "line": 53, 98 "line": 49,
112 "column": 12 99 "column": 12
113 }, 100 },
114 "end": { 101 "end": {
115 "line": 56, 102 "line": 52,
116 "column": 3 103 "column": 3
117 } 104 }
118 }, 105 },
@@ -121,11 +108,11 @@
121 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 108 "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
122 "file": "src/components/settings/settings/EditSettingsForm.js", 109 "file": "src/components/settings/settings/EditSettingsForm.js",
123 "start": { 110 "start": {
124 "line": 57, 111 "line": 53,
125 "column": 24 112 "column": 24
126 }, 113 },
127 "end": { 114 "end": {
128 "line": 60, 115 "line": 56,
129 "column": 3 116 "column": 3
130 } 117 }
131 }, 118 },
@@ -134,11 +121,11 @@
134 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 121 "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
135 "file": "src/components/settings/settings/EditSettingsForm.js", 122 "file": "src/components/settings/settings/EditSettingsForm.js",
136 "start": { 123 "start": {
137 "line": 61, 124 "line": 57,
138 "column": 20 125 "column": 20
139 }, 126 },
140 "end": { 127 "end": {
141 "line": 64, 128 "line": 60,
142 "column": 3 129 "column": 3
143 } 130 }
144 }, 131 },
@@ -147,11 +134,11 @@
147 "defaultMessage": "!!!Language", 134 "defaultMessage": "!!!Language",
148 "file": "src/components/settings/settings/EditSettingsForm.js", 135 "file": "src/components/settings/settings/EditSettingsForm.js",
149 "start": { 136 "start": {
150 "line": 65, 137 "line": 61,
151 "column": 20 138 "column": 20
152 }, 139 },
153 "end": { 140 "end": {
154 "line": 68, 141 "line": 64,
155 "column": 3 142 "column": 3
156 } 143 }
157 }, 144 },
@@ -160,11 +147,11 @@
160 "defaultMessage": "!!!Updates", 147 "defaultMessage": "!!!Updates",
161 "file": "src/components/settings/settings/EditSettingsForm.js", 148 "file": "src/components/settings/settings/EditSettingsForm.js",
162 "start": { 149 "start": {
163 "line": 69, 150 "line": 65,
164 "column": 19 151 "column": 19
165 }, 152 },
166 "end": { 153 "end": {
167 "line": 72, 154 "line": 68,
168 "column": 3 155 "column": 3
169 } 156 }
170 }, 157 },
@@ -173,11 +160,11 @@
173 "defaultMessage": "!!!Appearance", 160 "defaultMessage": "!!!Appearance",
174 "file": "src/components/settings/settings/EditSettingsForm.js", 161 "file": "src/components/settings/settings/EditSettingsForm.js",
175 "start": { 162 "start": {
176 "line": 73, 163 "line": 69,
177 "column": 22 164 "column": 22
178 }, 165 },
179 "end": { 166 "end": {
180 "line": 76, 167 "line": 72,
181 "column": 3 168 "column": 3
182 } 169 }
183 }, 170 },
@@ -186,11 +173,11 @@
186 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 173 "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
187 "file": "src/components/settings/settings/EditSettingsForm.js", 174 "file": "src/components/settings/settings/EditSettingsForm.js",
188 "start": { 175 "start": {
189 "line": 77, 176 "line": 73,
190 "column": 25 177 "column": 25
191 }, 178 },
192 "end": { 179 "end": {
193 "line": 80, 180 "line": 76,
194 "column": 3 181 "column": 3
195 } 182 }
196 }, 183 },
@@ -199,11 +186,11 @@
199 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 186 "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
200 "file": "src/components/settings/settings/EditSettingsForm.js", 187 "file": "src/components/settings/settings/EditSettingsForm.js",
201 "start": { 188 "start": {
202 "line": 81, 189 "line": 77,
203 "column": 19 190 "column": 19
204 }, 191 },
205 "end": { 192 "end": {
206 "line": 84, 193 "line": 80,
207 "column": 3 194 "column": 3
208 } 195 }
209 }, 196 },
@@ -212,11 +199,11 @@
212 "defaultMessage": "!!!Privacy", 199 "defaultMessage": "!!!Privacy",
213 "file": "src/components/settings/settings/EditSettingsForm.js", 200 "file": "src/components/settings/settings/EditSettingsForm.js",
214 "start": { 201 "start": {
215 "line": 85, 202 "line": 81,
216 "column": 19 203 "column": 19
217 }, 204 },
218 "end": { 205 "end": {
219 "line": 88, 206 "line": 84,
220 "column": 3 207 "column": 3
221 } 208 }
222 }, 209 },
@@ -225,11 +212,11 @@
225 "defaultMessage": "!!!Advanced", 212 "defaultMessage": "!!!Advanced",
226 "file": "src/components/settings/settings/EditSettingsForm.js", 213 "file": "src/components/settings/settings/EditSettingsForm.js",
227 "start": { 214 "start": {
228 "line": 89, 215 "line": 85,
229 "column": 20 216 "column": 20
230 }, 217 },
231 "end": { 218 "end": {
232 "line": 92, 219 "line": 88,
233 "column": 3 220 "column": 3
234 } 221 }
235 }, 222 },
@@ -238,11 +225,11 @@
238 "defaultMessage": "!!!Help us to translate Ferdi into your language.", 225 "defaultMessage": "!!!Help us to translate Ferdi into your language.",
239 "file": "src/components/settings/settings/EditSettingsForm.js", 226 "file": "src/components/settings/settings/EditSettingsForm.js",
240 "start": { 227 "start": {
241 "line": 93, 228 "line": 89,
242 "column": 19 229 "column": 19
243 }, 230 },
244 "end": { 231 "end": {
245 "line": 96, 232 "line": 92,
246 "column": 3 233 "column": 3
247 } 234 }
248 }, 235 },
@@ -251,11 +238,11 @@
251 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 238 "defaultMessage": "!!!Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
252 "file": "src/components/settings/settings/EditSettingsForm.js", 239 "file": "src/components/settings/settings/EditSettingsForm.js",
253 "start": { 240 "start": {
254 "line": 97, 241 "line": 93,
255 "column": 28 242 "column": 28
256 }, 243 },
257 "end": { 244 "end": {
258 "line": 100, 245 "line": 96,
259 "column": 3 246 "column": 3
260 } 247 }
261 }, 248 },
@@ -264,11 +251,11 @@
264 "defaultMessage": "!!!Cache", 251 "defaultMessage": "!!!Cache",
265 "file": "src/components/settings/settings/EditSettingsForm.js", 252 "file": "src/components/settings/settings/EditSettingsForm.js",
266 "start": { 253 "start": {
267 "line": 101, 254 "line": 97,
268 "column": 20 255 "column": 20
269 }, 256 },
270 "end": { 257 "end": {
271 "line": 104, 258 "line": 100,
272 "column": 3 259 "column": 3
273 } 260 }
274 }, 261 },
@@ -277,11 +264,11 @@
277 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", 264 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.",
278 "file": "src/components/settings/settings/EditSettingsForm.js", 265 "file": "src/components/settings/settings/EditSettingsForm.js",
279 "start": { 266 "start": {
280 "line": 105, 267 "line": 101,
281 "column": 13 268 "column": 13
282 }, 269 },
283 "end": { 270 "end": {
284 "line": 108, 271 "line": 104,
285 "column": 3 272 "column": 3
286 } 273 }
287 }, 274 },
@@ -290,11 +277,11 @@
290 "defaultMessage": "!!!Couldn't clear all cache", 277 "defaultMessage": "!!!Couldn't clear all cache",
291 "file": "src/components/settings/settings/EditSettingsForm.js", 278 "file": "src/components/settings/settings/EditSettingsForm.js",
292 "start": { 279 "start": {
293 "line": 109, 280 "line": 105,
294 "column": 19 281 "column": 19
295 }, 282 },
296 "end": { 283 "end": {
297 "line": 112, 284 "line": 108,
298 "column": 3 285 "column": 3
299 } 286 }
300 }, 287 },
@@ -303,11 +290,11 @@
303 "defaultMessage": "!!!Clear cache", 290 "defaultMessage": "!!!Clear cache",
304 "file": "src/components/settings/settings/EditSettingsForm.js", 291 "file": "src/components/settings/settings/EditSettingsForm.js",
305 "start": { 292 "start": {
306 "line": 113, 293 "line": 109,
307 "column": 23 294 "column": 23
308 }, 295 },
309 "end": { 296 "end": {
310 "line": 116, 297 "line": 112,
311 "column": 3 298 "column": 3
312 } 299 }
313 }, 300 },
@@ -316,11 +303,11 @@
316 "defaultMessage": "!!!Ferdi Profile", 303 "defaultMessage": "!!!Ferdi Profile",
317 "file": "src/components/settings/settings/EditSettingsForm.js", 304 "file": "src/components/settings/settings/EditSettingsForm.js",
318 "start": { 305 "start": {
319 "line": 117, 306 "line": 113,
320 "column": 27 307 "column": 27
321 }, 308 },
322 "end": { 309 "end": {
323 "line": 120, 310 "line": 116,
324 "column": 3 311 "column": 3
325 } 312 }
326 }, 313 },
@@ -329,11 +316,11 @@
329 "defaultMessage": "!!!Open Profile folder", 316 "defaultMessage": "!!!Open Profile folder",
330 "file": "src/components/settings/settings/EditSettingsForm.js", 317 "file": "src/components/settings/settings/EditSettingsForm.js",
331 "start": { 318 "start": {
332 "line": 121, 319 "line": 117,
333 "column": 32 320 "column": 32
334 }, 321 },
335 "end": { 322 "end": {
336 "line": 124, 323 "line": 120,
337 "column": 3 324 "column": 3
338 } 325 }
339 }, 326 },
@@ -342,11 +329,11 @@
342 "defaultMessage": "!!!Open Service Recipes folder", 329 "defaultMessage": "!!!Open Service Recipes folder",
343 "file": "src/components/settings/settings/EditSettingsForm.js", 330 "file": "src/components/settings/settings/EditSettingsForm.js",
344 "start": { 331 "start": {
345 "line": 125, 332 "line": 121,
346 "column": 39 333 "column": 39
347 }, 334 },
348 "end": { 335 "end": {
349 "line": 128, 336 "line": 124,
350 "column": 3 337 "column": 3
351 } 338 }
352 }, 339 },
@@ -355,11 +342,11 @@
355 "defaultMessage": "!!!Check for updates", 342 "defaultMessage": "!!!Check for updates",
356 "file": "src/components/settings/settings/EditSettingsForm.js", 343 "file": "src/components/settings/settings/EditSettingsForm.js",
357 "start": { 344 "start": {
358 "line": 129, 345 "line": 125,
359 "column": 25 346 "column": 25
360 }, 347 },
361 "end": { 348 "end": {
362 "line": 132, 349 "line": 128,
363 "column": 3 350 "column": 3
364 } 351 }
365 }, 352 },
@@ -368,11 +355,11 @@
368 "defaultMessage": "!!!Restart & install update", 355 "defaultMessage": "!!!Restart & install update",
369 "file": "src/components/settings/settings/EditSettingsForm.js", 356 "file": "src/components/settings/settings/EditSettingsForm.js",
370 "start": { 357 "start": {
371 "line": 133, 358 "line": 129,
372 "column": 23 359 "column": 23
373 }, 360 },
374 "end": { 361 "end": {
375 "line": 136, 362 "line": 132,
376 "column": 3 363 "column": 3
377 } 364 }
378 }, 365 },
@@ -381,11 +368,11 @@
381 "defaultMessage": "!!!Is searching for update", 368 "defaultMessage": "!!!Is searching for update",
382 "file": "src/components/settings/settings/EditSettingsForm.js", 369 "file": "src/components/settings/settings/EditSettingsForm.js",
383 "start": { 370 "start": {
384 "line": 137, 371 "line": 133,
385 "column": 25 372 "column": 25
386 }, 373 },
387 "end": { 374 "end": {
388 "line": 140, 375 "line": 136,
389 "column": 3 376 "column": 3
390 } 377 }
391 }, 378 },
@@ -394,11 +381,11 @@
394 "defaultMessage": "!!!Update available, downloading...", 381 "defaultMessage": "!!!Update available, downloading...",
395 "file": "src/components/settings/settings/EditSettingsForm.js", 382 "file": "src/components/settings/settings/EditSettingsForm.js",
396 "start": { 383 "start": {
397 "line": 141, 384 "line": 137,
398 "column": 25 385 "column": 25
399 }, 386 },
400 "end": { 387 "end": {
401 "line": 144, 388 "line": 140,
402 "column": 3 389 "column": 3
403 } 390 }
404 }, 391 },
@@ -407,11 +394,11 @@
407 "defaultMessage": "!!!You are using the latest version of Ferdi", 394 "defaultMessage": "!!!You are using the latest version of Ferdi",
408 "file": "src/components/settings/settings/EditSettingsForm.js", 395 "file": "src/components/settings/settings/EditSettingsForm.js",
409 "start": { 396 "start": {
410 "line": 145, 397 "line": 141,
411 "column": 24 398 "column": 24
412 }, 399 },
413 "end": { 400 "end": {
414 "line": 148, 401 "line": 144,
415 "column": 3 402 "column": 3
416 } 403 }
417 }, 404 },
@@ -420,11 +407,11 @@
420 "defaultMessage": "!!!Current version:", 407 "defaultMessage": "!!!Current version:",
421 "file": "src/components/settings/settings/EditSettingsForm.js", 408 "file": "src/components/settings/settings/EditSettingsForm.js",
422 "start": { 409 "start": {
423 "line": 149, 410 "line": 145,
424 "column": 18 411 "column": 18
425 }, 412 },
426 "end": { 413 "end": {
427 "line": 152, 414 "line": 148,
428 "column": 3 415 "column": 3
429 } 416 }
430 }, 417 },
@@ -433,11 +420,11 @@
433 "defaultMessage": "!!!Changes require restart", 420 "defaultMessage": "!!!Changes require restart",
434 "file": "src/components/settings/settings/EditSettingsForm.js", 421 "file": "src/components/settings/settings/EditSettingsForm.js",
435 "start": { 422 "start": {
436 "line": 153, 423 "line": 149,
437 "column": 22 424 "column": 22
438 }, 425 },
439 "end": { 426 "end": {
440 "line": 156, 427 "line": 152,
441 "column": 3 428 "column": 3
442 } 429 }
443 }, 430 },
@@ -446,11 +433,11 @@
446 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", 433 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
447 "file": "src/components/settings/settings/EditSettingsForm.js", 434 "file": "src/components/settings/settings/EditSettingsForm.js",
448 "start": { 435 "start": {
449 "line": 157, 436 "line": 153,
450 "column": 22 437 "column": 22
451 }, 438 },
452 "end": { 439 "end": {
453 "line": 160, 440 "line": 156,
454 "column": 3 441 "column": 3
455 } 442 }
456 } 443 }
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
index 9a4a8de64..b0087e5dd 100644
--- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
+++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
@@ -52,15 +52,28 @@
52 } 52 }
53 }, 53 },
54 { 54 {
55 "id": "settings.app.form.confirmOnQuit",
56 "defaultMessage": "!!!Confirm when quitting Ferdi",
57 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": {
59 "line": 48,
60 "column": 17
61 },
62 "end": {
63 "line": 51,
64 "column": 3
65 }
66 },
67 {
55 "id": "settings.app.form.enableSystemTray", 68 "id": "settings.app.form.enableSystemTray",
56 "defaultMessage": "!!!Always show Ferdi in System Tray", 69 "defaultMessage": "!!!Always show Ferdi in System Tray",
57 "file": "src/containers/settings/EditSettingsScreen.js", 70 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": { 71 "start": {
59 "line": 48, 72 "line": 52,
60 "column": 20 73 "column": 20
61 }, 74 },
62 "end": { 75 "end": {
63 "line": 51, 76 "line": 55,
64 "column": 3 77 "column": 3
65 } 78 }
66 }, 79 },
@@ -69,11 +82,11 @@
69 "defaultMessage": "!!!Always show Ferdi in Menu Bar", 82 "defaultMessage": "!!!Always show Ferdi in Menu Bar",
70 "file": "src/containers/settings/EditSettingsScreen.js", 83 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": { 84 "start": {
72 "line": 52, 85 "line": 56,
73 "column": 17 86 "column": 17
74 }, 87 },
75 "end": { 88 "end": {
76 "line": 55, 89 "line": 59,
77 "column": 3 90 "column": 3
78 } 91 }
79 }, 92 },
@@ -82,11 +95,11 @@
82 "defaultMessage": "!!!Reload Ferdi after system resume", 95 "defaultMessage": "!!!Reload Ferdi after system resume",
83 "file": "src/containers/settings/EditSettingsScreen.js", 96 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": { 97 "start": {
85 "line": 56, 98 "line": 60,
86 "column": 21 99 "column": 21
87 }, 100 },
88 "end": { 101 "end": {
89 "line": 59, 102 "line": 63,
90 "column": 3 103 "column": 3
91 } 104 }
92 }, 105 },
@@ -95,11 +108,11 @@
95 "defaultMessage": "!!!Minimize Ferdi to system tray", 108 "defaultMessage": "!!!Minimize Ferdi to system tray",
96 "file": "src/containers/settings/EditSettingsScreen.js", 109 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": { 110 "start": {
98 "line": 60, 111 "line": 64,
99 "column": 24 112 "column": 24
100 }, 113 },
101 "end": { 114 "end": {
102 "line": 63, 115 "line": 67,
103 "column": 3 116 "column": 3
104 } 117 }
105 }, 118 },
@@ -108,11 +121,11 @@
108 "defaultMessage": "!!!Close Ferdi to system tray", 121 "defaultMessage": "!!!Close Ferdi to system tray",
109 "file": "src/containers/settings/EditSettingsScreen.js", 122 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": { 123 "start": {
111 "line": 64, 124 "line": 68,
112 "column": 21 125 "column": 21
113 }, 126 },
114 "end": { 127 "end": {
115 "line": 67, 128 "line": 71,
116 "column": 3 129 "column": 3
117 } 130 }
118 }, 131 },
@@ -121,11 +134,11 @@
121 "defaultMessage": "!!!Don't show message content in notifications", 134 "defaultMessage": "!!!Don't show message content in notifications",
122 "file": "src/containers/settings/EditSettingsScreen.js", 135 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": { 136 "start": {
124 "line": 68, 137 "line": 72,
125 "column": 24 138 "column": 24
126 }, 139 },
127 "end": { 140 "end": {
128 "line": 71, 141 "line": 75,
129 "column": 3 142 "column": 3
130 } 143 }
131 }, 144 },
@@ -134,11 +147,11 @@
134 "defaultMessage": "!!!Don't show notifications for clipboard events", 147 "defaultMessage": "!!!Don't show notifications for clipboard events",
135 "file": "src/containers/settings/EditSettingsScreen.js", 148 "file": "src/containers/settings/EditSettingsScreen.js",
136 "start": { 149 "start": {
137 "line": 72, 150 "line": 76,
138 "column": 26 151 "column": 26
139 }, 152 },
140 "end": { 153 "end": {
141 "line": 75, 154 "line": 79,
142 "column": 3 155 "column": 3
143 } 156 }
144 }, 157 },
@@ -147,11 +160,11 @@
147 "defaultMessage": "!!!Notify TaskBar/Dock on new message", 160 "defaultMessage": "!!!Notify TaskBar/Dock on new message",
148 "file": "src/containers/settings/EditSettingsScreen.js", 161 "file": "src/containers/settings/EditSettingsScreen.js",
149 "start": { 162 "start": {
150 "line": 76, 163 "line": 80,
151 "column": 26 164 "column": 26
152 }, 165 },
153 "end": { 166 "end": {
154 "line": 79, 167 "line": 83,
155 "column": 3 168 "column": 3
156 } 169 }
157 }, 170 },
@@ -160,11 +173,11 @@
160 "defaultMessage": "!!!Navigation bar behaviour", 173 "defaultMessage": "!!!Navigation bar behaviour",
161 "file": "src/containers/settings/EditSettingsScreen.js", 174 "file": "src/containers/settings/EditSettingsScreen.js",
162 "start": { 175 "start": {
163 "line": 80, 176 "line": 84,
164 "column": 26 177 "column": 26
165 }, 178 },
166 "end": { 179 "end": {
167 "line": 83, 180 "line": 87,
168 "column": 3 181 "column": 3
169 } 182 }
170 }, 183 },
@@ -173,11 +186,11 @@
173 "defaultMessage": "!!!Search engine", 186 "defaultMessage": "!!!Search engine",
174 "file": "src/containers/settings/EditSettingsScreen.js", 187 "file": "src/containers/settings/EditSettingsScreen.js",
175 "start": { 188 "start": {
176 "line": 84, 189 "line": 88,
177 "column": 16 190 "column": 16
178 }, 191 },
179 "end": { 192 "end": {
180 "line": 87, 193 "line": 91,
181 "column": 3 194 "column": 3
182 } 195 }
183 }, 196 },
@@ -186,11 +199,11 @@
186 "defaultMessage": "!!!Send telemetry data", 199 "defaultMessage": "!!!Send telemetry data",
187 "file": "src/containers/settings/EditSettingsScreen.js", 200 "file": "src/containers/settings/EditSettingsScreen.js",
188 "start": { 201 "start": {
189 "line": 88, 202 "line": 92,
190 "column": 10 203 "column": 10
191 }, 204 },
192 "end": { 205 "end": {
193 "line": 91, 206 "line": 95,
194 "column": 3 207 "column": 3
195 } 208 }
196 }, 209 },
@@ -199,11 +212,11 @@
199 "defaultMessage": "!!!Keep services in hibernation on startup", 212 "defaultMessage": "!!!Keep services in hibernation on startup",
200 "file": "src/containers/settings/EditSettingsScreen.js", 213 "file": "src/containers/settings/EditSettingsScreen.js",
201 "start": { 214 "start": {
202 "line": 92, 215 "line": 96,
203 "column": 22 216 "column": 22
204 }, 217 },
205 "end": { 218 "end": {
206 "line": 95, 219 "line": 99,
207 "column": 3 220 "column": 3
208 } 221 }
209 }, 222 },
@@ -212,11 +225,11 @@
212 "defaultMessage": "!!!Hibernation strategy", 225 "defaultMessage": "!!!Hibernation strategy",
213 "file": "src/containers/settings/EditSettingsScreen.js", 226 "file": "src/containers/settings/EditSettingsScreen.js",
214 "start": { 227 "start": {
215 "line": 96, 228 "line": 100,
216 "column": 23 229 "column": 23
217 }, 230 },
218 "end": { 231 "end": {
219 "line": 99, 232 "line": 103,
220 "column": 3 233 "column": 3
221 } 234 }
222 }, 235 },
@@ -225,11 +238,11 @@
225 "defaultMessage": "!!!Wake up strategy", 238 "defaultMessage": "!!!Wake up strategy",
226 "file": "src/containers/settings/EditSettingsScreen.js", 239 "file": "src/containers/settings/EditSettingsScreen.js",
227 "start": { 240 "start": {
228 "line": 100, 241 "line": 104,
229 "column": 18 242 "column": 18
230 }, 243 },
231 "end": { 244 "end": {
232 "line": 103, 245 "line": 107,
233 "column": 3 246 "column": 3
234 } 247 }
235 }, 248 },
@@ -238,11 +251,11 @@
238 "defaultMessage": "!!!Todo Server", 251 "defaultMessage": "!!!Todo Server",
239 "file": "src/containers/settings/EditSettingsScreen.js", 252 "file": "src/containers/settings/EditSettingsScreen.js",
240 "start": { 253 "start": {
241 "line": 104, 254 "line": 108,
242 "column": 24 255 "column": 24
243 }, 256 },
244 "end": { 257 "end": {
245 "line": 107, 258 "line": 111,
246 "column": 3 259 "column": 3
247 } 260 }
248 }, 261 },
@@ -251,11 +264,11 @@
251 "defaultMessage": "!!!Custom TodoServer", 264 "defaultMessage": "!!!Custom TodoServer",
252 "file": "src/containers/settings/EditSettingsScreen.js", 265 "file": "src/containers/settings/EditSettingsScreen.js",
253 "start": { 266 "start": {
254 "line": 108, 267 "line": 112,
255 "column": 20 268 "column": 20
256 }, 269 },
257 "end": { 270 "end": {
258 "line": 111, 271 "line": 115,
259 "column": 3 272 "column": 3
260 } 273 }
261 }, 274 },
@@ -264,11 +277,11 @@
264 "defaultMessage": "!!!Enable Password Lock", 277 "defaultMessage": "!!!Enable Password Lock",
265 "file": "src/containers/settings/EditSettingsScreen.js", 278 "file": "src/containers/settings/EditSettingsScreen.js",
266 "start": { 279 "start": {
267 "line": 112, 280 "line": 116,
268 "column": 14 281 "column": 14
269 }, 282 },
270 "end": { 283 "end": {
271 "line": 115, 284 "line": 119,
272 "column": 3 285 "column": 3
273 } 286 }
274 }, 287 },
@@ -277,11 +290,11 @@
277 "defaultMessage": "!!!Password", 290 "defaultMessage": "!!!Password",
278 "file": "src/containers/settings/EditSettingsScreen.js", 291 "file": "src/containers/settings/EditSettingsScreen.js",
279 "start": { 292 "start": {
280 "line": 116, 293 "line": 120,
281 "column": 16 294 "column": 16
282 }, 295 },
283 "end": { 296 "end": {
284 "line": 119, 297 "line": 123,
285 "column": 3 298 "column": 3
286 } 299 }
287 }, 300 },
@@ -290,11 +303,11 @@
290 "defaultMessage": "!!!Allow using Touch ID to unlock", 303 "defaultMessage": "!!!Allow using Touch ID to unlock",
291 "file": "src/containers/settings/EditSettingsScreen.js", 304 "file": "src/containers/settings/EditSettingsScreen.js",
292 "start": { 305 "start": {
293 "line": 120, 306 "line": 124,
294 "column": 22 307 "column": 22
295 }, 308 },
296 "end": { 309 "end": {
297 "line": 123, 310 "line": 127,
298 "column": 3 311 "column": 3
299 } 312 }
300 }, 313 },
@@ -303,11 +316,11 @@
303 "defaultMessage": "!!!Lock after inactivity", 316 "defaultMessage": "!!!Lock after inactivity",
304 "file": "src/containers/settings/EditSettingsScreen.js", 317 "file": "src/containers/settings/EditSettingsScreen.js",
305 "start": { 318 "start": {
306 "line": 124, 319 "line": 128,
307 "column": 18 320 "column": 18
308 }, 321 },
309 "end": { 322 "end": {
310 "line": 127, 323 "line": 131,
311 "column": 3 324 "column": 3
312 } 325 }
313 }, 326 },
@@ -316,11 +329,11 @@
316 "defaultMessage": "!!!Enable scheduled Do-not-Disturb", 329 "defaultMessage": "!!!Enable scheduled Do-not-Disturb",
317 "file": "src/containers/settings/EditSettingsScreen.js", 330 "file": "src/containers/settings/EditSettingsScreen.js",
318 "start": { 331 "start": {
319 "line": 128, 332 "line": 132,
320 "column": 23 333 "column": 23
321 }, 334 },
322 "end": { 335 "end": {
323 "line": 131, 336 "line": 135,
324 "column": 3 337 "column": 3
325 } 338 }
326 }, 339 },
@@ -329,11 +342,11 @@
329 "defaultMessage": "!!!From", 342 "defaultMessage": "!!!From",
330 "file": "src/containers/settings/EditSettingsScreen.js", 343 "file": "src/containers/settings/EditSettingsScreen.js",
331 "start": { 344 "start": {
332 "line": 132, 345 "line": 136,
333 "column": 21 346 "column": 21
334 }, 347 },
335 "end": { 348 "end": {
336 "line": 135, 349 "line": 139,
337 "column": 3 350 "column": 3
338 } 351 }
339 }, 352 },
@@ -342,11 +355,11 @@
342 "defaultMessage": "!!!To", 355 "defaultMessage": "!!!To",
343 "file": "src/containers/settings/EditSettingsScreen.js", 356 "file": "src/containers/settings/EditSettingsScreen.js",
344 "start": { 357 "start": {
345 "line": 136, 358 "line": 140,
346 "column": 19 359 "column": 19
347 }, 360 },
348 "end": { 361 "end": {
349 "line": 139, 362 "line": 143,
350 "column": 3 363 "column": 3
351 } 364 }
352 }, 365 },
@@ -355,11 +368,11 @@
355 "defaultMessage": "!!!Language", 368 "defaultMessage": "!!!Language",
356 "file": "src/containers/settings/EditSettingsScreen.js", 369 "file": "src/containers/settings/EditSettingsScreen.js",
357 "start": { 370 "start": {
358 "line": 140, 371 "line": 144,
359 "column": 12 372 "column": 12
360 }, 373 },
361 "end": { 374 "end": {
362 "line": 143, 375 "line": 147,
363 "column": 3 376 "column": 3
364 } 377 }
365 }, 378 },
@@ -368,11 +381,11 @@
368 "defaultMessage": "!!!Dark Mode", 381 "defaultMessage": "!!!Dark Mode",
369 "file": "src/containers/settings/EditSettingsScreen.js", 382 "file": "src/containers/settings/EditSettingsScreen.js",
370 "start": { 383 "start": {
371 "line": 144, 384 "line": 148,
372 "column": 12 385 "column": 12
373 }, 386 },
374 "end": { 387 "end": {
375 "line": 147, 388 "line": 151,
376 "column": 3 389 "column": 3
377 } 390 }
378 }, 391 },
@@ -381,11 +394,11 @@
381 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", 394 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting",
382 "file": "src/containers/settings/EditSettingsScreen.js", 395 "file": "src/containers/settings/EditSettingsScreen.js",
383 "start": { 396 "start": {
384 "line": 148, 397 "line": 152,
385 "column": 21 398 "column": 21
386 }, 399 },
387 "end": { 400 "end": {
388 "line": 151, 401 "line": 155,
389 "column": 3 402 "column": 3
390 } 403 }
391 }, 404 },
@@ -394,11 +407,11 @@
394 "defaultMessage": "!!!Enable universal Dark Mode", 407 "defaultMessage": "!!!Enable universal Dark Mode",
395 "file": "src/containers/settings/EditSettingsScreen.js", 408 "file": "src/containers/settings/EditSettingsScreen.js",
396 "start": { 409 "start": {
397 "line": 152, 410 "line": 156,
398 "column": 21 411 "column": 21
399 }, 412 },
400 "end": { 413 "end": {
401 "line": 155, 414 "line": 159,
402 "column": 3 415 "column": 3
403 } 416 }
404 }, 417 },
@@ -407,11 +420,11 @@
407 "defaultMessage": "!!!Sidebar width", 420 "defaultMessage": "!!!Sidebar width",
408 "file": "src/containers/settings/EditSettingsScreen.js", 421 "file": "src/containers/settings/EditSettingsScreen.js",
409 "start": { 422 "start": {
410 "line": 156, 423 "line": 160,
411 "column": 22 424 "column": 22
412 }, 425 },
413 "end": { 426 "end": {
414 "line": 159, 427 "line": 163,
415 "column": 3 428 "column": 3
416 } 429 }
417 }, 430 },
@@ -420,11 +433,11 @@
420 "defaultMessage": "!!!Service icon size", 433 "defaultMessage": "!!!Service icon size",
421 "file": "src/containers/settings/EditSettingsScreen.js", 434 "file": "src/containers/settings/EditSettingsScreen.js",
422 "start": { 435 "start": {
423 "line": 160, 436 "line": 164,
424 "column": 12 437 "column": 12
425 }, 438 },
426 "end": { 439 "end": {
427 "line": 163, 440 "line": 167,
428 "column": 3 441 "column": 3
429 } 442 }
430 }, 443 },
@@ -433,11 +446,11 @@
433 "defaultMessage": "!!!Use horizontal style", 446 "defaultMessage": "!!!Use horizontal style",
434 "file": "src/containers/settings/EditSettingsScreen.js", 447 "file": "src/containers/settings/EditSettingsScreen.js",
435 "start": { 448 "start": {
436 "line": 164, 449 "line": 168,
437 "column": 20 450 "column": 20
438 }, 451 },
439 "end": { 452 "end": {
440 "line": 167, 453 "line": 171,
441 "column": 3 454 "column": 3
442 } 455 }
443 }, 456 },
@@ -446,11 +459,11 @@
446 "defaultMessage": "!!!Always show workspace drawer", 459 "defaultMessage": "!!!Always show workspace drawer",
447 "file": "src/containers/settings/EditSettingsScreen.js", 460 "file": "src/containers/settings/EditSettingsScreen.js",
448 "start": { 461 "start": {
449 "line": 168, 462 "line": 172,
450 "column": 24 463 "column": 24
451 }, 464 },
452 "end": { 465 "end": {
453 "line": 171, 466 "line": 175,
454 "column": 3 467 "column": 3
455 } 468 }
456 }, 469 },
@@ -459,11 +472,11 @@
459 "defaultMessage": "!!!Accent color", 472 "defaultMessage": "!!!Accent color",
460 "file": "src/containers/settings/EditSettingsScreen.js", 473 "file": "src/containers/settings/EditSettingsScreen.js",
461 "start": { 474 "start": {
462 "line": 172, 475 "line": 176,
463 "column": 15 476 "column": 15
464 }, 477 },
465 "end": { 478 "end": {
466 "line": 175, 479 "line": 179,
467 "column": 3 480 "column": 3
468 } 481 }
469 }, 482 },
@@ -472,11 +485,11 @@
472 "defaultMessage": "!!!Display disabled services tabs", 485 "defaultMessage": "!!!Display disabled services tabs",
473 "file": "src/containers/settings/EditSettingsScreen.js", 486 "file": "src/containers/settings/EditSettingsScreen.js",
474 "start": { 487 "start": {
475 "line": 176, 488 "line": 180,
476 "column": 24 489 "column": 24
477 }, 490 },
478 "end": { 491 "end": {
479 "line": 179, 492 "line": 183,
480 "column": 3 493 "column": 3
481 } 494 }
482 }, 495 },
@@ -485,11 +498,11 @@
485 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 498 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
486 "file": "src/containers/settings/EditSettingsScreen.js", 499 "file": "src/containers/settings/EditSettingsScreen.js",
487 "start": { 500 "start": {
488 "line": 180, 501 "line": 184,
489 "column": 29 502 "column": 29
490 }, 503 },
491 "end": { 504 "end": {
492 "line": 183, 505 "line": 187,
493 "column": 3 506 "column": 3
494 } 507 }
495 }, 508 },
@@ -498,11 +511,11 @@
498 "defaultMessage": "!!!Show draggable area on window", 511 "defaultMessage": "!!!Show draggable area on window",
499 "file": "src/containers/settings/EditSettingsScreen.js", 512 "file": "src/containers/settings/EditSettingsScreen.js",
500 "start": { 513 "start": {
501 "line": 184, 514 "line": 188,
502 "column": 16 515 "column": 16
503 }, 516 },
504 "end": { 517 "end": {
505 "line": 187, 518 "line": 191,
506 "column": 3 519 "column": 3
507 } 520 }
508 }, 521 },
@@ -511,11 +524,11 @@
511 "defaultMessage": "!!!Enable spell checking", 524 "defaultMessage": "!!!Enable spell checking",
512 "file": "src/containers/settings/EditSettingsScreen.js", 525 "file": "src/containers/settings/EditSettingsScreen.js",
513 "start": { 526 "start": {
514 "line": 188, 527 "line": 192,
515 "column": 23 528 "column": 23
516 }, 529 },
517 "end": { 530 "end": {
518 "line": 191, 531 "line": 195,
519 "column": 3 532 "column": 3
520 } 533 }
521 }, 534 },
@@ -524,11 +537,11 @@
524 "defaultMessage": "!!!Enable GPU Acceleration", 537 "defaultMessage": "!!!Enable GPU Acceleration",
525 "file": "src/containers/settings/EditSettingsScreen.js", 538 "file": "src/containers/settings/EditSettingsScreen.js",
526 "start": { 539 "start": {
527 "line": 192, 540 "line": 196,
528 "column": 25 541 "column": 25
529 }, 542 },
530 "end": { 543 "end": {
531 "line": 195, 544 "line": 199,
532 "column": 3 545 "column": 3
533 } 546 }
534 }, 547 },
@@ -537,11 +550,11 @@
537 "defaultMessage": "!!!Include beta versions", 550 "defaultMessage": "!!!Include beta versions",
538 "file": "src/containers/settings/EditSettingsScreen.js", 551 "file": "src/containers/settings/EditSettingsScreen.js",
539 "start": { 552 "start": {
540 "line": 196, 553 "line": 200,
541 "column": 8 554 "column": 8
542 }, 555 },
543 "end": { 556 "end": {
544 "line": 199, 557 "line": 203,
545 "column": 3 558 "column": 3
546 } 559 }
547 }, 560 },
@@ -550,11 +563,11 @@
550 "defaultMessage": "!!!Enable updates", 563 "defaultMessage": "!!!Enable updates",
551 "file": "src/containers/settings/EditSettingsScreen.js", 564 "file": "src/containers/settings/EditSettingsScreen.js",
552 "start": { 565 "start": {
553 "line": 200, 566 "line": 204,
554 "column": 20 567 "column": 20
555 }, 568 },
556 "end": { 569 "end": {
557 "line": 203, 570 "line": 207,
558 "column": 3 571 "column": 3
559 } 572 }
560 }, 573 },
@@ -563,11 +576,11 @@
563 "defaultMessage": "!!!Enable Franz Todos", 576 "defaultMessage": "!!!Enable Franz Todos",
564 "file": "src/containers/settings/EditSettingsScreen.js", 577 "file": "src/containers/settings/EditSettingsScreen.js",
565 "start": { 578 "start": {
566 "line": 204, 579 "line": 208,
567 "column": 15 580 "column": 15
568 }, 581 },
569 "end": { 582 "end": {
570 "line": 207, 583 "line": 211,
571 "column": 3 584 "column": 3
572 } 585 }
573 }, 586 },
@@ -576,11 +589,11 @@
576 "defaultMessage": "!!!Keep all workspaces loaded", 589 "defaultMessage": "!!!Keep all workspaces loaded",
577 "file": "src/containers/settings/EditSettingsScreen.js", 590 "file": "src/containers/settings/EditSettingsScreen.js",
578 "start": { 591 "start": {
579 "line": 208, 592 "line": 212,
580 "column": 27 593 "column": 27
581 }, 594 },
582 "end": { 595 "end": {
583 "line": 211, 596 "line": 215,
584 "column": 3 597 "column": 3
585 } 598 }
586 } 599 }
diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
deleted file mode 100644
index 6b94ff792..000000000
--- a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
+++ /dev/null
@@ -1,15 +0,0 @@
1[
2 {
3 "id": "feature.announcements.changelog.headline",
4 "defaultMessage": "!!!Changes in Ferdi {version}",
5 "file": "src/features/announcements/components/AnnouncementScreen.js",
6 "start": {
7 "line": 20,
8 "column": 12
9 },
10 "end": {
11 "line": 23,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/basicAuth/Component.json b/src/i18n/messages/src/features/basicAuth/Component.json
new file mode 100644
index 000000000..fea1b0838
--- /dev/null
+++ b/src/i18n/messages/src/features/basicAuth/Component.json
@@ -0,0 +1,15 @@
1[
2 {
3 "id": "feature.basicAuth.signIn",
4 "defaultMessage": "!!!Sign In",
5 "file": "src/features/basicAuth/Component.js",
6 "start": {
7 "line": 24,
8 "column": 10
9 },
10 "end": {
11 "line": 27,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/nightlyBuilds/Component.json b/src/i18n/messages/src/features/nightlyBuilds/Component.json
index 084079635..0b2eab354 100644
--- a/src/i18n/messages/src/features/nightlyBuilds/Component.json
+++ b/src/i18n/messages/src/features/nightlyBuilds/Component.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Nightly Builds", 4 "defaultMessage": "!!!Nightly Builds",
5 "file": "src/features/nightlyBuilds/Component.js", 5 "file": "src/features/nightlyBuilds/Component.js",
6 "start": { 6 "start": {
7 "line": 16, 7 "line": 17,
8 "column": 9 8 "column": 9
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 19, 11 "line": 20,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 17 "defaultMessage": "!!!Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
18 "file": "src/features/nightlyBuilds/Component.js", 18 "file": "src/features/nightlyBuilds/Component.js",
19 "start": { 19 "start": {
20 "line": 20, 20 "line": 21,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 23, 24 "line": 24,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,24 +30,11 @@
30 "defaultMessage": "!!!Activate", 30 "defaultMessage": "!!!Activate",
31 "file": "src/features/nightlyBuilds/Component.js", 31 "file": "src/features/nightlyBuilds/Component.js",
32 "start": { 32 "start": {
33 "line": 24, 33 "line": 25,
34 "column": 12 34 "column": 12
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "feature.nightlyBuilds.cancel",
43 "defaultMessage": "!!!Cancel",
44 "file": "src/features/nightlyBuilds/Component.js",
45 "start": {
46 "line": 28, 37 "line": 28,
47 "column": 10
48 },
49 "end": {
50 "line": 31,
51 "column": 3 38 "column": 3
52 } 39 }
53 } 40 }
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json
index ed2bfa092..bc1ec7397 100644
--- a/src/i18n/messages/src/i18n/globalMessages.json
+++ b/src/i18n/messages/src/i18n/globalMessages.json
@@ -102,5 +102,135 @@
102 "line": 35, 102 "line": 35,
103 "column": 3 103 "column": 3
104 } 104 }
105 },
106 {
107 "id": "global.yes",
108 "defaultMessage": "!!!Yes",
109 "file": "src/i18n/globalMessages.js",
110 "start": {
111 "line": 36,
112 "column": 7
113 },
114 "end": {
115 "line": 39,
116 "column": 3
117 }
118 },
119 {
120 "id": "global.no",
121 "defaultMessage": "!!!No",
122 "file": "src/i18n/globalMessages.js",
123 "start": {
124 "line": 40,
125 "column": 6
126 },
127 "end": {
128 "line": 43,
129 "column": 3
130 }
131 },
132 {
133 "id": "global.ok",
134 "defaultMessage": "!!!Ok",
135 "file": "src/i18n/globalMessages.js",
136 "start": {
137 "line": 44,
138 "column": 6
139 },
140 "end": {
141 "line": 47,
142 "column": 3
143 }
144 },
145 {
146 "id": "global.cancel",
147 "defaultMessage": "!!!Cancel",
148 "file": "src/i18n/globalMessages.js",
149 "start": {
150 "line": 48,
151 "column": 10
152 },
153 "end": {
154 "line": 51,
155 "column": 3
156 }
157 },
158 {
159 "id": "global.save",
160 "defaultMessage": "!!!Save",
161 "file": "src/i18n/globalMessages.js",
162 "start": {
163 "line": 52,
164 "column": 8
165 },
166 "end": {
167 "line": 55,
168 "column": 3
169 }
170 },
171 {
172 "id": "global.submit",
173 "defaultMessage": "!!!Submit",
174 "file": "src/i18n/globalMessages.js",
175 "start": {
176 "line": 56,
177 "column": 10
178 },
179 "end": {
180 "line": 59,
181 "column": 3
182 }
183 },
184 {
185 "id": "global.quit",
186 "defaultMessage": "!!!Quit",
187 "file": "src/i18n/globalMessages.js",
188 "start": {
189 "line": 60,
190 "column": 8
191 },
192 "end": {
193 "line": 63,
194 "column": 3
195 }
196 },
197 {
198 "id": "global.quitConfirmation",
199 "defaultMessage": "!!!Do you really want to quit Ferdi?",
200 "file": "src/i18n/globalMessages.js",
201 "start": {
202 "line": 64,
203 "column": 20
204 },
205 "end": {
206 "line": 68,
207 "column": 3
208 }
209 },
210 {
211 "id": "global.settings",
212 "defaultMessage": "!!!Settings",
213 "file": "src/i18n/globalMessages.js",
214 "start": {
215 "line": 69,
216 "column": 12
217 },
218 "end": {
219 "line": 72,
220 "column": 3
221 }
222 },
223 {
224 "id": "global.edit",
225 "defaultMessage": "!!!Edit",
226 "file": "src/i18n/globalMessages.js",
227 "start": {
228 "line": 73,
229 "column": 8
230 },
231 "end": {
232 "line": 76,
233 "column": 3
234 }
105 } 235 }
106] \ No newline at end of file 236] \ No newline at end of file
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index 373c3a64b..947ce8b6a 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Edit", 4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js", 5 "file": "src/lib/Menu.js",
6 "start": { 6 "start": {
7 "line": 19, 7 "line": 33,
8 "column": 8 8 "column": 8
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 22, 11 "line": 36,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Undo", 17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js", 18 "file": "src/lib/Menu.js",
19 "start": { 19 "start": {
20 "line": 23, 20 "line": 37,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 26, 24 "line": 40,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Redo", 30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js", 31 "file": "src/lib/Menu.js",
32 "start": { 32 "start": {
33 "line": 27, 33 "line": 41,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 30, 37 "line": 44,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Cut", 43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js", 44 "file": "src/lib/Menu.js",
45 "start": { 45 "start": {
46 "line": 31, 46 "line": 45,
47 "column": 7 47 "column": 7
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 34, 50 "line": 48,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Copy", 56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js", 57 "file": "src/lib/Menu.js",
58 "start": { 58 "start": {
59 "line": 35, 59 "line": 49,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 38, 63 "line": 52,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Paste", 69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js", 70 "file": "src/lib/Menu.js",
71 "start": { 71 "start": {
72 "line": 39, 72 "line": 53,
73 "column": 9 73 "column": 9
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 42, 76 "line": 56,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Paste And Match Style", 82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js", 83 "file": "src/lib/Menu.js",
84 "start": { 84 "start": {
85 "line": 43, 85 "line": 57,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 46, 89 "line": 60,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Delete", 95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js", 96 "file": "src/lib/Menu.js",
97 "start": { 97 "start": {
98 "line": 47, 98 "line": 61,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 50, 102 "line": 64,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Select All", 108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js", 109 "file": "src/lib/Menu.js",
110 "start": { 110 "start": {
111 "line": 51, 111 "line": 65,
112 "column": 13 112 "column": 13
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 54, 115 "line": 68,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Find in Page", 121 "defaultMessage": "!!!Find in Page",
122 "file": "src/lib/Menu.js", 122 "file": "src/lib/Menu.js",
123 "start": { 123 "start": {
124 "line": 55, 124 "line": 69,
125 "column": 14 125 "column": 14
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 58, 128 "line": 72,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Speech", 134 "defaultMessage": "!!!Speech",
135 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
136 "start": { 136 "start": {
137 "line": 59, 137 "line": 73,
138 "column": 10 138 "column": 10
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 62, 141 "line": 76,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Start Speaking", 147 "defaultMessage": "!!!Start Speaking",
148 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
149 "start": { 149 "start": {
150 "line": 63, 150 "line": 77,
151 "column": 17 151 "column": 17
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 66, 154 "line": 80,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Stop Speaking", 160 "defaultMessage": "!!!Stop Speaking",
161 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
162 "start": { 162 "start": {
163 "line": 67, 163 "line": 81,
164 "column": 16 164 "column": 16
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 70, 167 "line": 84,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Start Dictation", 173 "defaultMessage": "!!!Start Dictation",
174 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
175 "start": { 175 "start": {
176 "line": 71, 176 "line": 85,
177 "column": 18 177 "column": 18
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 74, 180 "line": 88,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Emoji & Symbols", 186 "defaultMessage": "!!!Emoji & Symbols",
187 "file": "src/lib/Menu.js", 187 "file": "src/lib/Menu.js",
188 "start": { 188 "start": {
189 "line": 75, 189 "line": 89,
190 "column": 16 190 "column": 16
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 78, 193 "line": 92,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Open Quick Switch", 199 "defaultMessage": "!!!Open Quick Switch",
200 "file": "src/lib/Menu.js", 200 "file": "src/lib/Menu.js",
201 "start": { 201 "start": {
202 "line": 79, 202 "line": 93,
203 "column": 19 203 "column": 19
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 82, 206 "line": 96,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Back", 212 "defaultMessage": "!!!Back",
213 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
214 "start": { 214 "start": {
215 "line": 83, 215 "line": 97,
216 "column": 8 216 "column": 8
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 86, 219 "line": 100,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Forward", 225 "defaultMessage": "!!!Forward",
226 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
227 "start": { 227 "start": {
228 "line": 87, 228 "line": 101,
229 "column": 11 229 "column": 11
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 90, 232 "line": 104,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Actual Size", 238 "defaultMessage": "!!!Actual Size",
239 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
240 "start": { 240 "start": {
241 "line": 91, 241 "line": 105,
242 "column": 13 242 "column": 13
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 94, 245 "line": 108,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Zoom In", 251 "defaultMessage": "!!!Zoom In",
252 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
253 "start": { 253 "start": {
254 "line": 95, 254 "line": 109,
255 "column": 10 255 "column": 10
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 98, 258 "line": 112,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Zoom Out", 264 "defaultMessage": "!!!Zoom Out",
265 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
266 "start": { 266 "start": {
267 "line": 99, 267 "line": 113,
268 "column": 11 268 "column": 11
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 102, 271 "line": 116,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Toggle Full Screen", 277 "defaultMessage": "!!!Toggle Full Screen",
278 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
279 "start": { 279 "start": {
280 "line": 103, 280 "line": 117,
281 "column": 20 281 "column": 20
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 106, 284 "line": 120,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Toggle Dark Mode", 290 "defaultMessage": "!!!Toggle Dark Mode",
291 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
292 "start": { 292 "start": {
293 "line": 107, 293 "line": 121,
294 "column": 18 294 "column": 18
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 110, 297 "line": 124,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Toggle Developer Tools", 303 "defaultMessage": "!!!Toggle Developer Tools",
304 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
305 "start": { 305 "start": {
306 "line": 111, 306 "line": 125,
307 "column": 18 307 "column": 18
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 114, 310 "line": 128,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Toggle Todos Developer Tools", 316 "defaultMessage": "!!!Toggle Todos Developer Tools",
317 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
318 "start": { 318 "start": {
319 "line": 115, 319 "line": 129,
320 "column": 23 320 "column": 23
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 118, 323 "line": 132,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!Toggle Service Developer Tools", 329 "defaultMessage": "!!!Toggle Service Developer Tools",
330 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
331 "start": { 331 "start": {
332 "line": 119, 332 "line": 133,
333 "column": 25 333 "column": 25
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 122, 336 "line": 136,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!Reload Service", 342 "defaultMessage": "!!!Reload Service",
343 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
344 "start": { 344 "start": {
345 "line": 123, 345 "line": 137,
346 "column": 17 346 "column": 17
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 126, 349 "line": 140,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Reload Ferdi", 355 "defaultMessage": "!!!Reload Ferdi",
356 "file": "src/lib/Menu.js", 356 "file": "src/lib/Menu.js",
357 "start": { 357 "start": {
358 "line": 127, 358 "line": 141,
359 "column": 15 359 "column": 15
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 130, 362 "line": 144,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!Lock Ferdi", 368 "defaultMessage": "!!!Lock Ferdi",
369 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
370 "start": { 370 "start": {
371 "line": 131, 371 "line": 145,
372 "column": 13 372 "column": 13
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 134, 375 "line": 148,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Reload ToDos", 381 "defaultMessage": "!!!Reload ToDos",
382 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
383 "start": { 383 "start": {
384 "line": 135, 384 "line": 149,
385 "column": 15 385 "column": 15
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 138, 388 "line": 152,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Minimize", 394 "defaultMessage": "!!!Minimize",
395 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
396 "start": { 396 "start": {
397 "line": 139, 397 "line": 153,
398 "column": 12 398 "column": 12
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 142, 401 "line": 156,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Close", 407 "defaultMessage": "!!!Close",
408 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
409 "start": { 409 "start": {
410 "line": 143, 410 "line": 157,
411 "column": 9 411 "column": 9
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 146, 414 "line": 160,
415 "column": 3 415 "column": 3
416 } 416 }
417 }, 417 },
@@ -420,11 +420,11 @@
420 "defaultMessage": "!!!Learn More", 420 "defaultMessage": "!!!Learn More",
421 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
422 "start": { 422 "start": {
423 "line": 147, 423 "line": 161,
424 "column": 13 424 "column": 13
425 }, 425 },
426 "end": { 426 "end": {
427 "line": 150, 427 "line": 164,
428 "column": 3 428 "column": 3
429 } 429 }
430 }, 430 },
@@ -433,11 +433,11 @@
433 "defaultMessage": "!!!Changelog", 433 "defaultMessage": "!!!Changelog",
434 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
435 "start": { 435 "start": {
436 "line": 151, 436 "line": 165,
437 "column": 13 437 "column": 13
438 }, 438 },
439 "end": { 439 "end": {
440 "line": 154, 440 "line": 168,
441 "column": 3 441 "column": 3
442 } 442 }
443 }, 443 },
@@ -446,11 +446,11 @@
446 "defaultMessage": "!!!Import/Export Configuration Data", 446 "defaultMessage": "!!!Import/Export Configuration Data",
447 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
448 "start": { 448 "start": {
449 "line": 155, 449 "line": 169,
450 "column": 20 450 "column": 20
451 }, 451 },
452 "end": { 452 "end": {
453 "line": 158, 453 "line": 172,
454 "column": 3 454 "column": 3
455 } 455 }
456 }, 456 },
@@ -459,11 +459,11 @@
459 "defaultMessage": "!!!Support", 459 "defaultMessage": "!!!Support",
460 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
461 "start": { 461 "start": {
462 "line": 159, 462 "line": 173,
463 "column": 11 463 "column": 11
464 }, 464 },
465 "end": { 465 "end": {
466 "line": 162, 466 "line": 176,
467 "column": 3 467 "column": 3
468 } 468 }
469 }, 469 },
@@ -472,11 +472,11 @@
472 "defaultMessage": "!!!Copy Debug Information", 472 "defaultMessage": "!!!Copy Debug Information",
473 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
474 "start": { 474 "start": {
475 "line": 163, 475 "line": 177,
476 "column": 13 476 "column": 13
477 }, 477 },
478 "end": { 478 "end": {
479 "line": 166, 479 "line": 180,
480 "column": 3 480 "column": 3
481 } 481 }
482 }, 482 },
@@ -485,11 +485,11 @@
485 "defaultMessage": "!!!Publish Debug Information", 485 "defaultMessage": "!!!Publish Debug Information",
486 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
487 "start": { 487 "start": {
488 "line": 167, 488 "line": 181,
489 "column": 20 489 "column": 20
490 }, 490 },
491 "end": { 491 "end": {
492 "line": 170, 492 "line": 184,
493 "column": 3 493 "column": 3
494 } 494 }
495 }, 495 },
@@ -498,11 +498,11 @@
498 "defaultMessage": "!!!Ferdi Debug Information", 498 "defaultMessage": "!!!Ferdi Debug Information",
499 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
500 "start": { 500 "start": {
501 "line": 171, 501 "line": 185,
502 "column": 27 502 "column": 27
503 }, 503 },
504 "end": { 504 "end": {
505 "line": 174, 505 "line": 188,
506 "column": 3 506 "column": 3
507 } 507 }
508 }, 508 },
@@ -511,11 +511,11 @@
511 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 511 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
512 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
513 "start": { 513 "start": {
514 "line": 175, 514 "line": 189,
515 "column": 23 515 "column": 23
516 }, 516 },
517 "end": { 517 "end": {
518 "line": 178, 518 "line": 193,
519 "column": 3 519 "column": 3
520 } 520 }
521 }, 521 },
@@ -524,11 +524,11 @@
524 "defaultMessage": "!!!Unlock with Touch ID", 524 "defaultMessage": "!!!Unlock with Touch ID",
525 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
526 "start": { 526 "start": {
527 "line": 179, 527 "line": 194,
528 "column": 11 528 "column": 11
529 }, 529 },
530 "end": { 530 "end": {
531 "line": 182, 531 "line": 197,
532 "column": 3 532 "column": 3
533 } 533 }
534 }, 534 },
@@ -537,11 +537,11 @@
537 "defaultMessage": "!!!unlock via Touch ID", 537 "defaultMessage": "!!!unlock via Touch ID",
538 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
539 "start": { 539 "start": {
540 "line": 183, 540 "line": 198,
541 "column": 17 541 "column": 17
542 }, 542 },
543 "end": { 543 "end": {
544 "line": 186, 544 "line": 201,
545 "column": 3 545 "column": 3
546 } 546 }
547 }, 547 },
@@ -550,11 +550,11 @@
550 "defaultMessage": "!!!Terms of Service", 550 "defaultMessage": "!!!Terms of Service",
551 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
552 "start": { 552 "start": {
553 "line": 187, 553 "line": 202,
554 "column": 7 554 "column": 7
555 }, 555 },
556 "end": { 556 "end": {
557 "line": 190, 557 "line": 205,
558 "column": 3 558 "column": 3
559 } 559 }
560 }, 560 },
@@ -563,11 +563,11 @@
563 "defaultMessage": "!!!Privacy Statement", 563 "defaultMessage": "!!!Privacy Statement",
564 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
565 "start": { 565 "start": {
566 "line": 191, 566 "line": 206,
567 "column": 11 567 "column": 11
568 }, 568 },
569 "end": { 569 "end": {
570 "line": 194, 570 "line": 209,
571 "column": 3 571 "column": 3
572 } 572 }
573 }, 573 },
@@ -576,11 +576,11 @@
576 "defaultMessage": "!!!File", 576 "defaultMessage": "!!!File",
577 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
578 "start": { 578 "start": {
579 "line": 195, 579 "line": 210,
580 "column": 8 580 "column": 8
581 }, 581 },
582 "end": { 582 "end": {
583 "line": 198, 583 "line": 213,
584 "column": 3 584 "column": 3
585 } 585 }
586 }, 586 },
@@ -589,11 +589,11 @@
589 "defaultMessage": "!!!View", 589 "defaultMessage": "!!!View",
590 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
591 "start": { 591 "start": {
592 "line": 199, 592 "line": 214,
593 "column": 8 593 "column": 8
594 }, 594 },
595 "end": { 595 "end": {
596 "line": 202, 596 "line": 217,
597 "column": 3 597 "column": 3
598 } 598 }
599 }, 599 },
@@ -602,11 +602,11 @@
602 "defaultMessage": "!!!Services", 602 "defaultMessage": "!!!Services",
603 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
604 "start": { 604 "start": {
605 "line": 203, 605 "line": 218,
606 "column": 12 606 "column": 12
607 }, 607 },
608 "end": { 608 "end": {
609 "line": 206, 609 "line": 221,
610 "column": 3 610 "column": 3
611 } 611 }
612 }, 612 },
@@ -615,11 +615,11 @@
615 "defaultMessage": "!!!Window", 615 "defaultMessage": "!!!Window",
616 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
617 "start": { 617 "start": {
618 "line": 207, 618 "line": 222,
619 "column": 10 619 "column": 10
620 }, 620 },
621 "end": { 621 "end": {
622 "line": 210, 622 "line": 225,
623 "column": 3 623 "column": 3
624 } 624 }
625 }, 625 },
@@ -628,11 +628,11 @@
628 "defaultMessage": "!!!Help", 628 "defaultMessage": "!!!Help",
629 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
630 "start": { 630 "start": {
631 "line": 211, 631 "line": 226,
632 "column": 8 632 "column": 8
633 }, 633 },
634 "end": { 634 "end": {
635 "line": 214, 635 "line": 229,
636 "column": 3 636 "column": 3
637 } 637 }
638 }, 638 },
@@ -641,37 +641,11 @@
641 "defaultMessage": "!!!About Ferdi", 641 "defaultMessage": "!!!About Ferdi",
642 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
643 "start": { 643 "start": {
644 "line": 215, 644 "line": 230,
645 "column": 9 645 "column": 9
646 }, 646 },
647 "end": { 647 "end": {
648 "line": 218, 648 "line": 233,
649 "column": 3
650 }
651 },
652 {
653 "id": "menu.app.announcement",
654 "defaultMessage": "!!!What's new?",
655 "file": "src/lib/Menu.js",
656 "start": {
657 "line": 219,
658 "column": 16
659 },
660 "end": {
661 "line": 222,
662 "column": 3
663 }
664 },
665 {
666 "id": "menu.app.settings",
667 "defaultMessage": "!!!Settings",
668 "file": "src/lib/Menu.js",
669 "start": {
670 "line": 223,
671 "column": 12
672 },
673 "end": {
674 "line": 226,
675 "column": 3 649 "column": 3
676 } 650 }
677 }, 651 },
@@ -680,11 +654,11 @@
680 "defaultMessage": "!!!Check for updates", 654 "defaultMessage": "!!!Check for updates",
681 "file": "src/lib/Menu.js", 655 "file": "src/lib/Menu.js",
682 "start": { 656 "start": {
683 "line": 227, 657 "line": 234,
684 "column": 19 658 "column": 19
685 }, 659 },
686 "end": { 660 "end": {
687 "line": 230, 661 "line": 237,
688 "column": 3 662 "column": 3
689 } 663 }
690 }, 664 },
@@ -693,11 +667,11 @@
693 "defaultMessage": "!!!Hide", 667 "defaultMessage": "!!!Hide",
694 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
695 "start": { 669 "start": {
696 "line": 231, 670 "line": 238,
697 "column": 8 671 "column": 8
698 }, 672 },
699 "end": { 673 "end": {
700 "line": 234, 674 "line": 241,
701 "column": 3 675 "column": 3
702 } 676 }
703 }, 677 },
@@ -706,11 +680,11 @@
706 "defaultMessage": "!!!Hide Others", 680 "defaultMessage": "!!!Hide Others",
707 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
708 "start": { 682 "start": {
709 "line": 235, 683 "line": 242,
710 "column": 14 684 "column": 14
711 }, 685 },
712 "end": { 686 "end": {
713 "line": 238, 687 "line": 245,
714 "column": 3 688 "column": 3
715 } 689 }
716 }, 690 },
@@ -719,11 +693,11 @@
719 "defaultMessage": "!!!Unhide", 693 "defaultMessage": "!!!Unhide",
720 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
721 "start": { 695 "start": {
722 "line": 239, 696 "line": 246,
723 "column": 10 697 "column": 10
724 }, 698 },
725 "end": { 699 "end": {
726 "line": 242, 700 "line": 249,
727 "column": 3 701 "column": 3
728 } 702 }
729 }, 703 },
@@ -732,24 +706,11 @@
732 "defaultMessage": "!!!Auto-hide menu bar", 706 "defaultMessage": "!!!Auto-hide menu bar",
733 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
734 "start": { 708 "start": {
735 "line": 243, 709 "line": 250,
736 "column": 19 710 "column": 19
737 }, 711 },
738 "end": { 712 "end": {
739 "line": 246, 713 "line": 253,
740 "column": 3
741 }
742 },
743 {
744 "id": "menu.app.quit",
745 "defaultMessage": "!!!Quit",
746 "file": "src/lib/Menu.js",
747 "start": {
748 "line": 247,
749 "column": 8
750 },
751 "end": {
752 "line": 250,
753 "column": 3 714 "column": 3
754 } 715 }
755 }, 716 },
@@ -758,11 +719,11 @@
758 "defaultMessage": "!!!Add New Service...", 719 "defaultMessage": "!!!Add New Service...",
759 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
760 "start": { 721 "start": {
761 "line": 251, 722 "line": 254,
762 "column": 17 723 "column": 17
763 }, 724 },
764 "end": { 725 "end": {
765 "line": 254, 726 "line": 257,
766 "column": 3 727 "column": 3
767 } 728 }
768 }, 729 },
@@ -771,11 +732,11 @@
771 "defaultMessage": "!!!Add New Workspace...", 732 "defaultMessage": "!!!Add New Workspace...",
772 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
773 "start": { 734 "start": {
774 "line": 255, 735 "line": 258,
775 "column": 19 736 "column": 19
776 }, 737 },
777 "end": { 738 "end": {
778 "line": 258, 739 "line": 261,
779 "column": 3 740 "column": 3
780 } 741 }
781 }, 742 },
@@ -784,11 +745,11 @@
784 "defaultMessage": "!!!Open workspace drawer", 745 "defaultMessage": "!!!Open workspace drawer",
785 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
786 "start": { 747 "start": {
787 "line": 259, 748 "line": 262,
788 "column": 23 749 "column": 23
789 }, 750 },
790 "end": { 751 "end": {
791 "line": 262, 752 "line": 265,
792 "column": 3 753 "column": 3
793 } 754 }
794 }, 755 },
@@ -797,11 +758,11 @@
797 "defaultMessage": "!!!Close workspace drawer", 758 "defaultMessage": "!!!Close workspace drawer",
798 "file": "src/lib/Menu.js", 759 "file": "src/lib/Menu.js",
799 "start": { 760 "start": {
800 "line": 263, 761 "line": 266,
801 "column": 24 762 "column": 24
802 }, 763 },
803 "end": { 764 "end": {
804 "line": 266, 765 "line": 269,
805 "column": 3 766 "column": 3
806 } 767 }
807 }, 768 },
@@ -810,11 +771,11 @@
810 "defaultMessage": "!!!Activate next service...", 771 "defaultMessage": "!!!Activate next service...",
811 "file": "src/lib/Menu.js", 772 "file": "src/lib/Menu.js",
812 "start": { 773 "start": {
813 "line": 267, 774 "line": 270,
814 "column": 23 775 "column": 23
815 }, 776 },
816 "end": { 777 "end": {
817 "line": 270, 778 "line": 273,
818 "column": 3 779 "column": 3
819 } 780 }
820 }, 781 },
@@ -823,11 +784,11 @@
823 "defaultMessage": "!!!Activate previous service...", 784 "defaultMessage": "!!!Activate previous service...",
824 "file": "src/lib/Menu.js", 785 "file": "src/lib/Menu.js",
825 "start": { 786 "start": {
826 "line": 271, 787 "line": 274,
827 "column": 27 788 "column": 27
828 }, 789 },
829 "end": { 790 "end": {
830 "line": 274, 791 "line": 277,
831 "column": 3 792 "column": 3
832 } 793 }
833 }, 794 },
@@ -836,11 +797,11 @@
836 "defaultMessage": "!!!Disable notifications & audio", 797 "defaultMessage": "!!!Disable notifications & audio",
837 "file": "src/lib/Menu.js", 798 "file": "src/lib/Menu.js",
838 "start": { 799 "start": {
839 "line": 275, 800 "line": 278,
840 "column": 11 801 "column": 11
841 }, 802 },
842 "end": { 803 "end": {
843 "line": 278, 804 "line": 281,
844 "column": 3 805 "column": 3
845 } 806 }
846 }, 807 },
@@ -849,11 +810,11 @@
849 "defaultMessage": "!!!Enable notifications & audio", 810 "defaultMessage": "!!!Enable notifications & audio",
850 "file": "src/lib/Menu.js", 811 "file": "src/lib/Menu.js",
851 "start": { 812 "start": {
852 "line": 279, 813 "line": 282,
853 "column": 13 814 "column": 13
854 }, 815 },
855 "end": { 816 "end": {
856 "line": 282, 817 "line": 285,
857 "column": 3 818 "column": 3
858 } 819 }
859 }, 820 },
@@ -862,11 +823,11 @@
862 "defaultMessage": "!!!Workspaces", 823 "defaultMessage": "!!!Workspaces",
863 "file": "src/lib/Menu.js", 824 "file": "src/lib/Menu.js",
864 "start": { 825 "start": {
865 "line": 283, 826 "line": 286,
866 "column": 14 827 "column": 14
867 }, 828 },
868 "end": { 829 "end": {
869 "line": 286, 830 "line": 289,
870 "column": 3 831 "column": 3
871 } 832 }
872 }, 833 },
@@ -875,11 +836,11 @@
875 "defaultMessage": "!!!Default", 836 "defaultMessage": "!!!Default",
876 "file": "src/lib/Menu.js", 837 "file": "src/lib/Menu.js",
877 "start": { 838 "start": {
878 "line": 287, 839 "line": 290,
879 "column": 20 840 "column": 20
880 }, 841 },
881 "end": { 842 "end": {
882 "line": 290, 843 "line": 293,
883 "column": 3 844 "column": 3
884 } 845 }
885 }, 846 },
@@ -888,11 +849,11 @@
888 "defaultMessage": "!!!Todos", 849 "defaultMessage": "!!!Todos",
889 "file": "src/lib/Menu.js", 850 "file": "src/lib/Menu.js",
890 "start": { 851 "start": {
891 "line": 291, 852 "line": 294,
892 "column": 9 853 "column": 9
893 }, 854 },
894 "end": { 855 "end": {
895 "line": 294, 856 "line": 297,
896 "column": 3 857 "column": 3
897 } 858 }
898 }, 859 },
@@ -901,11 +862,11 @@
901 "defaultMessage": "!!!Open Todos drawer", 862 "defaultMessage": "!!!Open Todos drawer",
902 "file": "src/lib/Menu.js", 863 "file": "src/lib/Menu.js",
903 "start": { 864 "start": {
904 "line": 295, 865 "line": 298,
905 "column": 19 866 "column": 19
906 }, 867 },
907 "end": { 868 "end": {
908 "line": 298, 869 "line": 301,
909 "column": 3 870 "column": 3
910 } 871 }
911 }, 872 },
@@ -914,11 +875,11 @@
914 "defaultMessage": "!!!Close Todos drawer", 875 "defaultMessage": "!!!Close Todos drawer",
915 "file": "src/lib/Menu.js", 876 "file": "src/lib/Menu.js",
916 "start": { 877 "start": {
917 "line": 299, 878 "line": 302,
918 "column": 20 879 "column": 20
919 }, 880 },
920 "end": { 881 "end": {
921 "line": 302, 882 "line": 305,
922 "column": 3 883 "column": 3
923 } 884 }
924 }, 885 },
@@ -927,11 +888,11 @@
927 "defaultMessage": "!!!Enable Todos", 888 "defaultMessage": "!!!Enable Todos",
928 "file": "src/lib/Menu.js", 889 "file": "src/lib/Menu.js",
929 "start": { 890 "start": {
930 "line": 303, 891 "line": 306,
931 "column": 15 892 "column": 15
932 }, 893 },
933 "end": { 894 "end": {
934 "line": 306, 895 "line": 309,
935 "column": 3 896 "column": 3
936 } 897 }
937 }, 898 },
@@ -940,11 +901,11 @@
940 "defaultMessage": "!!!Home", 901 "defaultMessage": "!!!Home",
941 "file": "src/lib/Menu.js", 902 "file": "src/lib/Menu.js",
942 "start": { 903 "start": {
943 "line": 307, 904 "line": 310,
944 "column": 17 905 "column": 17
945 }, 906 },
946 "end": { 907 "end": {
947 "line": 310, 908 "line": 313,
948 "column": 3 909 "column": 3
949 } 910 }
950 } 911 }
diff --git a/src/index.js b/src/index.js
index d2b0f56f4..ae75865c6 100644
--- a/src/index.js
+++ b/src/index.js
@@ -280,6 +280,11 @@ const createWindow = () => {
280 debug('Skip taskbar: true'); 280 debug('Skip taskbar: true');
281 mainWindow.setSkipTaskbar(true); 281 mainWindow.setSkipTaskbar(true);
282 } 282 }
283 } else if (isMac && mainWindow.isFullScreen()) {
284 debug('Window: leaveFullScreen and hide');
285 mainWindow.once('show', () => mainWindow.setFullScreen(true));
286 mainWindow.once('leave-full-screen', () => mainWindow.hide());
287 mainWindow.setFullScreen(false);
283 } else { 288 } else {
284 debug('Window: hide'); 289 debug('Window: hide');
285 mainWindow.hide(); 290 mainWindow.hide();
@@ -465,7 +470,7 @@ ipcMain.on('open-browser-window', (e, { url, serviceId }) => {
465ipcMain.on( 470ipcMain.on(
466 'modifyRequestHeaders', 471 'modifyRequestHeaders',
467 (e, { modifiedRequestHeaders, serviceId }) => { 472 (e, { modifiedRequestHeaders, serviceId }) => {
468 debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId); 473 debug(`Received modifyRequestHeaders ${modifiedRequestHeaders} for serviceId ${serviceId}`);
469 modifiedRequestHeaders.forEach(headerFilterSet => { 474 modifiedRequestHeaders.forEach(headerFilterSet => {
470 const { headers, requestFilters } = headerFilterSet; 475 const { headers, requestFilters } = headerFilterSet;
471 session 476 session
@@ -483,6 +488,24 @@ ipcMain.on(
483 }, 488 },
484); 489);
485 490
491ipcMain.on(
492 'knownCertificateHosts',
493 (e, { knownHosts, serviceId }) => {
494 debug(`Received knownCertificateHosts ${knownHosts} for serviceId ${serviceId}`);
495 session
496 .fromPartition(`persist:service-${serviceId}`)
497 .setCertificateVerifyProc((request, callback) => {
498 // To know more about these callbacks: https://www.electronjs.org/docs/api/session#sessetcertificateverifyprocproc
499 const { hostname } = request;
500 if (knownHosts.find(item => item.includes(hostname)).length > 0) {
501 callback(0);
502 } else {
503 callback(-2);
504 }
505 });
506 },
507);
508
486ipcMain.on('feature-basic-auth-cancel', () => { 509ipcMain.on('feature-basic-auth-cancel', () => {
487 debug('Cancel basic auth'); 510 debug('Cancel basic auth');
488 511
diff --git a/src/internal-server/app/Controllers/Http/StaticController.js b/src/internal-server/app/Controllers/Http/StaticController.js
index 28c5389a9..33e0e52d9 100644
--- a/src/internal-server/app/Controllers/Http/StaticController.js
+++ b/src/internal-server/app/Controllers/Http/StaticController.js
@@ -7,25 +7,14 @@ import { DEFAULT_FEATURES_CONFIG } from '../../../../config';
7// TODO: This endpoint and associated code needs to be remoeved as cleanup 7// TODO: This endpoint and associated code needs to be remoeved as cleanup
8class StaticController { 8class StaticController {
9 // Enable all features 9 // Enable all features
10 features({ 10 features({ response }) {
11 response,
12 }) {
13 return response.send(DEFAULT_FEATURES_CONFIG); 11 return response.send(DEFAULT_FEATURES_CONFIG);
14 } 12 }
15 13
16 // Return an empty array 14 // Return an empty array
17 emptyArray({ 15 emptyArray({ response }) {
18 response,
19 }) {
20 return response.send([]); 16 return response.send([]);
21 } 17 }
22
23 // Show announcements
24 announcement({
25 response,
26 }) {
27 return response.send({});
28 }
29} 18}
30 19
31export default StaticController; 20export default StaticController;
diff --git a/src/internal-server/app/Controllers/Http/UserController.js b/src/internal-server/app/Controllers/Http/UserController.js
index 57aea6fc1..994dcc0dc 100644
--- a/src/internal-server/app/Controllers/Http/UserController.js
+++ b/src/internal-server/app/Controllers/Http/UserController.js
@@ -30,6 +30,19 @@ const apiRequest = (url, route, method, auth) => new Promise((resolve, reject) =
30 30
31const LOGIN_SUCCESS_TOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M'; 31const LOGIN_SUCCESS_TOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M';
32 32
33const DEFAULT_USER_DATA = {
34 accountType: 'individual',
35 beta: false,
36 email: '',
37 emailValidated: true,
38 features: {},
39 firstname: 'Ferdi',
40 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
41 isSubscriptionOwner: true,
42 lastname: 'Application',
43 locale: DEFAULT_APP_SETTINGS.fallbackLocale,
44};
45
33class UserController { 46class UserController {
34 // Register a new user 47 // Register a new user
35 async signup({ 48 async signup({
@@ -83,16 +96,7 @@ class UserController {
83 const settings = typeof user.settings === 'string' ? JSON.parse(user.settings) : user.settings; 96 const settings = typeof user.settings === 'string' ? JSON.parse(user.settings) : user.settings;
84 97
85 return response.send({ 98 return response.send({
86 accountType: 'individual', 99 ...DEFAULT_USER_DATA,
87 beta: false,
88 email: '',
89 emailValidated: true,
90 features: {},
91 firstname: 'Ferdi',
92 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
93 isSubscriptionOwner: true,
94 lastname: 'Application',
95 locale: DEFAULT_APP_SETTINGS.fallbackLocale,
96 ...settings || {}, 100 ...settings || {},
97 }); 101 });
98 } 102 }
@@ -118,16 +122,7 @@ class UserController {
118 122
119 return response.send({ 123 return response.send({
120 data: { 124 data: {
121 accountType: 'individual', 125 ...DEFAULT_USER_DATA,
122 beta: false,
123 email: '',
124 emailValidated: true,
125 features: {},
126 firstname: 'Ferdi',
127 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
128 isSubscriptionOwner: true,
129 lastname: 'Application',
130 locale: DEFAULT_APP_SETTINGS.fallbackLocale,
131 ...newSettings, 126 ...newSettings,
132 }, 127 },
133 status: [ 128 status: [
@@ -216,20 +211,7 @@ class UserController {
216 const services = await apiRequest(server, 'me/services', 'GET', token); 211 const services = await apiRequest(server, 'me/services', 'GET', token);
217 212
218 for (const service of services) { 213 for (const service of services) {
219 // Get new, unused uuid 214 await this._createAndCacheService(service, serviceIdTranslation); // eslint-disable-line no-await-in-loop
220 let serviceId;
221 do {
222 serviceId = uuid();
223 } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
224
225 await Service.create({ // eslint-disable-line no-await-in-loop
226 serviceId,
227 name: service.name,
228 recipeId: service.recipeId,
229 settings: JSON.stringify(service),
230 });
231
232 serviceIdTranslation[service.id] = serviceId;
233 } 215 }
234 } catch (e) { 216 } catch (e) {
235 const errorMessage = `Could not import your services into our system.\nError: ${e}`; 217 const errorMessage = `Could not import your services into our system.\nError: ${e}`;
@@ -241,20 +223,7 @@ class UserController {
241 const workspaces = await apiRequest(server, 'workspace', 'GET', token); 223 const workspaces = await apiRequest(server, 'workspace', 'GET', token);
242 224
243 for (const workspace of workspaces) { 225 for (const workspace of workspaces) {
244 let workspaceId; 226 await this._createWorkspace(workspace, serviceIdTranslation); // eslint-disable-line no-await-in-loop
245 do {
246 workspaceId = uuid();
247 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
248
249 const services = workspace.services.map(service => serviceIdTranslation[service]);
250
251 await Workspace.create({ // eslint-disable-line no-await-in-loop
252 workspaceId,
253 name: workspace.name,
254 order: workspace.order,
255 services: JSON.stringify(services),
256 data: JSON.stringify({}),
257 });
258 } 227 }
259 } catch (e) { 228 } catch (e) {
260 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`; 229 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`;
@@ -313,20 +282,7 @@ class UserController {
313 // Import services 282 // Import services
314 try { 283 try {
315 for (const service of file.services) { 284 for (const service of file.services) {
316 // Get new, unused uuid 285 await this._createAndCacheService(service, serviceIdTranslation); // eslint-disable-line no-await-in-loop
317 let serviceId;
318 do {
319 serviceId = uuid();
320 } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
321
322 await Service.create({ // eslint-disable-line no-await-in-loop
323 serviceId,
324 name: service.name,
325 recipeId: service.recipeId,
326 settings: JSON.stringify(service.settings),
327 });
328
329 serviceIdTranslation[service.id] = serviceId;
330 } 286 }
331 } catch (e) { 287 } catch (e) {
332 const errorMessage = `Could not import your services into our system.\nError: ${e}`; 288 const errorMessage = `Could not import your services into our system.\nError: ${e}`;
@@ -336,22 +292,7 @@ class UserController {
336 // Import workspaces 292 // Import workspaces
337 try { 293 try {
338 for (const workspace of file.workspaces) { 294 for (const workspace of file.workspaces) {
339 let workspaceId; 295 await this._createWorkspace(workspace, serviceIdTranslation); // eslint-disable-line no-await-in-loop
340 do {
341 workspaceId = uuid();
342 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
343
344 const services = (workspace.services && typeof (workspace.services) === 'object') ?
345 workspace.services.map((service) => serviceIdTranslation[service]) :
346 [];
347
348 await Workspace.create({ // eslint-disable-line no-await-in-loop
349 workspaceId,
350 name: workspace.name,
351 order: workspace.order,
352 services: JSON.stringify(services),
353 data: JSON.stringify(workspace.data),
354 });
355 } 296 }
356 } catch (e) { 297 } catch (e) {
357 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`; 298 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`;
@@ -360,6 +301,53 @@ class UserController {
360 301
361 return response.send('Your account has been imported.'); 302 return response.send('Your account has been imported.');
362 } 303 }
304
305 async _createWorkspace(workspace, serviceIdTranslation) {
306 let newWorkspaceId;
307 do {
308 newWorkspaceId = uuid();
309 } while ((await Workspace.query().where('workspaceId', newWorkspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
310
311 if (workspace.services && typeof (workspace.services) === 'string' && workspace.services.length > 0) {
312 workspace.services = JSON.parse(workspace.services);
313 }
314 const services = (workspace.services && typeof (workspace.services) === 'object') ?
315 workspace.services.map(oldServiceId => serviceIdTranslation[oldServiceId]) :
316 [];
317 if (workspace.data && typeof (workspace.data) === 'string' && workspace.data.length > 0) {
318 workspace.data = JSON.parse(workspace.data);
319 }
320
321 await Workspace.create({
322 workspaceId: newWorkspaceId,
323 name: workspace.name,
324 order: workspace.order,
325 services: JSON.stringify(services),
326 data: JSON.stringify(workspace.data || {}),
327 });
328 }
329
330 async _createAndCacheService(service, serviceIdTranslation) {
331 // Get new, unused uuid
332 let newServiceId;
333 do {
334 newServiceId = uuid();
335 } while ((await Service.query().where('serviceId', newServiceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
336
337 // store the old serviceId as the key for future lookup
338 serviceIdTranslation[service.serviceId] = newServiceId;
339
340 if (service.settings && typeof (service.settings) === 'string' && service.settings.length > 0) {
341 service.settings = JSON.parse(service.settings);
342 }
343
344 await Service.create({
345 serviceId: newServiceId,
346 name: service.name,
347 recipeId: service.recipeId,
348 settings: JSON.stringify(service.settings || {}),
349 });
350 }
363} 351}
364 352
365module.exports = UserController; 353module.exports = UserController;
diff --git a/src/internal-server/app/Controllers/Http/WorkspaceController.js b/src/internal-server/app/Controllers/Http/WorkspaceController.js
index 4189fbcdd..773312a0b 100644
--- a/src/internal-server/app/Controllers/Http/WorkspaceController.js
+++ b/src/internal-server/app/Controllers/Http/WorkspaceController.js
@@ -32,10 +32,12 @@ class WorkspaceController {
32 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop 32 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop
33 33
34 const order = (await Workspace.all()).rows.length; 34 const order = (await Workspace.all()).rows.length;
35 const name = data.name;
36 delete data.name;
35 37
36 await Workspace.create({ 38 await Workspace.create({
37 workspaceId, 39 workspaceId,
38 name: data.name, 40 name,
39 order, 41 order,
40 services: JSON.stringify([]), 42 services: JSON.stringify([]),
41 data: JSON.stringify(data), 43 data: JSON.stringify(data),
@@ -43,7 +45,7 @@ class WorkspaceController {
43 45
44 return response.send({ 46 return response.send({
45 userId: 1, 47 userId: 1,
46 name: data.name, 48 name,
47 id: workspaceId, 49 id: workspaceId,
48 order, 50 order,
49 workspaces: [], 51 workspaces: [],
diff --git a/src/internal-server/start/routes.js b/src/internal-server/start/routes.js
index b32b094ee..e75380ccd 100644
--- a/src/internal-server/start/routes.js
+++ b/src/internal-server/start/routes.js
@@ -25,12 +25,12 @@ const OnlyAllowFerdi = async ({ request, response }, next) => {
25}; 25};
26 26
27// Health: Returning if all systems function correctly 27// Health: Returning if all systems function correctly
28Route.get('health', ({ 28Route.get('health', ({ response }) =>
29 response, 29 response.send({
30}) => response.send({ 30 api: 'success',
31 api: 'success', 31 db: 'success',
32 db: 'success', 32 }),
33})).middleware(OnlyAllowFerdi); 33).middleware(OnlyAllowFerdi);
34 34
35// API is grouped under '/v1/' route 35// API is grouped under '/v1/' route
36Route.group(() => { 36Route.group(() => {
@@ -67,8 +67,9 @@ Route.group(() => {
67 Route.get('features/:mode?', 'StaticController.features'); 67 Route.get('features/:mode?', 'StaticController.features');
68 Route.get('services', 'StaticController.emptyArray'); 68 Route.get('services', 'StaticController.emptyArray');
69 Route.get('news', 'StaticController.emptyArray'); 69 Route.get('news', 'StaticController.emptyArray');
70 Route.get('announcements/:version', 'StaticController.announcement'); 70})
71}).prefix(API_VERSION).middleware(OnlyAllowFerdi); 71 .prefix(API_VERSION)
72 .middleware(OnlyAllowFerdi);
72 73
73Route.group(() => { 74Route.group(() => {
74 Route.get('icon/:id', 'ServiceController.icon'); 75 Route.get('icon/:id', 'ServiceController.icon');
diff --git a/src/jsUtils.ts b/src/jsUtils.ts
new file mode 100644
index 000000000..b1baad7c5
--- /dev/null
+++ b/src/jsUtils.ts
@@ -0,0 +1,3 @@
1export const ifUndefinedString = (source: string | undefined | null, defaultValue: string): string => (source !== undefined && source !== null ? source : defaultValue);
2export const ifUndefinedBoolean = (source: boolean | undefined | null, defaultValue: boolean): boolean => Boolean(source !== undefined && source !== null ? source : defaultValue);
3export const ifUndefinedNumber = (source: number | undefined | null, defaultValue: number): number => Number(source !== undefined && source !== null ? source : defaultValue);
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 5a99299c5..2c24b696b 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -2,18 +2,32 @@ import { clipboard } from 'electron';
2import { app, Menu, dialog, systemPreferences } from '@electron/remote'; 2import { app, Menu, dialog, systemPreferences } from '@electron/remote';
3import { autorun, observable } from 'mobx'; 3import { autorun, observable } from 'mobx';
4import { defineMessages } from 'react-intl'; 4import { defineMessages } from 'react-intl';
5import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDI_URL, LIVE_API_FERDI_WEBSITE } from '../config';
6import { 5import {
7 cmdOrCtrlShortcutKey, altKey, shiftKey, settingsShortcutKey, isLinux, isMac, aboutAppDetails, lockFerdiShortcutKey, todosToggleShortcutKey, workspaceToggleShortcutKey, addNewServiceShortcutKey, muteFerdiShortcutKey, 6 CUSTOM_WEBSITE_RECIPE_ID,
7 GITHUB_FERDI_URL,
8 LIVE_API_FERDI_WEBSITE,
9} from '../config';
10import {
11 cmdOrCtrlShortcutKey,
12 altKey,
13 shiftKey,
14 settingsShortcutKey,
15 isLinux,
16 isMac,
17 aboutAppDetails,
18 lockFerdiShortcutKey,
19 todosToggleShortcutKey,
20 workspaceToggleShortcutKey,
21 addNewServiceShortcutKey,
22 muteFerdiShortcutKey,
8} from '../environment'; 23} from '../environment';
9import { announcementsStore } from '../features/announcements';
10import { announcementActions } from '../features/announcements/actions';
11import { todosStore } from '../features/todos'; 24import { todosStore } from '../features/todos';
12import { todoActions } from '../features/todos/actions'; 25import { todoActions } from '../features/todos/actions';
13import { workspaceActions } from '../features/workspaces/actions'; 26import { workspaceActions } from '../features/workspaces/actions';
14import { workspaceStore } from '../features/workspaces/index'; 27import { workspaceStore } from '../features/workspaces/index';
15import apiBase, { termsBase } from '../api/apiBase'; 28import apiBase, { termsBase } from '../api/apiBase';
16import { openExternalUrl } from '../helpers/url-helpers'; 29import { openExternalUrl } from '../helpers/url-helpers';
30import globalMessages from '../i18n/globalMessages';
17 31
18const menuItems = defineMessages({ 32const menuItems = defineMessages({
19 edit: { 33 edit: {
@@ -174,7 +188,8 @@ const menuItems = defineMessages({
174 }, 188 },
175 debugInfoCopiedBody: { 189 debugInfoCopiedBody: {
176 id: 'menu.help.debugInfoCopiedBody', 190 id: 'menu.help.debugInfoCopiedBody',
177 defaultMessage: '!!!Your Debug Information has been copied to your clipboard.', 191 defaultMessage:
192 '!!!Your Debug Information has been copied to your clipboard.',
178 }, 193 },
179 touchId: { 194 touchId: {
180 id: 'locked.touchId', 195 id: 'locked.touchId',
@@ -216,14 +231,6 @@ const menuItems = defineMessages({
216 id: 'menu.app.about', 231 id: 'menu.app.about',
217 defaultMessage: '!!!About Ferdi', 232 defaultMessage: '!!!About Ferdi',
218 }, 233 },
219 announcement: {
220 id: 'menu.app.announcement',
221 defaultMessage: '!!!What\'s new?',
222 },
223 settings: {
224 id: 'menu.app.settings',
225 defaultMessage: '!!!Settings',
226 },
227 checkForUpdates: { 234 checkForUpdates: {
228 id: 'menu.app.checkForUpdates', 235 id: 'menu.app.checkForUpdates',
229 defaultMessage: '!!!Check for updates', 236 defaultMessage: '!!!Check for updates',
@@ -244,10 +251,6 @@ const menuItems = defineMessages({
244 id: 'menu.app.autohideMenuBar', 251 id: 'menu.app.autohideMenuBar',
245 defaultMessage: '!!!Auto-hide menu bar', 252 defaultMessage: '!!!Auto-hide menu bar',
246 }, 253 },
247 quit: {
248 id: 'menu.app.quit',
249 defaultMessage: '!!!Quit',
250 },
251 addNewService: { 254 addNewService: {
252 id: 'menu.services.addNewService', 255 id: 'menu.services.addNewService',
253 defaultMessage: '!!!Add New Service...', 256 defaultMessage: '!!!Add New Service...',
@@ -310,8 +313,8 @@ const menuItems = defineMessages({
310 }, 313 },
311}); 314});
312 315
313function getActiveWebview() { 316function getActiveService() {
314 return window.ferdi.stores.services.active.webview; 317 return window.ferdi.stores.services.active;
315} 318}
316 319
317const _titleBarTemplateFactory = (intl, locked) => [ 320const _titleBarTemplateFactory = (intl, locked) => [
@@ -349,9 +352,6 @@ const _titleBarTemplateFactory = (intl, locked) => [
349 label: intl.formatMessage(menuItems.pasteAndMatchStyle), 352 label: intl.formatMessage(menuItems.pasteAndMatchStyle),
350 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+V`, // Override the accelerator since this adds new key combo in macos 353 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+V`, // Override the accelerator since this adds new key combo in macos
351 role: 'pasteAndMatchStyle', 354 role: 'pasteAndMatchStyle',
352 click() {
353 getActiveWebview().pasteAndMatchStyle();
354 },
355 }, 355 },
356 { 356 {
357 label: intl.formatMessage(menuItems.delete), 357 label: intl.formatMessage(menuItems.delete),
@@ -386,18 +386,18 @@ const _titleBarTemplateFactory = (intl, locked) => [
386 label: intl.formatMessage(menuItems.findInPage), 386 label: intl.formatMessage(menuItems.findInPage),
387 accelerator: `${cmdOrCtrlShortcutKey()}+F`, 387 accelerator: `${cmdOrCtrlShortcutKey()}+F`,
388 click() { 388 click() {
389 const service = getActiveService();
389 // Check if there is a service active 390 // Check if there is a service active
390 if (!window.ferdi.stores.services.active) return; 391 if (service) {
392 // Focus webview so find in page popup gets focused
393 service.webview.focus();
391 394
392 // Focus webview so find in page popup gets focused 395 window.ferdi.actions.service.sendIPCMessage({
393 window.ferdi.stores.services.active.webview.focus(); 396 serviceId: service.id,
394 397 channel: 'find-in-page',
395 const currentService = window.ferdi.stores.services.active.id; 398 args: {},
396 window.ferdi.actions.service.sendIPCMessage({ 399 });
397 serviceId: currentService, 400 }
398 channel: 'find-in-page',
399 args: {},
400 });
401 }, 401 },
402 }, 402 },
403 { 403 {
@@ -407,14 +407,14 @@ const _titleBarTemplateFactory = (intl, locked) => [
407 label: intl.formatMessage(menuItems.back), 407 label: intl.formatMessage(menuItems.back),
408 accelerator: `${cmdOrCtrlShortcutKey()}+Left`, 408 accelerator: `${cmdOrCtrlShortcutKey()}+Left`,
409 click() { 409 click() {
410 getActiveWebview().goBack(); 410 getActiveService().webview.goBack();
411 }, 411 },
412 }, 412 },
413 { 413 {
414 label: intl.formatMessage(menuItems.forward), 414 label: intl.formatMessage(menuItems.forward),
415 accelerator: `${cmdOrCtrlShortcutKey()}+Right`, 415 accelerator: `${cmdOrCtrlShortcutKey()}+Right`,
416 click() { 416 click() {
417 getActiveWebview().goForward(); 417 getActiveService().webview.goForward();
418 }, 418 },
419 }, 419 },
420 { 420 {
@@ -423,17 +423,15 @@ const _titleBarTemplateFactory = (intl, locked) => [
423 { 423 {
424 label: intl.formatMessage(menuItems.resetZoom), 424 label: intl.formatMessage(menuItems.resetZoom),
425 accelerator: `${cmdOrCtrlShortcutKey()}+0`, 425 accelerator: `${cmdOrCtrlShortcutKey()}+0`,
426 role: 'resetZoom',
427 click() { 426 click() {
428 getActiveWebview().setZoomLevel(0); 427 getActiveService().webview.setZoomLevel(0);
429 }, 428 },
430 }, 429 },
431 { 430 {
432 label: intl.formatMessage(menuItems.zoomIn), 431 label: intl.formatMessage(menuItems.zoomIn),
433 accelerator: `${cmdOrCtrlShortcutKey()}+plus`, 432 accelerator: `${cmdOrCtrlShortcutKey()}+plus`,
434 role: 'zoomIn',
435 click() { 433 click() {
436 const activeService = getActiveWebview(); 434 const activeService = getActiveService().webview;
437 const level = activeService.getZoomLevel(); 435 const level = activeService.getZoomLevel();
438 436
439 // level 9 =~ +300% and setZoomLevel wouldnt zoom in further 437 // level 9 =~ +300% and setZoomLevel wouldnt zoom in further
@@ -443,9 +441,8 @@ const _titleBarTemplateFactory = (intl, locked) => [
443 { 441 {
444 label: intl.formatMessage(menuItems.zoomOut), 442 label: intl.formatMessage(menuItems.zoomOut),
445 accelerator: `${cmdOrCtrlShortcutKey()}+-`, 443 accelerator: `${cmdOrCtrlShortcutKey()}+-`,
446 role: 'zoomOut',
447 click() { 444 click() {
448 const activeService = getActiveWebview(); 445 const activeService = getActiveService().webview;
449 const level = activeService.getZoomLevel(); 446 const level = activeService.getZoomLevel();
450 447
451 // level -9 =~ -50% and setZoomLevel wouldnt zoom out further 448 // level -9 =~ -50% and setZoomLevel wouldnt zoom out further
@@ -513,44 +510,49 @@ const _titleBarTemplateFactory = (intl, locked) => [
513 submenu: [ 510 submenu: [
514 { 511 {
515 label: intl.formatMessage(menuItems.learnMore), 512 label: intl.formatMessage(menuItems.learnMore),
516 click() { openExternalUrl(LIVE_API_FERDI_WEBSITE, true); }, 513 click() {
514 openExternalUrl(LIVE_API_FERDI_WEBSITE, true);
515 },
517 }, 516 },
518 { 517 {
519 label: intl.formatMessage(menuItems.changelog), 518 label: intl.formatMessage(menuItems.changelog),
520 click() { openExternalUrl(`${GITHUB_FERDI_URL}/ferdi/blob/develop/CHANGELOG.md`, true); }, 519 click() {
520 openExternalUrl(
521 `${GITHUB_FERDI_URL}/ferdi/blob/develop/CHANGELOG.md`,
522 true,
523 );
524 },
521 }, 525 },
522 { 526 {
523 label: intl.formatMessage(menuItems.importExportData), 527 label: intl.formatMessage(menuItems.importExportData),
524 click() { openExternalUrl(apiBase(false), true); }, 528 click() {
525 enabled: !locked, 529 openExternalUrl(apiBase(false), true);
526 },
527 {
528 type: 'separator',
529 },
530 {
531 label: intl.formatMessage(menuItems.announcement),
532 click: () => {
533 announcementActions.show();
534 }, 530 },
535 enabled: !locked && window.ferdi.stores.user.isLoggedIn && announcementsStore.areNewsAvailable, 531 enabled: !locked,
536 }, 532 },
537 { 533 {
538 type: 'separator', 534 type: 'separator',
539 }, 535 },
540 { 536 {
541 label: intl.formatMessage(menuItems.support), 537 label: intl.formatMessage(menuItems.support),
542 click() { openExternalUrl(`${LIVE_API_FERDI_WEBSITE}/contact`, true); }, 538 click() {
539 openExternalUrl(`${LIVE_API_FERDI_WEBSITE}/contact`, true);
540 },
543 }, 541 },
544 { 542 {
545 type: 'separator', 543 type: 'separator',
546 }, 544 },
547 { 545 {
548 label: intl.formatMessage(menuItems.tos), 546 label: intl.formatMessage(menuItems.tos),
549 click() { openExternalUrl(`${termsBase()}/terms`, true); }, 547 click() {
548 openExternalUrl(`${termsBase()}/terms`, true);
549 },
550 }, 550 },
551 { 551 {
552 label: intl.formatMessage(menuItems.privacy), 552 label: intl.formatMessage(menuItems.privacy),
553 click() { openExternalUrl(`${termsBase()}/privacy`, true); }, 553 click() {
554 openExternalUrl(`${termsBase()}/privacy`, true);
555 },
554 }, 556 },
555 ], 557 ],
556 }, 558 },
@@ -590,6 +592,23 @@ export default class FranzMenu {
590 const tpl = _titleBarTemplateFactory(intl, this.stores.settings.app.locked); 592 const tpl = _titleBarTemplateFactory(intl, this.stores.settings.app.locked);
591 const { actions } = this; 593 const { actions } = this;
592 594
595 // TODO: Extract this into a reusable component and remove the duplications
596 const quitApp = () => {
597 const yesButtonIndex = 0;
598 let selection = yesButtonIndex;
599 if (window.ferdi.stores.settings.app.confirmOnQuit) {
600 selection = dialog.showMessageBoxSync(app.mainWindow, {
601 type: 'question',
602 message: intl.formatMessage(globalMessages.quit),
603 detail: intl.formatMessage(globalMessages.quitConfirmation),
604 buttons: [intl.formatMessage(globalMessages.yes), intl.formatMessage(globalMessages.no)],
605 });
606 }
607 if (selection === yesButtonIndex) {
608 app.quit();
609 }
610 };
611
593 if (!isMac) { 612 if (!isMac) {
594 tpl[1].submenu.push({ 613 tpl[1].submenu.push({
595 label: intl.formatMessage(menuItems.autohideMenuBar), 614 label: intl.formatMessage(menuItems.autohideMenuBar),
@@ -599,7 +618,8 @@ export default class FranzMenu {
599 window.ferdi.actions.settings.update({ 618 window.ferdi.actions.settings.update({
600 type: 'app', 619 type: 'app',
601 data: { 620 data: {
602 autohideMenuBar: !window.ferdi.stores.settings.app.autohideMenuBar, 621 autohideMenuBar:
622 !window.ferdi.stores.settings.app.autohideMenuBar,
603 }, 623 },
604 }); 624 });
605 }, 625 },
@@ -607,22 +627,28 @@ export default class FranzMenu {
607 } 627 }
608 628
609 if (!this.stores.settings.app.locked) { 629 if (!this.stores.settings.app.locked) {
610 tpl[1].submenu.push({ 630 tpl[1].submenu.push(
611 type: 'separator', 631 {
612 }, { 632 type: 'separator',
613 label: intl.formatMessage(menuItems.toggleDevTools),
614 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+I`,
615 click: (menuItem, browserWindow) => {
616 browserWindow.webContents.toggleDevTools();
617 }, 633 },
618 }, { 634 {
619 label: intl.formatMessage(menuItems.toggleServiceDevTools), 635 label: intl.formatMessage(menuItems.toggleDevTools),
620 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+I`, 636 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+I`,
621 click: () => { 637 click: (menuItem, browserWindow) => {
622 this.actions.service.openDevToolsForActiveService(); 638 browserWindow.webContents.toggleDevTools();
639 },
623 }, 640 },
624 enabled: this.stores.user.isLoggedIn && this.stores.services.enabled.length > 0, 641 {
625 }); 642 label: intl.formatMessage(menuItems.toggleServiceDevTools),
643 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+I`,
644 click: () => {
645 this.actions.service.openDevToolsForActiveService();
646 },
647 enabled:
648 this.stores.user.isLoggedIn &&
649 this.stores.services.enabled.length > 0,
650 },
651 );
626 652
627 if (this.stores.features.features.isTodosEnabled) { 653 if (this.stores.features.features.isTodosEnabled) {
628 tpl[1].submenu.push({ 654 tpl[1].submenu.push({
@@ -635,49 +661,58 @@ export default class FranzMenu {
635 }); 661 });
636 } 662 }
637 663
638 tpl[1].submenu.unshift({ 664 tpl[1].submenu.unshift(
639 label: intl.formatMessage(menuItems.reloadService), 665 {
640 id: 'reloadService', // TODO: needed? 666 label: intl.formatMessage(menuItems.reloadService),
641 accelerator: `${cmdOrCtrlShortcutKey()}+R`, 667 accelerator: `${cmdOrCtrlShortcutKey()}+R`,
642 click: () => { 668 click: () => {
643 if (this.stores.user.isLoggedIn 669 if (
644 && this.stores.services.enabled.length > 0) { 670 this.stores.user.isLoggedIn &&
645 if (this.stores.services.active.recipe.id === CUSTOM_WEBSITE_RECIPE_ID) { 671 this.stores.services.enabled.length > 0
646 this.stores.services.active.webview.reload(); 672 ) {
673 if (getActiveService().recipe.id === CUSTOM_WEBSITE_RECIPE_ID) {
674 getActiveService().webview.reload();
675 } else {
676 this.actions.service.reloadActive();
677 }
647 } else { 678 } else {
648 this.actions.service.reloadActive(); 679 window.location.reload();
649 } 680 }
650 } else { 681 },
682 },
683 {
684 label: intl.formatMessage(menuItems.reloadFerdi),
685 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+R`,
686 click: () => {
651 window.location.reload(); 687 window.location.reload();
652 } 688 },
653 }, 689 },
654 }, { 690 {
655 label: intl.formatMessage(menuItems.reloadFerdi), 691 label: intl.formatMessage(menuItems.reloadTodos),
656 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+R`, 692 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+R`,
657 click: () => { 693 click: () => {
658 window.location.reload(); 694 this.actions.todos.reload();
695 },
659 }, 696 },
660 }, { 697 {
661 label: intl.formatMessage(menuItems.reloadTodos), 698 type: 'separator',
662 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+${altKey()}+R`,
663 click: () => {
664 this.actions.todos.reload();
665 }, 699 },
666 }, { 700 {
667 type: 'separator', 701 label: intl.formatMessage(menuItems.lockFerdi),
668 }, { 702 accelerator: `${lockFerdiShortcutKey()}`,
669 label: intl.formatMessage(menuItems.lockFerdi), 703 enabled:
670 accelerator: `${lockFerdiShortcutKey()}`, 704 this.stores.user.isLoggedIn &&
671 enabled: this.stores.user.isLoggedIn && this.stores.settings.app.lockingFeatureEnabled, 705 this.stores.settings.app.lockingFeatureEnabled,
672 click() { 706 click() {
673 actions.settings.update({ 707 actions.settings.update({
674 type: 'app', 708 type: 'app',
675 data: { 709 data: {
676 locked: true, 710 locked: true,
677 }, 711 },
678 }); 712 });
713 },
679 }, 714 },
680 }); 715 );
681 716
682 if (serviceTpl.length > 0) { 717 if (serviceTpl.length > 0) {
683 tpl[2].submenu = serviceTpl; 718 tpl[2].submenu = serviceTpl;
@@ -691,26 +726,34 @@ export default class FranzMenu {
691 tpl[4].submenu = this.todosMenu(); 726 tpl[4].submenu = this.todosMenu();
692 } 727 }
693 } else { 728 } else {
694 const touchIdEnabled = isMac ? (this.stores.settings.app.useTouchIdToUnlock && systemPreferences.canPromptTouchID()) : false; 729 const touchIdEnabled = isMac
730 ? this.stores.settings.app.useTouchIdToUnlock &&
731 systemPreferences.canPromptTouchID()
732 : false;
695 733
696 tpl[0].submenu.unshift({ 734 tpl[0].submenu.unshift(
697 label: intl.formatMessage(menuItems.touchId), 735 {
698 accelerator: `${lockFerdiShortcutKey()}`, 736 label: intl.formatMessage(menuItems.touchId),
699 visible: touchIdEnabled, 737 accelerator: `${lockFerdiShortcutKey()}`,
700 click() { 738 visible: touchIdEnabled,
701 systemPreferences.promptTouchID(intl.formatMessage(menuItems.touchIdPrompt)).then(() => { 739 click() {
702 actions.settings.update({ 740 systemPreferences
703 type: 'app', 741 .promptTouchID(intl.formatMessage(menuItems.touchIdPrompt))
704 data: { 742 .then(() => {
705 locked: false, 743 actions.settings.update({
706 }, 744 type: 'app',
707 }); 745 data: {
708 }); 746 locked: false,
747 },
748 });
749 });
750 },
709 }, 751 },
710 }, { 752 {
711 type: 'separator', 753 type: 'separator',
712 visible: touchIdEnabled, 754 visible: touchIdEnabled,
713 }); 755 },
756 );
714 } 757 }
715 758
716 tpl.unshift({ 759 tpl.unshift({
@@ -725,7 +768,7 @@ export default class FranzMenu {
725 type: 'separator', 768 type: 'separator',
726 }, 769 },
727 { 770 {
728 label: intl.formatMessage(menuItems.settings), 771 label: intl.formatMessage(globalMessages.settings),
729 accelerator: `${settingsShortcutKey()}`, 772 accelerator: `${settingsShortcutKey()}`,
730 click: () => { 773 click: () => {
731 this.actions.ui.openSettings({ path: 'app' }); 774 this.actions.ui.openSettings({ path: 'app' });
@@ -768,18 +811,15 @@ export default class FranzMenu {
768 type: 'separator', 811 type: 'separator',
769 }, 812 },
770 { 813 {
771 label: intl.formatMessage(menuItems.quit), 814 label: intl.formatMessage(globalMessages.quit),
772 role: 'quit', 815 accelerator: `${cmdOrCtrlShortcutKey()}+Q`,
773 click() { 816 click: quitApp,
774 app.quit();
775 },
776 }, 817 },
777 ], 818 ],
778 }); 819 });
779 820
780 const about = { 821 const about = {
781 label: intl.formatMessage(menuItems.about), 822 label: intl.formatMessage(menuItems.about),
782 role: 'about',
783 click: () => { 823 click: () => {
784 dialog.showMessageBox({ 824 dialog.showMessageBox({
785 type: 'info', 825 type: 'info',
@@ -829,18 +869,18 @@ export default class FranzMenu {
829 type: 'separator', 869 type: 'separator',
830 }, 870 },
831 { 871 {
832 label: intl.formatMessage(menuItems.quit), 872 label: intl.formatMessage(globalMessages.quit),
833 role: 'quit',
834 accelerator: `${cmdOrCtrlShortcutKey()}+Q`, 873 accelerator: `${cmdOrCtrlShortcutKey()}+Q`,
835 click() { 874 click: quitApp,
836 app.quit();
837 },
838 }, 875 },
839 ]; 876 ];
840 877
841 tpl[tpl.length - 1].submenu.push({ 878 tpl[tpl.length - 1].submenu.push(
842 type: 'separator', 879 {
843 }, about); 880 type: 'separator',
881 },
882 about,
883 );
844 } 884 }
845 885
846 if (!this.stores.settings.app.locked) { 886 if (!this.stores.settings.app.locked) {
@@ -856,9 +896,12 @@ export default class FranzMenu {
856 tpl[5].submenu = this.todosMenu(); 896 tpl[5].submenu = this.todosMenu();
857 } 897 }
858 898
859 tpl[tpl.length - 1].submenu.push({ 899 tpl[tpl.length - 1].submenu.push(
860 type: 'separator', 900 {
861 }, ...this.debugMenu()); 901 type: 'separator',
902 },
903 ...this.debugMenu(),
904 );
862 } 905 }
863 this.currentTemplate = tpl; 906 this.currentTemplate = tpl;
864 const menu = Menu.buildFromTemplate(tpl); 907 const menu = Menu.buildFromTemplate(tpl);
@@ -872,73 +915,95 @@ export default class FranzMenu {
872 const menu = []; 915 const menu = [];
873 const cmdAltShortcutsVisibile = !isLinux; 916 const cmdAltShortcutsVisibile = !isLinux;
874 917
875 menu.push({ 918 menu.push(
876 label: intl.formatMessage(menuItems.addNewService), 919 {
877 accelerator: `${addNewServiceShortcutKey()}`, 920 label: intl.formatMessage(menuItems.addNewService),
878 click: () => { 921 accelerator: `${addNewServiceShortcutKey()}`,
879 this.actions.ui.openSettings({ path: 'recipes' }); 922 click: () => {
923 this.actions.ui.openSettings({ path: 'recipes' });
924 },
880 }, 925 },
881 }, { 926 {
882 type: 'separator', 927 type: 'separator',
883 }, { 928 },
884 label: intl.formatMessage(menuItems.activateNextService), 929 {
885 accelerator: `${cmdOrCtrlShortcutKey()}+tab`, 930 label: intl.formatMessage(menuItems.activateNextService),
886 click: () => this.actions.service.setActiveNext(), 931 accelerator: `${cmdOrCtrlShortcutKey()}+tab`,
887 visible: !cmdAltShortcutsVisibile, 932 click: () => this.actions.service.setActiveNext(),
888 }, { 933 visible: !cmdAltShortcutsVisibile,
889 label: intl.formatMessage(menuItems.activateNextService), 934 },
890 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+right`, 935 {
891 click: () => this.actions.service.setActiveNext(), 936 label: intl.formatMessage(menuItems.activateNextService),
892 visible: cmdAltShortcutsVisibile, 937 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+right`,
893 }, { 938 click: () => this.actions.service.setActiveNext(),
894 label: intl.formatMessage(menuItems.activatePreviousService), 939 visible: cmdAltShortcutsVisibile,
895 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+tab`, 940 },
896 click: () => this.actions.service.setActivePrev(), 941 {
897 visible: !cmdAltShortcutsVisibile, 942 label: intl.formatMessage(menuItems.activatePreviousService),
898 }, { 943 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+tab`,
899 label: intl.formatMessage(menuItems.activatePreviousService), 944 click: () => this.actions.service.setActivePrev(),
900 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+left`, 945 visible: !cmdAltShortcutsVisibile,
901 click: () => this.actions.service.setActivePrev(), 946 },
902 visible: cmdAltShortcutsVisibile, 947 {
903 }, { 948 label: intl.formatMessage(menuItems.activatePreviousService),
904 label: intl.formatMessage( 949 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+left`,
905 settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, 950 click: () => this.actions.service.setActivePrev(),
906 ).replace('&', '&&'), 951 visible: cmdAltShortcutsVisibile,
907 accelerator: `${muteFerdiShortcutKey()}`, 952 },
908 click: () => this.actions.app.toggleMuteApp(), 953 {
909 }, { 954 label: intl
910 type: 'separator', 955 .formatMessage(
911 }); 956 settings.all.app.isAppMuted
912 957 ? menuItems.unmuteApp
913 services.allDisplayed.forEach((service, i) => (menu.push({ 958 : menuItems.muteApp,
914 label: this._getServiceName(service), 959 )
915 accelerator: i < 9 ? `${cmdOrCtrlShortcutKey()}+${i + 1}` : null, 960 .replace('&', '&&'),
916 type: 'radio', 961 accelerator: `${muteFerdiShortcutKey()}`,
917 checked: service.isActive, 962 click: () => this.actions.app.toggleMuteApp(),
918 click: () => { 963 },
919 this.actions.service.setActive({ serviceId: service.id }); 964 {
920 965 type: 'separator',
921 if (isMac && i === 0) {
922 app.mainWindow.restore();
923 }
924 }, 966 },
925 }))); 967 );
926 968
927 if (services.active && services.active.recipe.id === CUSTOM_WEBSITE_RECIPE_ID) { 969 services.allDisplayed.forEach((service, i) =>
928 menu.push({ 970 menu.push({
929 type: 'separator', 971 label: this._getServiceName(service),
930 }, { 972 accelerator: i < 9 ? `${cmdOrCtrlShortcutKey()}+${i + 1}` : null,
931 label: intl.formatMessage(menuItems.serviceGoHome), 973 type: 'radio',
932 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+H`, 974 checked: service.isActive,
933 click: () => this.actions.service.reloadActive(), 975 click: () => {
934 }); 976 this.actions.service.setActive({ serviceId: service.id });
977
978 if (isMac && i === 0) {
979 app.mainWindow.restore();
980 }
981 },
982 }),
983 );
984
985 if (
986 services.active &&
987 services.active.recipe.id === CUSTOM_WEBSITE_RECIPE_ID
988 ) {
989 menu.push(
990 {
991 type: 'separator',
992 },
993 {
994 label: intl.formatMessage(menuItems.serviceGoHome),
995 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+H`,
996 click: () => this.actions.service.reloadActive(),
997 },
998 );
935 } 999 }
936 1000
937 return menu; 1001 return menu;
938 } 1002 }
939 1003
940 workspacesMenu() { 1004 workspacesMenu() {
941 const { workspaces, activeWorkspace, isWorkspaceDrawerOpen } = workspaceStore; 1005 const { workspaces, activeWorkspace, isWorkspaceDrawerOpen } =
1006 workspaceStore;
942 const { intl } = window.ferdi; 1007 const { intl } = window.ferdi;
943 const menu = []; 1008 const menu = [];
944 1009
@@ -954,9 +1019,9 @@ export default class FranzMenu {
954 1019
955 // Open workspace drawer: 1020 // Open workspace drawer:
956 if (!this.stores.settings.app.alwaysShowWorkspaces) { 1021 if (!this.stores.settings.app.alwaysShowWorkspaces) {
957 const drawerLabel = ( 1022 const drawerLabel = isWorkspaceDrawerOpen
958 isWorkspaceDrawerOpen ? menuItems.closeWorkspaceDrawer : menuItems.openWorkspaceDrawer 1023 ? menuItems.closeWorkspaceDrawer
959 ); 1024 : menuItems.openWorkspaceDrawer;
960 menu.push({ 1025 menu.push({
961 label: intl.formatMessage(drawerLabel), 1026 label: intl.formatMessage(drawerLabel),
962 accelerator: `${workspaceToggleShortcutKey()}`, 1027 accelerator: `${workspaceToggleShortcutKey()}`,
@@ -983,15 +1048,18 @@ export default class FranzMenu {
983 }); 1048 });
984 1049
985 // Workspace items 1050 // Workspace items
986 workspaces.forEach((workspace, i) => menu.push({ 1051 workspaces.forEach((workspace, i) =>
987 label: workspace.name, 1052 menu.push({
988 accelerator: i < 9 ? `${cmdOrCtrlShortcutKey()}+${altKey()}+${i + 1}` : null, 1053 label: workspace.name,
989 type: 'radio', 1054 accelerator:
990 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false, 1055 i < 9 ? `${cmdOrCtrlShortcutKey()}+${altKey()}+${i + 1}` : null,
991 click: () => { 1056 type: 'radio',
992 workspaceActions.activate({ workspace }); 1057 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false,
993 }, 1058 click: () => {
994 })); 1059 workspaceActions.activate({ workspace });
1060 },
1061 }),
1062 );
995 1063
996 return menu; 1064 return menu;
997 } 1065 }
@@ -1001,7 +1069,9 @@ export default class FranzMenu {
1001 const { intl } = window.ferdi; 1069 const { intl } = window.ferdi;
1002 const menu = []; 1070 const menu = [];
1003 1071
1004 const drawerLabel = isTodosPanelVisible ? menuItems.closeTodosDrawer : menuItems.openTodosDrawer; 1072 const drawerLabel = isTodosPanelVisible
1073 ? menuItems.closeTodosDrawer
1074 : menuItems.openTodosDrawer;
1005 1075
1006 menu.push({ 1076 menu.push({
1007 label: intl.formatMessage(drawerLabel), 1077 label: intl.formatMessage(drawerLabel),
@@ -1013,14 +1083,17 @@ export default class FranzMenu {
1013 }); 1083 });
1014 1084
1015 if (!isFeatureEnabledByUser) { 1085 if (!isFeatureEnabledByUser) {
1016 menu.push({ 1086 menu.push(
1017 type: 'separator', 1087 {
1018 }, { 1088 type: 'separator',
1019 label: intl.formatMessage(menuItems.enableTodos),
1020 click: () => {
1021 todoActions.toggleTodosFeatureVisibility();
1022 }, 1089 },
1023 }); 1090 {
1091 label: intl.formatMessage(menuItems.enableTodos),
1092 click: () => {
1093 todoActions.toggleTodosFeatureVisibility();
1094 },
1095 },
1096 );
1024 } 1097 }
1025 1098
1026 return menu; 1099 return menu;
@@ -1029,28 +1102,31 @@ export default class FranzMenu {
1029 debugMenu() { 1102 debugMenu() {
1030 const { intl } = window.ferdi; 1103 const { intl } = window.ferdi;
1031 1104
1032 return [{ 1105 return [
1033 label: intl.formatMessage(menuItems.debugInfo), 1106 {
1034 click: () => { 1107 label: intl.formatMessage(menuItems.debugInfo),
1035 const { debugInfo } = this.stores.app; 1108 click: () => {
1109 const { debugInfo } = this.stores.app;
1036 1110
1037 clipboard.write({ 1111 clipboard.write({
1038 text: JSON.stringify(debugInfo), 1112 text: JSON.stringify(debugInfo),
1039 }); 1113 });
1040 1114
1041 this.actions.app.notify({ 1115 this.actions.app.notify({
1042 title: intl.formatMessage(menuItems.debugInfoCopiedHeadline), 1116 title: intl.formatMessage(menuItems.debugInfoCopiedHeadline),
1043 options: { 1117 options: {
1044 body: intl.formatMessage(menuItems.debugInfoCopiedBody), 1118 body: intl.formatMessage(menuItems.debugInfoCopiedBody),
1045 }, 1119 },
1046 }); 1120 });
1121 },
1047 }, 1122 },
1048 }, { 1123 {
1049 label: intl.formatMessage(menuItems.publishDebugInfo), 1124 label: intl.formatMessage(menuItems.publishDebugInfo),
1050 click: () => { 1125 click: () => {
1051 window.ferdi.features.publishDebugInfo.state.isModalVisible = true; 1126 window.ferdi.features.publishDebugInfo.state.isModalVisible = true;
1127 },
1052 }, 1128 },
1053 }]; 1129 ];
1054 } 1130 }
1055 1131
1056 _getServiceName(service) { 1132 _getServiceName(service) {
diff --git a/src/lib/Tray.js b/src/lib/Tray.js
index f5970f7e7..c897d597a 100644
--- a/src/lib/Tray.js
+++ b/src/lib/Tray.js
@@ -1,5 +1,5 @@
1import { 1import {
2 app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, 2 app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, dialog,
3} from 'electron'; 3} from 'electron';
4import { join } from 'path'; 4import { join } from 'path';
5import macosVersion from 'macos-version'; 5import macosVersion from 'macos-version';
@@ -43,9 +43,7 @@ export default class TrayIcon {
43 }, 43 },
44 { 44 {
45 label: 'Quit Ferdi', 45 label: 'Quit Ferdi',
46 click() { 46 click: this.quitApp,
47 app.quit();
48 },
49 }, 47 },
50 ]; 48 ];
51 49
@@ -178,4 +176,22 @@ export default class TrayIcon {
178 __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`, 176 __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`,
179 )); 177 ));
180 } 178 }
179
180 // TODO: Extract this into a reusable component and remove the duplications
181 quitApp = () => {
182 const yesButtonIndex = 0;
183 let selection = yesButtonIndex;
184 if (window.ferdi.stores.settings.app.confirmOnQuit) {
185 selection = dialog.showMessageBoxSync(app.mainWindow, {
186 // TODO: Externalize strings
187 type: 'question',
188 message: 'Quit',
189 detail: 'Do you really want to quit Ferdi?',
190 buttons: ['Yes', 'No'],
191 });
192 }
193 if (selection === yesButtonIndex) {
194 app.quit();
195 }
196 };
181} 197}
diff --git a/src/models/News.ts b/src/models/News.ts
index 3db812937..a6ff86dda 100644
--- a/src/models/News.ts
+++ b/src/models/News.ts
@@ -1,5 +1,7 @@
1// @flow 1// @flow
2 2
3import { ifUndefinedString, ifUndefinedBoolean } from '../jsUtils';
4
3interface INews { 5interface INews {
4 id: string; 6 id: string;
5 message: string; 7 message: string;
@@ -17,13 +19,17 @@ export default class News {
17 sticky: boolean = false; 19 sticky: boolean = false;
18 20
19 constructor(data: INews) { 21 constructor(data: INews) {
22 if (!data) {
23 throw Error('News config not valid');
24 }
25
20 if (!data.id) { 26 if (!data.id) {
21 throw Error('News requires Id'); 27 throw Error('News requires Id');
22 } 28 }
23 29
24 this.id = data.id; 30 this.id = data.id;
25 this.message = data.message || this.message; 31 this.message = ifUndefinedString(data.message, this.message);
26 this.type = data.type || this.type; 32 this.type = ifUndefinedString(data.type, this.type);
27 this.sticky = data.sticky !== undefined ? data.sticky : this.sticky; 33 this.sticky = ifUndefinedBoolean(data.sticky, this.sticky);
28 } 34 }
29} 35}
diff --git a/src/models/RecipePreview.ts b/src/models/RecipePreview.ts
index 351ecf765..4d2cc8450 100644
--- a/src/models/RecipePreview.ts
+++ b/src/models/RecipePreview.ts
@@ -1,5 +1,13 @@
1// @flow 1// @flow
2 2
3interface IRecipePreview {
4 id: string;
5 name: string;
6 icon: string;
7 featured: boolean;
8 aliases: string[];
9}
10
3export default class RecipePreview { 11export default class RecipePreview {
4 id: string = ''; 12 id: string = '';
5 13
@@ -11,9 +19,13 @@ export default class RecipePreview {
11 19
12 aliases: string[] = []; 20 aliases: string[] = [];
13 21
14 constructor(data: { id: any; }) { 22 constructor(data: IRecipePreview) {
23 if (!data) {
24 throw Error('RecipePreview config not valid');
25 }
26
15 if (!data.id) { 27 if (!data.id) {
16 throw Error('RecipePreview requires Id'); 28 throw Error(`RecipePreview '${data.name}' requires Id`);
17 } 29 }
18 30
19 Object.assign(this, data); 31 Object.assign(this, data);
diff --git a/src/models/Service.js b/src/models/Service.js
index 4b78b9a40..4ee054b2b 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -8,6 +8,7 @@ import { todosStore } from '../features/todos';
8import { isValidExternalURL } from '../helpers/url-helpers'; 8import { isValidExternalURL } from '../helpers/url-helpers';
9import UserAgent from './UserAgent'; 9import UserAgent from './UserAgent';
10import { DEFAULT_SERVICE_ORDER } from '../config'; 10import { DEFAULT_SERVICE_ORDER } from '../config';
11import { ifUndefinedString, ifUndefinedBoolean, ifUndefinedNumber } from '../jsUtils';
11 12
12const debug = require('debug')('Ferdi:Service'); 13const debug = require('debug')('Ferdi:Service');
13 14
@@ -101,47 +102,30 @@ export default class Service {
101 throw Error('Service recipe not valid'); 102 throw Error('Service recipe not valid');
102 } 103 }
103 104
104 this.userAgentModel = new UserAgent(recipe.overrideUserAgent); 105 this.recipe = recipe;
105
106 this.id = data.id || this.id;
107 this.name = data.name || this.name;
108 this.team = data.team || this.team;
109 this.customUrl = data.customUrl || this.customUrl;
110 // this.customIconUrl = data.customIconUrl || this.customIconUrl;
111 this.iconUrl = data.iconUrl || this.iconUrl;
112
113 this.order = data.order !== undefined
114 ? data.order : this.order;
115
116 this.isEnabled = data.isEnabled !== undefined
117 ? data.isEnabled : this.isEnabled;
118
119 this.isNotificationEnabled = data.isNotificationEnabled !== undefined
120 ? data.isNotificationEnabled : this.isNotificationEnabled;
121
122 this.isBadgeEnabled = data.isBadgeEnabled !== undefined
123 ? data.isBadgeEnabled : this.isBadgeEnabled;
124
125 this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined
126 ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled;
127
128 this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted;
129
130 this.isDarkModeEnabled = data.isDarkModeEnabled !== undefined ? data.isDarkModeEnabled : this.isDarkModeEnabled;
131
132 this.darkReaderSettings = data.darkReaderSettings !== undefined ? data.darkReaderSettings : this.darkReaderSettings;
133
134 this.hasCustomUploadedIcon = data.hasCustomIcon !== undefined ? data.hasCustomIcon : this.hasCustomUploadedIcon;
135
136 this.proxy = data.proxy !== undefined ? data.proxy : this.proxy;
137
138 this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage;
139
140 this.userAgentPref = data.userAgentPref !== undefined ? data.userAgentPref : this.userAgentPref;
141 106
142 this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled; 107 this.userAgentModel = new UserAgent(recipe.overrideUserAgent);
143 108
144 this.recipe = recipe; 109 this.id = ifUndefinedString(data.id, this.id);
110 this.name = ifUndefinedString(data.name, this.name);
111 this.team = ifUndefinedString(data.team, this.team);
112 this.customUrl = ifUndefinedString(data.customUrl, this.customUrl);
113 // this.customIconUrl = ifUndefinedString(data.customIconUrl, this.customIconUrl);
114 this.iconUrl = ifUndefinedString(data.iconUrl, this.iconUrl);
115
116 this.order = ifUndefinedNumber(data.order, this.order);
117 this.isEnabled = ifUndefinedBoolean(data.isEnabled, this.isEnabled);
118 this.isNotificationEnabled = ifUndefinedBoolean(data.isNotificationEnabled, this.isNotificationEnabled);
119 this.isBadgeEnabled = ifUndefinedBoolean(data.isBadgeEnabled, this.isBadgeEnabled);
120 this.isIndirectMessageBadgeEnabled = ifUndefinedBoolean(data.isIndirectMessageBadgeEnabled, this.isIndirectMessageBadgeEnabled);
121 this.isMuted = ifUndefinedBoolean(data.isMuted, this.isMuted);
122 this.isDarkModeEnabled = ifUndefinedBoolean(data.isDarkModeEnabled, this.isDarkModeEnabled);
123 this.darkReaderSettings = ifUndefinedString(data.darkReaderSettings, this.darkReaderSettings);
124 this.hasCustomUploadedIcon = ifUndefinedBoolean(data.hasCustomIcon, this.hasCustomUploadedIcon);
125 this.proxy = ifUndefinedString(data.proxy, this.proxy);
126 this.spellcheckerLanguage = ifUndefinedString(data.spellcheckerLanguage, this.spellcheckerLanguage);
127 this.userAgentPref = ifUndefinedString(data.userAgentPref, this.userAgentPref);
128 this.isHibernationEnabled = ifUndefinedBoolean(data.isHibernationEnabled, this.isHibernationEnabled);
145 129
146 // Check if "Hibernate on Startup" is enabled and hibernate all services except active one 130 // Check if "Hibernate on Startup" is enabled and hibernate all services except active one
147 const { hibernateOnStartup } = window.ferdi.stores.settings.app; 131 const { hibernateOnStartup } = window.ferdi.stores.settings.app;
@@ -261,7 +245,7 @@ export default class Service {
261 245
262 this.userAgentModel.setWebviewReference(this.webview); 246 this.userAgentModel.setWebviewReference(this.webview);
263 247
264 // If the recipe has implemented modifyRequestHeaders, 248 // If the recipe has implemented 'modifyRequestHeaders',
265 // Send those headers to ipcMain so that it can be set in session 249 // Send those headers to ipcMain so that it can be set in session
266 if (typeof this.recipe.modifyRequestHeaders === 'function') { 250 if (typeof this.recipe.modifyRequestHeaders === 'function') {
267 const modifiedRequestHeaders = this.recipe.modifyRequestHeaders(); 251 const modifiedRequestHeaders = this.recipe.modifyRequestHeaders();
@@ -274,6 +258,18 @@ export default class Service {
274 debug(this.name, 'modifyRequestHeaders is not defined in the recipe'); 258 debug(this.name, 'modifyRequestHeaders is not defined in the recipe');
275 } 259 }
276 260
261 // if the recipe has implemented 'knownCertificateHosts'
262 if (typeof this.recipe.knownCertificateHosts === 'function') {
263 const knownHosts = this.recipe.knownCertificateHosts();
264 debug(this.name, 'knownCertificateHosts', knownHosts);
265 ipcRenderer.send('knownCertificateHosts', {
266 knownHosts,
267 serviceId: this.id,
268 });
269 } else {
270 debug(this.name, 'knownCertificateHosts is not defined in the recipe');
271 }
272
277 this.webview.addEventListener('ipc-message', async (e) => { 273 this.webview.addEventListener('ipc-message', async (e) => {
278 if (e.channel === 'inject-js-unsafe') { 274 if (e.channel === 'inject-js-unsafe') {
279 await Promise.all(e.args.map((script) => this.webview.executeJavaScript(`"use strict"; (() => { ${script} })();`))); 275 await Promise.all(e.args.map((script) => this.webview.executeJavaScript(`"use strict"; (() => { ${script} })();`)));
diff --git a/src/models/User.ts b/src/models/User.ts
index 771d11955..54a6838df 100644
--- a/src/models/User.ts
+++ b/src/models/User.ts
@@ -42,6 +42,10 @@ export default class User {
42 @observable team = {}; 42 @observable team = {};
43 43
44 constructor(data: IUser) { 44 constructor(data: IUser) {
45 if (!data) {
46 throw Error('User config not valid');
47 }
48
45 if (!data.id) { 49 if (!data.id) {
46 throw Error('User requires Id'); 50 throw Error('User requires Id');
47 } 51 }
diff --git a/src/routes.js b/src/routes.js
index d67ccee13..4d32a59e0 100644
--- a/src/routes.js
+++ b/src/routes.js
@@ -1,9 +1,7 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import { 4import { Router, Route, IndexRedirect } from 'react-router';
5 Router, Route, IndexRedirect,
6} from 'react-router';
7 5
8import AppLayoutContainer from './containers/layout/AppLayoutContainer'; 6import AppLayoutContainer from './containers/layout/AppLayoutContainer';
9import SettingsWindow from './containers/settings/SettingsWindow'; 7import SettingsWindow from './containers/settings/SettingsWindow';
@@ -29,38 +27,39 @@ import AuthLayoutContainer from './containers/auth/AuthLayoutContainer';
29import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen'; 27import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen';
30import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen'; 28import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen';
31import { WORKSPACES_ROUTES } from './features/workspaces/constants'; 29import { WORKSPACES_ROUTES } from './features/workspaces/constants';
32import AnnouncementScreen from './features/announcements/components/AnnouncementScreen';
33import { ANNOUNCEMENTS_ROUTES } from './features/announcements/constants';
34 30
35import SettingsStore from './stores/SettingsStore'; 31import SettingsStore from './stores/SettingsStore';
36 32
37export default @inject('stores', 'actions') @observer class Routes extends Component { 33export default
34@inject('stores', 'actions')
35@observer
36class Routes extends Component {
38 render() { 37 render() {
39 const { 38 const { locked } = this.props.stores.settings.app;
40 locked,
41 lockingFeatureEnabled,
42 } = this.props.stores.settings.app;
43 39
44 const { history } = this.props; 40 const { history } = this.props;
45 41
46 if (lockingFeatureEnabled && locked) { 42 if (locked) {
47 return ( 43 return <LockedScreen />;
48 <LockedScreen />
49 );
50 } 44 }
51 45
52 return ( 46 return (
53 <Router history={history}> 47 <Router history={history}>
54 <Route path="/" component={AppLayoutContainer}> 48 <Route path="/" component={AppLayoutContainer}>
55 <Route path={ANNOUNCEMENTS_ROUTES.TARGET} component={AnnouncementScreen} />
56 <Route path="/settings" component={SettingsWindow}> 49 <Route path="/settings" component={SettingsWindow}>
57 <IndexRedirect to="/settings/recipes" /> 50 <IndexRedirect to="/settings/recipes" />
58 <Route path="/settings/recipes" component={RecipesScreen} /> 51 <Route path="/settings/recipes" component={RecipesScreen} />
59 <Route path="/settings/recipes/:filter" component={RecipesScreen} /> 52 <Route path="/settings/recipes/:filter" component={RecipesScreen} />
60 <Route path="/settings/services" component={ServicesScreen} /> 53 <Route path="/settings/services" component={ServicesScreen} />
61 <Route path="/settings/services/:action/:id" component={EditServiceScreen} /> 54 <Route
55 path="/settings/services/:action/:id"
56 component={EditServiceScreen}
57 />
62 <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} /> 58 <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} />
63 <Route path={WORKSPACES_ROUTES.EDIT} component={EditWorkspaceScreen} /> 59 <Route
60 path={WORKSPACES_ROUTES.EDIT}
61 component={EditWorkspaceScreen}
62 />
64 <Route path="/settings/user" component={AccountScreen} /> 63 <Route path="/settings/user" component={AccountScreen} />
65 <Route path="/settings/user/edit" component={EditUserScreen} /> 64 <Route path="/settings/user/edit" component={EditUserScreen} />
66 <Route path="/settings/team" component={TeamScreen} /> 65 <Route path="/settings/team" component={TeamScreen} />
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index cb8c71268..469e7519e 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -48,7 +48,8 @@ const autoLauncher = new AutoLaunch({
48 path: executablePath, 48 path: executablePath,
49}); 49});
50 50
51const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions'; 51const CATALINA_NOTIFICATION_HACK_KEY =
52 '_temp_askedForCatalinaNotificationPermissions';
52 53
53export default class AppStore extends Store { 54export default class AppStore extends Store {
54 updateStatusTypes = { 55 updateStatusTypes = {
@@ -92,8 +93,6 @@ export default class AppStore extends Store {
92 93
93 @observable isFocused = true; 94 @observable isFocused = true;
94 95
95 @observable nextAppReleaseVersion = null;
96
97 dictionaries = []; 96 dictionaries = [];
98 97
99 fetchDataInterval = null; 98 fetchDataInterval = null;
@@ -175,7 +174,6 @@ export default class AppStore extends Store {
175 ipcRenderer.on('autoUpdate', (event, data) => { 174 ipcRenderer.on('autoUpdate', (event, data) => {
176 if (data.available) { 175 if (data.available) {
177 this.updateStatus = this.updateStatusTypes.AVAILABLE; 176 this.updateStatus = this.updateStatusTypes.AVAILABLE;
178 this.nextAppReleaseVersion = data.version;
179 if (isMac) { 177 if (isMac) {
180 app.dock.bounce(); 178 app.dock.bounce();
181 } 179 }
@@ -236,8 +234,8 @@ export default class AppStore extends Store {
236 this.actions.service.resetLastPollTimer(); 234 this.actions.service.resetLastPollTimer();
237 235
238 if ( 236 if (
239 this.timeSuspensionStart.add(10, 'm').isBefore(moment()) 237 this.timeSuspensionStart.add(10, 'm').isBefore(moment()) &&
240 && this.stores.settings.app.get('reloadAfterResume') 238 this.stores.settings.app.get('reloadAfterResume')
241 ) { 239 ) {
242 debug('Reloading services, user info and features'); 240 debug('Reloading services, user info and features');
243 241
@@ -283,15 +281,15 @@ export default class AppStore extends Store {
283 ferdi: { 281 ferdi: {
284 version: ferdiVersion, 282 version: ferdiVersion,
285 electron: electronVersion, 283 electron: electronVersion,
286 installedRecipes: this.stores.recipes.all.map((recipe) => ({ 284 installedRecipes: this.stores.recipes.all.map(recipe => ({
287 id: recipe.id, 285 id: recipe.id,
288 version: recipe.version, 286 version: recipe.version,
289 })), 287 })),
290 devRecipes: this.stores.recipePreviews.dev.map((recipe) => ({ 288 devRecipes: this.stores.recipePreviews.dev.map(recipe => ({
291 id: recipe.id, 289 id: recipe.id,
292 version: recipe.version, 290 version: recipe.version,
293 })), 291 })),
294 services: this.stores.services.all.map((service) => ({ 292 services: this.stores.services.all.map(service => ({
295 id: service.id, 293 id: service.id,
296 recipe: service.recipe.id, 294 recipe: service.recipe.id,
297 isAttached: service.isAttached, 295 isAttached: service.isAttached,
@@ -302,7 +300,7 @@ export default class AppStore extends Store {
302 isDarkModeEnabled: service.isDarkModeEnabled, 300 isDarkModeEnabled: service.isDarkModeEnabled,
303 })), 301 })),
304 messages: this.stores.globalError.messages, 302 messages: this.stores.globalError.messages,
305 workspaces: this.stores.workspaces.workspaces.map((workspace) => ({ 303 workspaces: this.stores.workspaces.workspaces.map(workspace => ({
306 id: workspace.id, 304 id: workspace.id,
307 services: workspace.services, 305 services: workspace.services,
308 })), 306 })),
@@ -315,9 +313,7 @@ export default class AppStore extends Store {
315 } 313 }
316 314
317 // Actions 315 // Actions
318 @action _notify({ 316 @action _notify({ title, options, notificationId, serviceId = null }) {
319 title, options, notificationId, serviceId = null,
320 }) {
321 if (this.stores.settings.all.app.isAppMuted) return; 317 if (this.stores.settings.all.app.isAppMuted) return;
322 318
323 // TODO: is there a simple way to use blobs for notifications without storing them on disk? 319 // TODO: is there a simple way to use blobs for notifications without storing them on disk?
@@ -359,8 +355,8 @@ export default class AppStore extends Store {
359 if (indicator === 0 && unreadIndirectMessageCount !== 0) { 355 if (indicator === 0 && unreadIndirectMessageCount !== 0) {
360 indicator = '•'; 356 indicator = '•';
361 } else if ( 357 } else if (
362 unreadDirectMessageCount === 0 358 unreadDirectMessageCount === 0 &&
363 && unreadIndirectMessageCount === 0 359 unreadIndirectMessageCount === 0
364 ) { 360 ) {
365 indicator = 0; 361 indicator = 0;
366 } else { 362 } else {
@@ -441,22 +437,25 @@ export default class AppStore extends Store {
441 const clearAppCache = this.clearAppCacheRequest.execute(); 437 const clearAppCache = this.clearAppCacheRequest.execute();
442 const allServiceIds = await getServiceIdsFromPartitions(); 438 const allServiceIds = await getServiceIdsFromPartitions();
443 const allOrphanedServiceIds = allServiceIds.filter( 439 const allOrphanedServiceIds = allServiceIds.filter(
444 (id) => !this.stores.services.all.find( 440 id =>
445 (s) => id.replace('service-', '') === s.id, 441 !this.stores.services.all.find(
446 ), 442 s => id.replace('service-', '') === s.id,
443 ),
447 ); 444 );
448 445
449 try { 446 try {
450 await Promise.all( 447 await Promise.all(
451 allOrphanedServiceIds.map((id) => removeServicePartitionDirectory(id)), 448 allOrphanedServiceIds.map(id => removeServicePartitionDirectory(id)),
452 ); 449 );
453 } catch (ex) { 450 } catch (ex) {
454 console.log('Error while deleting service partition directory - ', ex); 451 console.log('Error while deleting service partition directory - ', ex);
455 } 452 }
456 await Promise.all( 453 await Promise.all(
457 this.stores.services.all.map((s) => this.actions.service.clearCache({ 454 this.stores.services.all.map(s =>
458 serviceId: s.id, 455 this.actions.service.clearCache({
459 })), 456 serviceId: s.id,
457 }),
458 ),
460 ); 459 );
461 460
462 await clearAppCache._promise; 461 await clearAppCache._promise;
@@ -488,9 +487,9 @@ export default class AppStore extends Store {
488 } 487 }
489 488
490 if ( 489 if (
491 locale 490 locale &&
492 && Object.prototype.hasOwnProperty.call(locales, locale) 491 Object.prototype.hasOwnProperty.call(locales, locale) &&
493 && locale !== this.locale 492 locale !== this.locale
494 ) { 493 ) {
495 this.locale = locale; 494 this.locale = locale;
496 } else if (!locale) { 495 } else if (!locale) {
@@ -568,8 +567,8 @@ export default class AppStore extends Store {
568 const dnd = await ipcRenderer.invoke('get-dnd'); 567 const dnd = await ipcRenderer.invoke('get-dnd');
569 debug('Do not disturb mode is', dnd); 568 debug('Do not disturb mode is', dnd);
570 if ( 569 if (
571 dnd !== this.stores.settings.all.app.isAppMuted 570 dnd !== this.stores.settings.all.app.isAppMuted &&
572 && !this.isSystemMuteOverridden 571 !this.isSystemMuteOverridden
573 ) { 572 ) {
574 this.actions.app.muteApp({ 573 this.actions.app.muteApp({
575 isMuted: dnd, 574 isMuted: dnd,
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index 0dff2fda2..1d50dd714 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -1,8 +1,4 @@
1import { 1import { computed, observable, runInAction } from 'mobx';
2 computed,
3 observable,
4 runInAction,
5} from 'mobx';
6 2
7import Store from './lib/Store'; 3import Store from './lib/Store';
8import CachedRequest from './lib/CachedRequest'; 4import CachedRequest from './lib/CachedRequest';
@@ -13,7 +9,6 @@ import workspaces from '../features/workspaces';
13import quickSwitch from '../features/quickSwitch'; 9import quickSwitch from '../features/quickSwitch';
14import nightlyBuilds from '../features/nightlyBuilds'; 10import nightlyBuilds from '../features/nightlyBuilds';
15import publishDebugInfo from '../features/publishDebugInfo'; 11import publishDebugInfo from '../features/publishDebugInfo';
16import announcements from '../features/announcements';
17import settingsWS from '../features/settingsWS'; 12import settingsWS from '../features/settingsWS';
18import communityRecipes from '../features/communityRecipes'; 13import communityRecipes from '../features/communityRecipes';
19import todos from '../features/todos'; 14import todos from '../features/todos';
@@ -22,11 +17,17 @@ import appearance from '../features/appearance';
22import { DEFAULT_FEATURES_CONFIG } from '../config'; 17import { DEFAULT_FEATURES_CONFIG } from '../config';
23 18
24export default class FeaturesStore extends Store { 19export default class FeaturesStore extends Store {
25 @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default'); 20 @observable defaultFeaturesRequest = new CachedRequest(
21 this.api.features,
22 'default',
23 );
26 24
27 @observable featuresRequest = new CachedRequest(this.api.features, 'features'); 25 @observable featuresRequest = new CachedRequest(
26 this.api.features,
27 'features',
28 );
28 29
29 @observable features = ({ ...DEFAULT_FEATURES_CONFIG }); 30 @observable features = { ...DEFAULT_FEATURES_CONFIG };
30 31
31 async setup() { 32 async setup() {
32 this.registerReactions([ 33 this.registerReactions([
@@ -39,7 +40,9 @@ export default class FeaturesStore extends Store {
39 } 40 }
40 41
41 @computed get anonymousFeatures() { 42 @computed get anonymousFeatures() {
42 return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG; 43 return (
44 this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG
45 );
43 } 46 }
44 47
45 _updateFeatures = () => { 48 _updateFeatures = () => {
@@ -72,7 +75,6 @@ export default class FeaturesStore extends Store {
72 quickSwitch(this.stores, this.actions); 75 quickSwitch(this.stores, this.actions);
73 nightlyBuilds(this.stores, this.actions); 76 nightlyBuilds(this.stores, this.actions);
74 publishDebugInfo(this.stores, this.actions); 77 publishDebugInfo(this.stores, this.actions);
75 announcements(this.stores, this.actions);
76 settingsWS(this.stores, this.actions); 78 settingsWS(this.stores, this.actions);
77 communityRecipes(this.stores, this.actions); 79 communityRecipes(this.stores, this.actions);
78 todos(this.stores, this.actions); 80 todos(this.stores, this.actions);
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 8598c6234..75bc71388 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -603,8 +603,12 @@ export default class ServicesStore extends Store {
603 } 603 }
604 604
605 @action _blurActive() { 605 @action _blurActive() {
606 if (!this.active) return; 606 const service = this.active;
607 this.active.isActive = false; 607 if (service) {
608 service.isActive = false;
609 } else {
610 debug('No service is active');
611 }
608 } 612 }
609 613
610 @action _setActiveNext() { 614 @action _setActiveNext() {
@@ -678,6 +682,8 @@ export default class ServicesStore extends Store {
678 const service = this.active; 682 const service = this.active;
679 if (service) { 683 if (service) {
680 this._focusService({ serviceId: service.id }); 684 this._focusService({ serviceId: service.id });
685 } else {
686 debug('No service is active');
681 } 687 }
682 } else { 688 } else {
683 this.allServicesRequest.invalidate(); 689 this.allServicesRequest.invalidate();
@@ -846,12 +852,13 @@ export default class ServicesStore extends Store {
846 } 852 }
847 853
848 @action _reloadActive() { 854 @action _reloadActive() {
849 if (this.active) { 855 const service = this.active;
850 const service = this.one(this.active.id); 856 if (service) {
851
852 this._reload({ 857 this._reload({
853 serviceId: service.id, 858 serviceId: service.id,
854 }); 859 });
860 } else {
861 debug('No service is active');
855 } 862 }
856 } 863 }
857 864
@@ -910,7 +917,6 @@ export default class ServicesStore extends Store {
910 917
911 @action _toggleNotifications({ serviceId }) { 918 @action _toggleNotifications({ serviceId }) {
912 const service = this.one(serviceId); 919 const service = this.one(serviceId);
913 service.isNotificationEnabled = !service.isNotificationEnabled;
914 920
915 this.actions.service.updateService({ 921 this.actions.service.updateService({
916 serviceId, 922 serviceId,
@@ -923,7 +929,6 @@ export default class ServicesStore extends Store {
923 929
924 @action _toggleAudio({ serviceId }) { 930 @action _toggleAudio({ serviceId }) {
925 const service = this.one(serviceId); 931 const service = this.one(serviceId);
926 service.isMuted = !service.isMuted;
927 932
928 this.actions.service.updateService({ 933 this.actions.service.updateService({
929 serviceId, 934 serviceId,
@@ -936,7 +941,6 @@ export default class ServicesStore extends Store {
936 941
937 @action _toggleDarkMode({ serviceId }) { 942 @action _toggleDarkMode({ serviceId }) {
938 const service = this.one(serviceId); 943 const service = this.one(serviceId);
939 service.isDarkModeEnabled = !service.isDarkModeEnabled;
940 944
941 this.actions.service.updateService({ 945 this.actions.service.updateService({
942 serviceId, 946 serviceId,
@@ -1018,12 +1022,13 @@ export default class ServicesStore extends Store {
1018 if (service) { 1022 if (service) {
1019 this.actions.service.focusService({ serviceId: service.id }); 1023 this.actions.service.focusService({ serviceId: service.id });
1020 document.title = `Ferdi - ${service.name}`; 1024 document.title = `Ferdi - ${service.name}`;
1025 } else {
1026 debug('No service is active');
1021 } 1027 }
1022 } 1028 }
1023 1029
1024 _saveActiveService() { 1030 _saveActiveService() {
1025 const service = this.active; 1031 const service = this.active;
1026
1027 if (service) { 1032 if (service) {
1028 this.actions.settings.update({ 1033 this.actions.settings.update({
1029 type: 'service', 1034 type: 'service',
@@ -1031,6 +1036,8 @@ export default class ServicesStore extends Store {
1031 activeService: service.id, 1036 activeService: service.id,
1032 }, 1037 },
1033 }); 1038 });
1039 } else {
1040 debug('No service is active');
1034 } 1041 }
1035 } 1042 }
1036 1043
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index f551e1e49..9aade974c 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -65,7 +65,7 @@ export default class SettingsStore extends Store {
65 // Inactivity lock timer 65 // Inactivity lock timer
66 let inactivityTimer; 66 let inactivityTimer;
67 getCurrentWindow().on('blur', () => { 67 getCurrentWindow().on('blur', () => {
68 if (this.all.app.inactivityLock !== 0) { 68 if (this.all.app.lockingFeatureEnabled && this.all.app.inactivityLock !== 0) {
69 inactivityTimer = setTimeout(() => { 69 inactivityTimer = setTimeout(() => {
70 this.actions.settings.update({ 70 this.actions.settings.update({
71 type: 'app', 71 type: 'app',
diff --git a/src/stores/index.ts b/src/stores/index.ts
index e980f2c5b..4cd4e92ea 100644
--- a/src/stores/index.ts
+++ b/src/stores/index.ts
@@ -10,7 +10,6 @@ import NewsStore from './NewsStore';
10import RequestStore from './RequestStore'; 10import RequestStore from './RequestStore';
11import GlobalErrorStore from './GlobalErrorStore'; 11import GlobalErrorStore from './GlobalErrorStore';
12import { workspaceStore } from '../features/workspaces'; 12import { workspaceStore } from '../features/workspaces';
13import { announcementsStore } from '../features/announcements';
14import { communityRecipesStore } from '../features/communityRecipes'; 13import { communityRecipesStore } from '../features/communityRecipes';
15import { todosStore } from '../features/todos'; 14import { todosStore } from '../features/todos';
16 15
@@ -30,13 +29,12 @@ export default (api, actions, router) => {
30 requests: new RequestStore(stores, api, actions), 29 requests: new RequestStore(stores, api, actions),
31 globalError: new GlobalErrorStore(stores, api, actions), 30 globalError: new GlobalErrorStore(stores, api, actions),
32 workspaces: workspaceStore, 31 workspaces: workspaceStore,
33 announcements: announcementsStore,
34 communityRecipes: communityRecipesStore, 32 communityRecipes: communityRecipesStore,
35 todos: todosStore, 33 todos: todosStore,
36 }); 34 });
37 35
38 // Initialize all stores 36 // Initialize all stores
39 Object.keys(stores).forEach((name) => { 37 Object.keys(stores).forEach(name => {
40 if (stores[name] && stores[name].initialize) { 38 if (stores[name] && stores[name].initialize) {
41 stores[name].initialize(); 39 stores[name].initialize();
42 } 40 }
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index 1981c8731..a3ae4513f 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -1,5 +1,6 @@
1/* eslint-disable import/first */ 1/* eslint-disable import/first */
2import { contextBridge, ipcRenderer } from 'electron'; 2import { contextBridge, desktopCapturer, ipcRenderer } from 'electron';
3import { BrowserWindow, getCurrentWebContents } from '@electron/remote';
3import { join } from 'path'; 4import { join } from 'path';
4import { autorun, computed, observable } from 'mobx'; 5import { autorun, computed, observable } from 'mobx';
5import { pathExistsSync, readFileSync } from 'fs-extra'; 6import { pathExistsSync, readFileSync } from 'fs-extra';
@@ -22,6 +23,7 @@ import RecipeWebview from './lib/RecipeWebview';
22import Userscript from './lib/Userscript'; 23import Userscript from './lib/Userscript';
23 24
24import { BadgeHandler } from './badge'; 25import { BadgeHandler } from './badge';
26import { SessionHandler } from './sessionHandler';
25import contextMenu from './contextMenu'; 27import contextMenu from './contextMenu';
26import { 28import {
27 injectDarkModeStyle, 29 injectDarkModeStyle,
@@ -49,6 +51,8 @@ const debug = require('debug')('Ferdi:Plugin');
49 51
50const badgeHandler = new BadgeHandler(); 52const badgeHandler = new BadgeHandler();
51 53
54const sessionHandler = new SessionHandler();
55
52const notificationsHandler = new NotificationsHandler(); 56const notificationsHandler = new NotificationsHandler();
53 57
54// Patching window.open 58// Patching window.open
@@ -106,7 +110,16 @@ contextBridge.exposeInMainWorld('ferdi', {
106 badgeHandler.safeParseInt(text), 110 badgeHandler.safeParseInt(text),
107 displayNotification: (title, options) => 111 displayNotification: (title, options) =>
108 notificationsHandler.displayNotification(title, options), 112 notificationsHandler.displayNotification(title, options),
113 clearStorageData: (storageLocations) =>
114 sessionHandler.clearStorageData(storageLocations),
115 releaseServiceWorkers: () =>
116 sessionHandler.releaseServiceWorkers(),
109 getDisplayMediaSelector, 117 getDisplayMediaSelector,
118 getCurrentWebContents,
119 BrowserWindow,
120 ipcRenderer,
121 // TODO: When the discord recipe is changed to use the screenshare.js, this can be removed
122 desktopCapturer,
110}); 123});
111 124
112ipcRenderer.sendToHost( 125ipcRenderer.sendToHost(
@@ -316,7 +329,7 @@ class RecipeController {
316 ); 329 );
317 const darkModeExists = pathExistsSync(darkModeStyle); 330 const darkModeExists = pathExistsSync(darkModeStyle);
318 331
319 debug('darkmode.css exists? ', darkModeExists ? 'Yes' : 'No'); 332 debug('darkmode.css exists? ', darkModeExists);
320 333
321 // Check if recipe has a custom dark mode handler 334 // Check if recipe has a custom dark mode handler
322 if (this.recipe && this.recipe.darkModeHandler) { 335 if (this.recipe && this.recipe.darkModeHandler) {
diff --git a/src/webview/sessionHandler.ts b/src/webview/sessionHandler.ts
new file mode 100644
index 000000000..6a7e62ac5
--- /dev/null
+++ b/src/webview/sessionHandler.ts
@@ -0,0 +1,28 @@
1import { getCurrentWebContents } from '@electron/remote';
2
3const debug = require('debug')('Ferdi:Plugin:SessionHandler');
4
5export class SessionHandler {
6 clearStorageData(storageLocations: string[]) {
7 try {
8 debug('Clearing storageLocations:', storageLocations);
9 const { session } = getCurrentWebContents();
10 session.flushStorageData();
11 session.clearStorageData({ storages: storageLocations });
12 } catch (err) {
13 debug(err);
14 }
15 }
16
17 async releaseServiceWorkers() {
18 try {
19 const registrations = await window.navigator.serviceWorker.getRegistrations();
20 registrations.forEach(r => {
21 r.unregister();
22 debug('ServiceWorker unregistered');
23 });
24 } catch (err) {
25 debug(err);
26 }
27 }
28}
diff --git a/src/webview/spellchecker.ts b/src/webview/spellchecker.ts
index aa9a2350f..30b4ef075 100644
--- a/src/webview/spellchecker.ts
+++ b/src/webview/spellchecker.ts
@@ -4,8 +4,8 @@ import { DEFAULT_APP_SETTINGS, isMac } from '../environment';
4 4
5const debug = require('debug')('Ferdi:spellchecker'); 5const debug = require('debug')('Ferdi:spellchecker');
6 6
7const webContents = getCurrentWebContents(); 7const { session } = getCurrentWebContents();
8const [defaultLocale] = webContents.session.getSpellCheckerLanguages(); 8const [defaultLocale] = session.getSpellCheckerLanguages();
9debug('Spellchecker default locale is', defaultLocale); 9debug('Spellchecker default locale is', defaultLocale);
10 10
11export function getSpellcheckerLocaleByFuzzyIdentifier(identifier: string) { 11export function getSpellcheckerLocaleByFuzzyIdentifier(identifier: string) {
@@ -31,5 +31,5 @@ export function switchDict(locale: string) {
31 31
32 locales.push(defaultLocale, DEFAULT_APP_SETTINGS.fallbackLocale); 32 locales.push(defaultLocale, DEFAULT_APP_SETTINGS.fallbackLocale);
33 33
34 webContents.session.setSpellCheckerLanguages(locales); 34 session.setSpellCheckerLanguages(locales);
35} 35}