aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintignore2
-rw-r--r--.gitmodules4
-rw-r--r--CHANGELOG.md9
-rw-r--r--README.md66
-rw-r--r--docs/linux.md11
-rw-r--r--package.json2
-rw-r--r--packages/theme/src/themes/dark/index.ts13
-rw-r--r--packages/theme/src/themes/default/index.ts14
m---------recipes0
-rw-r--r--src/actions/index.js4
-rw-r--r--src/actions/payment.js4
-rw-r--r--src/actions/user.js4
-rw-r--r--src/api/server/ServerApi.js2
-rw-r--r--src/components/auth/Login.js2
-rw-r--r--src/components/auth/Pricing.js122
-rw-r--r--src/components/auth/Signup.js2
-rw-r--r--src/components/auth/Welcome.js2
-rw-r--r--src/components/layout/AppLayout.js4
-rw-r--r--src/components/layout/Sidebar.js2
-rw-r--r--src/components/settings/account/AccountDashboard.js18
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js50
-rw-r--r--src/components/settings/services/EditServiceForm.js19
-rw-r--r--src/components/settings/team/TeamDashboard.js16
-rw-r--r--src/components/subscription/SubscriptionForm.js6
-rw-r--r--src/components/subscription/SubscriptionPopup.js2
-rw-r--r--src/components/subscription/TrialForm.js4
-rw-r--r--src/components/ui/AppLoader/index.js9
-rw-r--r--src/components/ui/FeatureItem.js1
-rw-r--r--src/components/ui/FeatureList.js74
-rw-r--r--src/components/ui/PremiumFeatureContainer/index.js4
-rw-r--r--src/config.js8
-rw-r--r--src/containers/auth/AuthLayoutContainer.js13
-rw-r--r--src/containers/auth/PricingScreen.js32
-rw-r--r--src/containers/auth/SignupScreen.js22
-rw-r--r--src/containers/layout/AppLayoutContainer.js5
-rw-r--r--src/containers/settings/AccountScreen.js17
-rw-r--r--src/containers/subscription/SubscriptionFormScreen.js32
-rw-r--r--src/electron/Settings.js4
-rw-r--r--src/electron/ipc-api/localServer.js3
-rw-r--r--src/features/delayApp/Component.js2
-rw-r--r--src/features/delayApp/index.js9
-rw-r--r--src/features/planSelection/actions.js9
-rw-r--r--src/features/planSelection/api.js26
-rw-r--r--src/features/planSelection/components/PlanItem.js207
-rw-r--r--src/features/planSelection/components/PlanSelection.js279
-rw-r--r--src/features/planSelection/containers/PlanSelectionScreen.js123
-rw-r--r--src/features/planSelection/index.js28
-rw-r--r--src/features/planSelection/store.js68
-rw-r--r--src/features/shareFranz/index.js3
-rw-r--r--src/features/trialStatusBar/actions.js13
-rw-r--r--src/features/trialStatusBar/components/ProgressBar.js45
-rw-r--r--src/features/trialStatusBar/components/TrialStatusBar.js135
-rw-r--r--src/features/trialStatusBar/containers/TrialStatusBarScreen.js109
-rw-r--r--src/features/trialStatusBar/index.js30
-rw-r--r--src/features/trialStatusBar/store.js72
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js9
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js5
-rw-r--r--src/features/workspaces/store.js5
-rw-r--r--src/helpers/plan-helpers.js8
-rw-r--r--src/i18n/apply-branding.js3
-rw-r--r--src/i18n/locales/af.json47
-rw-r--r--src/i18n/locales/ar.json47
-rw-r--r--src/i18n/locales/bs.json47
-rw-r--r--src/i18n/locales/ca.json47
-rw-r--r--src/i18n/locales/cs.json47
-rw-r--r--src/i18n/locales/da.json47
-rw-r--r--src/i18n/locales/de.json47
-rw-r--r--src/i18n/locales/defaultMessages.json689
-rw-r--r--src/i18n/locales/el.json47
-rw-r--r--src/i18n/locales/en-US.json47
-rw-r--r--src/i18n/locales/es.json47
-rw-r--r--src/i18n/locales/fi.json47
-rw-r--r--src/i18n/locales/fr.json47
-rw-r--r--src/i18n/locales/ga.json47
-rw-r--r--src/i18n/locales/he.json47
-rw-r--r--src/i18n/locales/hr.json47
-rw-r--r--src/i18n/locales/hu.json47
-rw-r--r--src/i18n/locales/id.json47
-rw-r--r--src/i18n/locales/it.json47
-rw-r--r--src/i18n/locales/ja.json47
-rw-r--r--src/i18n/locales/ka.json47
-rw-r--r--src/i18n/locales/ko.json47
-rw-r--r--src/i18n/locales/nl-BE.json47
-rw-r--r--src/i18n/locales/nl.json47
-rw-r--r--src/i18n/locales/no.json47
-rw-r--r--src/i18n/locales/pl.json47
-rw-r--r--src/i18n/locales/pt-BR.json47
-rw-r--r--src/i18n/locales/pt.json47
-rw-r--r--src/i18n/locales/ro.json47
-rw-r--r--src/i18n/locales/ru.json47
-rw-r--r--src/i18n/locales/sk.json47
-rw-r--r--src/i18n/locales/sl.json47
-rw-r--r--src/i18n/locales/sr.json47
-rw-r--r--src/i18n/locales/sv.json47
-rw-r--r--src/i18n/locales/tr.json133
-rw-r--r--src/i18n/locales/uk.json47
-rw-r--r--src/i18n/locales/vi.json47
-rw-r--r--src/i18n/locales/zh-HANT.json47
-rw-r--r--src/i18n/locales/zh-Hant.json444
-rw-r--r--src/i18n/locales/zh.json47
-rw-r--r--src/i18n/messages/src/components/auth/Pricing.json92
-rw-r--r--src/i18n/messages/src/components/layout/AppLayout.json16
-rw-r--r--src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json32
-rw-r--r--src/i18n/messages/src/components/settings/team/TeamDashboard.json8
-rw-r--r--src/i18n/messages/src/components/ui/FeatureList.json105
-rw-r--r--src/i18n/messages/src/features/delayApp/Component.json2
-rw-r--r--src/i18n/messages/src/features/planSelection/components/PlanItem.json41
-rw-r--r--src/i18n/messages/src/features/planSelection/components/PlanSelection.json158
-rw-r--r--src/i18n/messages/src/features/planSelection/components/PlanTeaser.json28
-rw-r--r--src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json54
-rw-r--r--src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json41
-rw-r--r--src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json54
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json32
-rw-r--r--src/i18n/messages/src/helpers/plan-helpers.json8
-rw-r--r--src/index.js22
-rw-r--r--src/lib/Menu.js4
-rw-r--r--src/lib/TouchBar.js4
m---------src/server0
-rw-r--r--src/stores/AppStore.js53
-rw-r--r--src/stores/FeaturesStore.js5
-rw-r--r--src/stores/PaymentStore.js38
-rw-r--r--src/stores/ServicesStore.js8
-rw-r--r--src/stores/UserStore.js10
-rw-r--r--src/stores/index.js2
-rw-r--r--src/styles/layout.scss2
-rw-r--r--src/styles/settings.scss2
-rw-r--r--src/styles/subscription-popup.scss5
-rw-r--r--src/webview/lib/RecipeWebview.js10
-rw-r--r--src/webview/recipe.js4
129 files changed, 4614 insertions, 1027 deletions
diff --git a/.eslintignore b/.eslintignore
index f01f6d6e6..00ae892aa 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,5 @@
1build/ 1build/
2out/ 2out/
3packages/*/lib 3packages/*/lib
4src/server
5recipes/ \ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index f1f9fcec8..00bc1d26d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,8 @@
1[submodule "recipes"] 1[submodule "recipes"]
2 path = recipes 2 path = recipes
3 url = https://github.com/getferdi/recipes 3 url = https://github.com/getferdi/recipes.git
4 ignore = all
4[submodule "src/server"] 5[submodule "src/server"]
5 path = src/server 6 path = src/server
6 url = https://github.com/getferdi/internal-server.git 7 url = https://github.com/getferdi/internal-server.git
8 ignore = all
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5df55fbe0..c97f60757 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,13 @@
1# [5.4.0](https://github.com/getferdi/ferdi/compare/v5.3.4...v5.4.0) 1# [5.4.0](https://github.com/getferdi/ferdi/compare/v5.3.4...v5.4.0)
2- Merge Franz v5.4.0 2- Merge Franz v5.4.0
3- Add option to always show service navigation bar 3- Add option to show a service navigation bar
4- Minifying build files to improve app size
5- Sorting applications in QuickSwitch by last used
6- Add service hibernation 4- Add service hibernation
7- Fix universal darkmode for WhatsApp and Threema 5- Minifying build files to improve app size
6- Switching to `electron-spellchecker` for improved spellchecking
8- Add button to open darkmode.css for a service 7- Add button to open darkmode.css for a service
9- Add option to change accent color 8- Add option to change accent color
9- Fix universal darkmode for WhatsApp and Threema
10- Sorting applications in QuickSwitch by last used
10 11
11# [5.3.4](https://github.com/getferdi/ferdi/compare/v5.3.3...v5.3.4) (2019-09-25) 12# [5.3.4](https://github.com/getferdi/ferdi/compare/v5.3.3...v5.3.4) (2019-09-25)
12- Fix continuous releases/assets delivery on tags builds #53 13- Fix continuous releases/assets delivery on tags builds #53
diff --git a/README.md b/README.md
index 7e591eb02..285c80bb0 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,8 @@ You can find the installers in the [latest release](https://github.com/getferdi/
23 23
24- [x] Removes the counter-productive fullscreen app delay inviting users to upgrade 24- [x] Removes the counter-productive fullscreen app delay inviting users to upgrade
25- [x] Removes pages begging you to donate after registration 25- [x] Removes pages begging you to donate after registration
26- [x] Remove "Franz is better together" popup
27- [x] Remove bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd))
26- [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15)) 28- [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15))
27- [x] Using the Ferdi API instead of Franz's servers 29- [x] Using the Ferdi API instead of Franz's servers
28- [x] [Add option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server) 30- [x] [Add option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server)
@@ -38,14 +40,13 @@ You can find the installers in the [latest release](https://github.com/getferdi/
38- [x] Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/getferdi/ferdi/issues/39)) 40- [x] Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/getferdi/ferdi/issues/39))
39- [x] Add option to show a browser-like navigation bar on all services 41- [x] Add option to show a browser-like navigation bar on all services
40- [x] Add option to change accent color 42- [x] Add option to change accent color
41- [x] Add "`FERDI_APPDATA_DIR`" env variable to set a custom path for storing all data 43- [x] Add portable version for Windows
42- [x] Add Process Manager to find services using a lot of resources 44- [x] Add Process Manager to find services using a lot of resources
43- [x] Add "npm run prepare-code" command for development to lint and beautify code 45- [x] Add "npm run prepare-code" command for development to lint and beautify code
44- [x] Add button to open darkmode.css for a service 46- [x] Add button to open darkmode.css for a service
47- [x] Switch to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) ti improve application size
45- [x] Improve "About Ferdi" screen to better display versions 48- [x] Improve "About Ferdi" screen to better display versions
46- [x] Minifying build files to improve app size 49- [x] Minifying build files to improve app size
47- [x] Remove "Franz is better together" popup
48- [x] Remove bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd))
49- [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/getferdi/ferdi/wiki/Custom-Todo) 50- [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/getferdi/ferdi/wiki/Custom-Todo)
50- [x] Makes RocketChat self-hosted generally available ([#6](https://github.com/getferdi/ferdi/issues/6)) 51- [x] Makes RocketChat self-hosted generally available ([#6](https://github.com/getferdi/ferdi/issues/6))
51- [x] Comes with a custom branding proper to Ferdi 52- [x] Comes with a custom branding proper to Ferdi
@@ -54,32 +55,48 @@ You can find the installers in the [latest release](https://github.com/getferdi/
54 55
55### Preparations 56### Preparations
56 57
58#### Install OS dependencies
57 59
58#### Clone repository with submodule 60##### Node.js
61
62Please make sure you are running NodeJS v10 ([v10.16.3](https://nodejs.org/dist/v10.16.3/) suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278).
63
64##### Git
65
66The 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.
67
68##### Debian/Ubuntu
59 69
60```bash 70```bash
61$ git clone git@github.com:getferdi/ferdi.git 71$ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev
62$ cd getferdi
63$ git submodule update --init --recursive
64``` 72```
65 73
66#### Install Linux OS dependencies 74##### Fedora
67 75
68[Guide: Linux distribution specific dependencies](docs/linux.md) 76```bash
77$ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel
78```
69 79
70#### Use right NodeJS version 80##### Windows
71 81
72Please make sure you are running NodeJS v10 (v10.16.3 suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278) 82```bash
83$ npm install --global windows-build-tools // Windows 10
84$ npm install --global windows-build-tools --vs2015 // Windows 7
85```
73 86
74#### Fix native modules to match current electron node version 87#### Clone repository with submodule
75 88
76```bash 89```bash
77$ npm run rebuild 90$ git clone https://github.com/getferdi/ferdi.git
91$ cd ferdi
92$ git submodule update --init --recursive
78``` 93```
79 94
95It is important you execute the last command to get the required submodules (recipes, server).
96
80### Install dependencies 97### Install dependencies
81 98
82Run the following command to install all dependencies, and link sibling modules with Franz. 99Run the following command to install all dependencies, and link sibling modules with Ferdi.
83 100
84```bash 101```bash
85$ npx lerna bootstrap 102$ npx lerna bootstrap
@@ -87,9 +104,15 @@ $ npx lerna bootstrap
87 104
88If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. 105If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`.
89 106
90### Run Ferdi Development App 107### Fix native modules to match current electron node version
91 108
92Run these two commands **simultaneously** in different console tabs. 109```bash
110$ npm run rebuild
111```
112
113### Start development app
114
115Run these two commands **simultaneously** in different console tabs:
93 116
94```bash 117```bash
95$ npm run dev 118$ npm run dev
@@ -98,7 +121,7 @@ $ npm run start
98 121
99Be aware that the development database will be reset regularly. 122Be aware that the development database will be reset regularly.
100 123
101## Packaging 124### Packaging
102 125
103```bash 126```bash
104$ npm run build 127$ npm run build
@@ -106,14 +129,16 @@ $ npm run build
106 129
107Deliverables will be available in the `out` folder. 130Deliverables will be available in the `out` folder.
108 131
109## Release 132### Release
110 133
111```bash 134```bash
135$ git checkout develop && git pull && git checkout master
136$ git merge --no-ff develop
112$ git tag v5.3.4-beta.4 137$ git tag v5.3.4-beta.4
113$ git push --tags 138$ git push --tags
114``` 139```
115 140
116When pushing a new tag, the CI build will create a draft GitHub release and upload the deliverables in the draft release assets. Wait for all the assets to be uploaded before publishing the draft release. 141When pushing a new tag, the CI builds will create a draft GitHub release and upload the deliverables in the draft release assets. Wait for all the assets to be uploaded before publishing the draft release.
117 142
118## Contributors ✨ 143## Contributors ✨
119 144
@@ -147,6 +172,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
147 172
148<!-- markdownlint-enable --> 173<!-- markdownlint-enable -->
149<!-- prettier-ignore-end --> 174<!-- prettier-ignore-end -->
175
150<!-- ALL-CONTRIBUTORS-LIST:END --> 176<!-- ALL-CONTRIBUTORS-LIST:END -->
151 177
152<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> 178<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
@@ -159,6 +185,6 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
159 185
160This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! 186This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
161 187
162
163## Backers via OpenCollective 188## Backers via OpenCollective
189
164<a href="https://opencollective.com/getferdi#backers" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?width=890"></a> 190<a href="https://opencollective.com/getferdi#backers" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?width=890"></a>
diff --git a/docs/linux.md b/docs/linux.md
deleted file mode 100644
index 43ffa313b..000000000
--- a/docs/linux.md
+++ /dev/null
@@ -1,11 +0,0 @@
1# Linux distribution specific dependencies
2
3## Debian/Ubuntu
4```bash
5$ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev
6```
7
8## Fedora
9```bash
10$ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel
11```
diff --git a/package.json b/package.json
index 526a16947..b26986270 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
2 "name": "ferdi", 2 "name": "ferdi",
3 "productName": "Ferdi", 3 "productName": "Ferdi",
4 "appId": "com.kytwb.ferdi", 4 "appId": "com.kytwb.ferdi",
5 "version": "5.4.0-beta.2", 5 "version": "5.4.0-beta.3",
6 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 6 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
7 "copyright": "kytwb", 7 "copyright": "kytwb",
8 "main": "index.js", 8 "main": "index.js",
diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts
index 67d0cfb71..30cc19d99 100644
--- a/packages/theme/src/themes/dark/index.ts
+++ b/packages/theme/src/themes/dark/index.ts
@@ -66,7 +66,7 @@ export const selectSearchColor = inputBackground;
66 66
67// Modal 67// Modal
68export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string(); 68export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string();
69export const colorModalBackground = colorContentBackground; 69export const colorModalBackground = legacyStyles.darkThemeGrayDark;
70 70
71// Services 71// Services
72export const services = merge({}, defaultStyles.services, { 72export const services = merge({}, defaultStyles.services, {
@@ -146,3 +146,14 @@ export const todos = merge({}, defaultStyles.todos, {
146 background: legacyStyles.themeGrayLight, 146 background: legacyStyles.themeGrayLight,
147 }, 147 },
148}); 148});
149
150// TrialStatusBar
151export const trialStatusBar = merge({}, defaultStyles.trialStatusBar, {
152 bar: {
153 background: legacyStyles.darkThemeGray,
154 },
155 progressBar: {
156 background: legacyStyles.darkThemeGrayLighter,
157 progressIndicator: legacyStyles.darkThemeGrayLightest,
158 },
159});
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
index 1862fef6f..edf56f21e 100644
--- a/packages/theme/src/themes/default/index.ts
+++ b/packages/theme/src/themes/default/index.ts
@@ -1,6 +1,7 @@
1import color from 'color'; 1import color from 'color';
2import { cloneDeep } from 'lodash'; 2import { cloneDeep } from 'lodash';
3 3
4import { darkgreen } from 'color-name';
4import * as legacyStyles from '../legacy'; 5import * as legacyStyles from '../legacy';
5 6
6export interface IStyleTypes { 7export interface IStyleTypes {
@@ -224,7 +225,7 @@ export const signup = {
224// Todos 225// Todos
225export const todos = { 226export const todos = {
226 todosLayer: { 227 todosLayer: {
227 borderLeftColor: legacyStyles.themeGrayLighter, 228 borderLeftColor: color(legacyStyles.themeGrayLighter).darken(0.1).hex(),
228 }, 229 },
229 toggleButton: { 230 toggleButton: {
230 background: styleTypes.primary.accent, 231 background: styleTypes.primary.accent,
@@ -238,3 +239,14 @@ export const todos = {
238 backgroundHover: styleTypes.primary.accent, 239 backgroundHover: styleTypes.primary.accent,
239 }, 240 },
240}; 241};
242
243// TrialStatusBar
244export const trialStatusBar = {
245 bar: {
246 background: legacyStyles.themeGrayLightest,
247 },
248 progressBar: {
249 background: color(legacyStyles.themeGrayLighter).darken(0.1).hex(),
250 progressIndicator: legacyStyles.themeGrayLight,
251 },
252};
diff --git a/recipes b/recipes
Subproject c01a693a29c84f328b2a353ff16657ce3476edb Subproject 7aa76feba8bd94368d27bee556480313c636f94
diff --git a/src/actions/index.js b/src/actions/index.js
index 336344d76..9d3684edc 100644
--- a/src/actions/index.js
+++ b/src/actions/index.js
@@ -14,6 +14,8 @@ import requests from './requests';
14import announcements from '../features/announcements/actions'; 14import announcements from '../features/announcements/actions';
15import workspaces from '../features/workspaces/actions'; 15import workspaces from '../features/workspaces/actions';
16import todos from '../features/todos/actions'; 16import todos from '../features/todos/actions';
17import planSelection from '../features/planSelection/actions';
18import trialStatusBar from '../features/trialStatusBar/actions';
17 19
18const actions = Object.assign({}, { 20const actions = Object.assign({}, {
19 service, 21 service,
@@ -33,4 +35,6 @@ export default Object.assign(
33 { announcements }, 35 { announcements },
34 { workspaces }, 36 { workspaces },
35 { todos }, 37 { todos },
38 { planSelection },
39 { trialStatusBar },
36); 40);
diff --git a/src/actions/payment.js b/src/actions/payment.js
index 2aaefc025..f61faf197 100644
--- a/src/actions/payment.js
+++ b/src/actions/payment.js
@@ -4,5 +4,9 @@ export default {
4 createHostedPage: { 4 createHostedPage: {
5 planId: PropTypes.string.isRequired, 5 planId: PropTypes.string.isRequired,
6 }, 6 },
7 upgradeAccount: {
8 planId: PropTypes.string.isRequired,
9 onCloseWindow: PropTypes.func,
10 },
7 createDashboardUrl: {}, 11 createDashboardUrl: {},
8}; 12};
diff --git a/src/actions/user.js b/src/actions/user.js
index 5d7d9a899..7061a367a 100644
--- a/src/actions/user.js
+++ b/src/actions/user.js
@@ -11,8 +11,10 @@ export default {
11 lastname: PropTypes.string.isRequired, 11 lastname: PropTypes.string.isRequired,
12 email: PropTypes.string.isRequired, 12 email: PropTypes.string.isRequired,
13 password: PropTypes.string.isRequired, 13 password: PropTypes.string.isRequired,
14 accountType: PropTypes.string.isRequired, 14 accountType: PropTypes.string,
15 company: PropTypes.string, 15 company: PropTypes.string,
16 plan: PropTypes.string,
17 currency: PropTypes.string,
16 }, 18 },
17 retrievePassword: { 19 retrievePassword: {
18 email: PropTypes.string.isRequired, 20 email: PropTypes.string.isRequired,
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 02f6b389d..a5d636b4e 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -87,7 +87,7 @@ export default class ServerApi {
87 } 87 }
88 const trial = await request.json(); 88 const trial = await request.json();
89 89
90 debug('ServerApi::signup resolves', trial); 90 debug('ServerApi::activateTrial resolves', trial);
91 return true; 91 return true;
92 } 92 }
93 93
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index e58016e25..e25121de0 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -70,7 +70,7 @@ const messages = defineMessages({
70 }, 70 },
71}); 71});
72 72
73export default @observer @inject('actions') class Login extends Component { 73export default @inject('actions') @observer class Login extends Component {
74 static propTypes = { 74 static propTypes = {
75 onSubmit: PropTypes.func.isRequired, 75 onSubmit: PropTypes.func.isRequired,
76 isSubmitting: PropTypes.bool.isRequired, 76 isSubmitting: PropTypes.bool.isRequired,
diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js
index aadb18d91..593cb9c4b 100644
--- a/src/components/auth/Pricing.js
+++ b/src/components/auth/Pricing.js
@@ -13,12 +13,20 @@ import { FeatureList } from '../ui/FeatureList';
13 13
14const messages = defineMessages({ 14const messages = defineMessages({
15 headline: { 15 headline: {
16 id: 'pricing.trial.headline', 16 id: 'pricing.trial.headline.pro',
17 defaultMessage: '!!!Franz Professional', 17 defaultMessage: '!!!Hi {name}, welcome to Franz',
18 }, 18 },
19 personalOffer: { 19 specialTreat: {
20 id: 'pricing.trial.subheadline', 20 id: 'pricing.trial.intro.specialTreat',
21 defaultMessage: '!!!Your personal welcome offer:', 21 defaultMessage: '!!!We have a special treat for you.',
22 },
23 tryPro: {
24 id: 'pricing.trial.intro.tryPro',
25 defaultMessage: '!!!Enjoy the full Franz Professional experience completely free for 14 days.',
26 },
27 happyMessaging: {
28 id: 'pricing.trial.intro.happyMessaging',
29 defaultMessage: '!!!Happy messaging,',
22 }, 30 },
23 noStringsAttachedHeadline: { 31 noStringsAttachedHeadline: {
24 id: 'pricing.trial.terms.headline', 32 id: 'pricing.trial.terms.headline',
@@ -32,13 +40,21 @@ const messages = defineMessages({
32 id: 'pricing.trial.terms.automaticTrialEnd', 40 id: 'pricing.trial.terms.automaticTrialEnd',
33 defaultMessage: '!!!Your free trial ends automatically after 14 days', 41 defaultMessage: '!!!Your free trial ends automatically after 14 days',
34 }, 42 },
43 trialWorth: {
44 id: 'pricing.trial.terms.trialWorth',
45 defaultMessage: '!!!Free trial (normally {currency}{price} per month)',
46 },
35 activationError: { 47 activationError: {
36 id: 'pricing.trial.error', 48 id: 'pricing.trial.error',
37 defaultMessage: '!!!Sorry, we could not activate your trial!', 49 defaultMessage: '!!!Sorry, we could not activate your trial!',
38 }, 50 },
39 ctaAccept: { 51 ctaAccept: {
40 id: 'pricing.trial.cta.accept', 52 id: 'pricing.trial.cta.accept',
41 defaultMessage: '!!!Yes, upgrade my account to Franz Professional', 53 defaultMessage: '!!!Start my 14-day Franz Professional Trial ',
54 },
55 ctaStart: {
56 id: 'pricing.trial.cta.start',
57 defaultMessage: '!!!Start using Franz',
42 }, 58 },
43 ctaSkip: { 59 ctaSkip: {
44 id: 'pricing.trial.cta.skip', 60 id: 'pricing.trial.cta.skip',
@@ -58,6 +74,7 @@ const styles = theme => ({
58 welcomeOffer: { 74 welcomeOffer: {
59 textAlign: 'center', 75 textAlign: 'center',
60 fontWeight: 'bold', 76 fontWeight: 'bold',
77 marginBottom: '6 !important',
61 }, 78 },
62 keyTerms: { 79 keyTerms: {
63 textAlign: 'center', 80 textAlign: 'center',
@@ -93,6 +110,34 @@ const styles = theme => ({
93 margin: [20, 0, 0], 110 margin: [20, 0, 0],
94 color: theme.styleTypes.danger.accent, 111 color: theme.styleTypes.danger.accent,
95 }, 112 },
113 priceContainer: {
114 display: 'flex',
115 justifyContent: 'space-evenly',
116 margin: [10, 0, 15],
117 },
118 price: {
119 '& sup': {
120 verticalAlign: 14,
121 fontSize: 20,
122 },
123 },
124 figure: {
125 fontSize: 40,
126 },
127 regularPrice: {
128 position: 'relative',
129
130 '&:before': {
131 content: '" "',
132 position: 'absolute',
133 width: '130%',
134 height: 1,
135 top: 14,
136 left: -12,
137 borderBottom: [3, 'solid', 'red'],
138 transform: 'rotateZ(-20deg)',
139 },
140 },
96}); 141});
97 142
98export default @injectSheet(styles) @observer class Signup extends Component { 143export default @injectSheet(styles) @observer class Signup extends Component {
@@ -101,7 +146,11 @@ export default @injectSheet(styles) @observer class Signup extends Component {
101 isLoadingRequiredData: PropTypes.bool.isRequired, 146 isLoadingRequiredData: PropTypes.bool.isRequired,
102 isActivatingTrial: PropTypes.bool.isRequired, 147 isActivatingTrial: PropTypes.bool.isRequired,
103 trialActivationError: PropTypes.bool.isRequired, 148 trialActivationError: PropTypes.bool.isRequired,
149 canSkipTrial: PropTypes.bool.isRequired,
104 classes: PropTypes.object.isRequired, 150 classes: PropTypes.object.isRequired,
151 currency: PropTypes.string.isRequired,
152 price: PropTypes.number.isRequired,
153 name: PropTypes.string.isRequired,
105 }; 154 };
106 155
107 static contextTypes = { 156 static contextTypes = {
@@ -114,10 +163,16 @@ export default @injectSheet(styles) @observer class Signup extends Component {
114 isLoadingRequiredData, 163 isLoadingRequiredData,
115 isActivatingTrial, 164 isActivatingTrial,
116 trialActivationError, 165 trialActivationError,
166 canSkipTrial,
117 classes, 167 classes,
168 currency,
169 price,
170 name,
118 } = this.props; 171 } = this.props;
119 const { intl } = this.context; 172 const { intl } = this.context;
120 173
174 const [intPart, fractionPart] = (price).toString().split('.');
175
121 return ( 176 return (
122 <div className={classnames('auth__scroll-container', classes.container)}> 177 <div className={classnames('auth__scroll-container', classes.container)}>
123 <div className={classnames('auth__container', 'auth__container--signup', classes.content)}> 178 <div className={classnames('auth__container', 'auth__container--signup', classes.content)}>
@@ -129,30 +184,51 @@ export default @injectSheet(styles) @observer class Signup extends Component {
129 alt="" 184 alt=""
130 /> 185 />
131 )} 186 )}
132 <p className={classes.welcomeOffer}>{intl.formatMessage(messages.personalOffer)}</p> 187 <h1>{intl.formatMessage(messages.headline, { name })}</h1>
133 <h1>{intl.formatMessage(messages.headline)}</h1>
134 <div className="auth__letter"> 188 <div className="auth__letter">
135 <p> 189 <p>
136 We built Franz with a lot of effort, manpower and love, 190 {intl.formatMessage(messages.specialTreat)}
137 to boost up your messaging experience.
138 <br /> 191 <br />
139 </p> 192 </p>
140 <p> 193 <p>
141 Get the free 14 day Franz Professional trial and see your communication evolving. 194 {intl.formatMessage(messages.tryPro)}
142 <br /> 195 <br />
143 </p> 196 </p>
144 <p> 197 <p>
145 Thanks for being a hero. 198 {intl.formatMessage(messages.happyMessaging)}
146 </p> 199 </p>
147 <p> 200 <p>
148 <strong>Stefan Malzner</strong> 201 <strong>Stefan Malzner</strong>
149 </p> 202 </p>
150 </div> 203 </div>
204 <div className={classes.priceContainer}>
205 <p className={classnames(classes.price, classes.regularPrice)}>
206 <span className={classes.figure}>
207 {currency}
208 {intPart}
209 </span>
210 <sup>{fractionPart}</sup>
211 </p>
212 <p className={classnames(classes.price, classes.trialPrice)}>
213 <span className={classes.figure}>
214 {currency}
215 0
216 </span>
217 <sup>00</sup>
218 </p>
219 </div>
151 <div className={classes.keyTerms}> 220 <div className={classes.keyTerms}>
152 <H2> 221 <H2>
153 {intl.formatMessage(messages.noStringsAttachedHeadline)} 222 {intl.formatMessage(messages.noStringsAttachedHeadline)}
154 </H2> 223 </H2>
155 <ul className={classes.keyTermsList}> 224 <ul className={classes.keyTermsList}>
225 <FeatureItem
226 icon="👉"
227 name={intl.formatMessage(messages.trialWorth, {
228 currency,
229 price,
230 })}
231 />
156 <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} /> 232 <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} />
157 <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} /> 233 <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} />
158 </ul> 234 </ul>
@@ -161,33 +237,23 @@ export default @injectSheet(styles) @observer class Signup extends Component {
161 <p className={classes.error}>{intl.formatMessage(messages.activationError)}</p> 237 <p className={classes.error}>{intl.formatMessage(messages.activationError)}</p>
162 )} 238 )}
163 <Button 239 <Button
164 label={intl.formatMessage(messages.ctaAccept)} 240 label={intl.formatMessage(!canSkipTrial ? messages.ctaStart : messages.ctaAccept)}
165 className={classes.cta} 241 className={classes.cta}
166 onClick={onSubmit} 242 onClick={onSubmit}
167 busy={isActivatingTrial} 243 busy={isActivatingTrial}
168 disabled={isLoadingRequiredData || isActivatingTrial} 244 disabled={isLoadingRequiredData || isActivatingTrial}
169 /> 245 />
170 <p className={classes.skipLink}> 246 {canSkipTrial && (
171 <a href="#/">{intl.formatMessage(messages.ctaSkip)}</a> 247 <p className={classes.skipLink}>
172 </p> 248 <a href="#/">{intl.formatMessage(messages.ctaSkip)}</a>
249 </p>
250 )}
173 </form> 251 </form>
174 </div> 252 </div>
175 <div className={classes.featureContainer}> 253 <div className={classes.featureContainer}>
176 <H2> 254 <H2>
177 {intl.formatMessage(messages.featuresHeadline)} 255 {intl.formatMessage(messages.featuresHeadline)}
178 </H2> 256 </H2>
179 {/* <ul className={classes.features}>
180 <FeatureItem name="Add unlimited services" className={classes.featureItem} />
181 <FeatureItem name="Spellchecker support" className={classes.featureItem} />
182 <FeatureItem name="Workspaces" className={classes.featureItem} />
183 <FeatureItem name="Add Custom Websites" className={classes.featureItem} />
184 <FeatureItem name="On-premise & other Hosted Services" className={classes.featureItem} />
185 <FeatureItem name="Install 3rd party services" className={classes.featureItem} />
186 <FeatureItem name="Service Proxies" className={classes.featureItem} />
187 <FeatureItem name="Team Management" className={classes.featureItem} />
188 <FeatureItem name="No Waiting Screens" className={classes.featureItem} />
189 <FeatureItem name="Forever ad-free" className={classes.featureItem} />
190 </ul> */}
191 <FeatureList /> 257 <FeatureList />
192 </div> 258 </div>
193 </div> 259 </div>
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index 47e9daf18..a166155a7 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -74,7 +74,7 @@ const messages = defineMessages({
74 }, 74 },
75}); 75});
76 76
77export default @observer @inject('actions') class Signup extends Component { 77export default @inject('actions') @observer class Signup extends Component {
78 static propTypes = { 78 static propTypes = {
79 onSubmit: PropTypes.func.isRequired, 79 onSubmit: PropTypes.func.isRequired,
80 isSubmitting: PropTypes.bool.isRequired, 80 isSubmitting: PropTypes.bool.isRequired,
diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js
index 2ca8b430f..1453c1d7c 100644
--- a/src/components/auth/Welcome.js
+++ b/src/components/auth/Welcome.js
@@ -22,7 +22,7 @@ const messages = defineMessages({
22 }, 22 },
23}); 23});
24 24
25export default @observer @inject('actions') class Login extends Component { 25export default @inject('actions') @observer class Login extends Component {
26 static propTypes = { 26 static propTypes = {
27 loginRoute: PropTypes.string.isRequired, 27 loginRoute: PropTypes.string.isRequired,
28 signupRoute: PropTypes.string.isRequired, 28 signupRoute: PropTypes.string.isRequired,
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index 2b0719f92..80e6daf19 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -19,6 +19,8 @@ import { workspaceStore } from '../../features/workspaces';
19import AppUpdateInfoBar from '../AppUpdateInfoBar'; 19import AppUpdateInfoBar from '../AppUpdateInfoBar';
20import TrialActivationInfoBar from '../TrialActivationInfoBar'; 20import TrialActivationInfoBar from '../TrialActivationInfoBar';
21import Todos from '../../features/todos/containers/TodosScreen'; 21import Todos from '../../features/todos/containers/TodosScreen';
22import PlanSelection from '../../features/planSelection/containers/PlanSelectionScreen';
23import TrialStatusBar from '../../features/trialStatusBar/containers/TrialStatusBarScreen';
22 24
23function createMarkup(HTMLString) { 25function createMarkup(HTMLString) {
24 return { __html: HTMLString }; 26 return { __html: HTMLString };
@@ -189,9 +191,11 @@ class AppLayout extends Component {
189 <QuickSwitch /> 191 <QuickSwitch />
190 {services} 192 {services}
191 {children} 193 {children}
194 <TrialStatusBar />
192 </div> 195 </div>
193 <Todos /> 196 <Todos />
194 </div> 197 </div>
198 <PlanSelection />
195 </div> 199 </div>
196 </ErrorBoundary> 200 </ErrorBoundary>
197 ); 201 );
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index f7d10735c..48a83c5a1 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -203,7 +203,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
203 <i className="mdi mdi-settings" /> 203 <i className="mdi mdi-settings" />
204 { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE 204 { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE
205 || this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.DOWNLOADED) && ( 205 || this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.DOWNLOADED) && (
206 <span className="update-availible"> 206 <span className="update-available">
207 207
208 </span> 208 </span>
209 ) } 209 ) }
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index f588449f4..83dc34a52 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -109,6 +109,7 @@ class AccountDashboard extends Component {
109 openBilling: PropTypes.func.isRequired, 109 openBilling: PropTypes.func.isRequired,
110 upgradeToPro: PropTypes.func.isRequired, 110 upgradeToPro: PropTypes.func.isRequired,
111 openInvoices: PropTypes.func.isRequired, 111 openInvoices: PropTypes.func.isRequired,
112 onCloseSubscriptionWindow: PropTypes.func.isRequired,
112 }; 113 };
113 114
114 static contextTypes = { 115 static contextTypes = {
@@ -130,6 +131,7 @@ class AccountDashboard extends Component {
130 openBilling, 131 openBilling,
131 upgradeToPro, 132 upgradeToPro,
132 openInvoices, 133 openInvoices,
134 onCloseSubscriptionWindow,
133 } = this.props; 135 } = this.props;
134 const { intl } = this.context; 136 const { intl } = this.context;
135 137
@@ -215,7 +217,9 @@ class AccountDashboard extends Component {
215 {intl.formatMessage(messages.yourLicense)} 217 {intl.formatMessage(messages.yourLicense)}
216 </H2> 218 </H2>
217 <p> 219 <p>
218 {isPremiumOverrideUser ? 'Franz Premium' : planName} 220 Franz
221 {' '}
222 {isPremiumOverrideUser ? 'Premium' : planName}
219 {user.team.isTrial && ( 223 {user.team.isTrial && (
220 <> 224 <>
221 {' – '} 225 {' – '}
@@ -238,14 +242,16 @@ class AccountDashboard extends Component {
238 </p> 242 </p>
239 </> 243 </>
240 )} 244 )}
241 <div className="manage-user-links"> 245 {!isProUser && (
242 {!isProUser && ( 246 <div className="manage-user-links">
243 <Button 247 <Button
244 label={intl.formatMessage(messages.upgradeAccountToPro)} 248 label={intl.formatMessage(messages.upgradeAccountToPro)}
245 className="franz-form__button--primary" 249 className="franz-form__button--primary"
246 onClick={upgradeToPro} 250 onClick={upgradeToPro}
247 /> 251 />
248 )} 252 </div>
253 )}
254 <div className="manage-user-links">
249 <Button 255 <Button
250 label={intl.formatMessage(messages.manageSubscriptionButtonLabel)} 256 label={intl.formatMessage(messages.manageSubscriptionButtonLabel)}
251 className="franz-form__button--inverted" 257 className="franz-form__button--inverted"
@@ -263,7 +269,9 @@ class AccountDashboard extends Component {
263 {!user.isPremium && ( 269 {!user.isPremium && (
264 <div className="account franz-form"> 270 <div className="account franz-form">
265 <div className="account__box"> 271 <div className="account__box">
266 <SubscriptionForm /> 272 <SubscriptionForm
273 onCloseWindow={onCloseSubscriptionWindow}
274 />
267 </div> 275 </div>
268 </div> 276 </div>
269 )} 277 )}
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 2711bc107..192cfde7a 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -3,10 +3,13 @@ import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl'; 3import { defineMessages, intlShape } from 'react-intl';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5import { ProBadge } from '@meetfranz/ui'; 5import { ProBadge } from '@meetfranz/ui';
6import { RouterStore } from 'mobx-react-router';
6 7
8import { LOCAL_SERVER, LIVE_API } from '../../../config';
7import Link from '../../ui/Link'; 9import Link from '../../ui/Link';
8import { workspaceStore } from '../../../features/workspaces'; 10import { workspaceStore } from '../../../features/workspaces';
9import UIStore from '../../../stores/UIStore'; 11import UIStore from '../../../stores/UIStore';
12import SettingsStore from '../../../stores/SettingsStore';
10import UserStore from '../../../stores/UserStore'; 13import UserStore from '../../../stores/UserStore';
11import { serviceLimitStore } from '../../../features/serviceLimit'; 14import { serviceLimitStore } from '../../../features/serviceLimit';
12 15
@@ -45,11 +48,18 @@ const messages = defineMessages({
45 }, 48 },
46}); 49});
47 50
48export default @inject('stores') @observer class SettingsNavigation extends Component { 51export default @inject('stores', 'actions') @observer class SettingsNavigation extends Component {
49 static propTypes = { 52 static propTypes = {
50 stores: PropTypes.shape({ 53 stores: PropTypes.shape({
51 ui: PropTypes.instanceOf(UIStore).isRequired, 54 ui: PropTypes.instanceOf(UIStore).isRequired,
52 user: PropTypes.instanceOf(UserStore).isRequired, 55 user: PropTypes.instanceOf(UserStore).isRequired,
56 settings: PropTypes.instanceOf(SettingsStore).isRequired,
57 router: PropTypes.instanceOf(RouterStore).isRequired,
58 }).isRequired,
59 actions: PropTypes.shape({
60 settings: PropTypes.shape({
61 update: PropTypes.func.isRequired,
62 }).isRequired,
53 }).isRequired, 63 }).isRequired,
54 serviceCount: PropTypes.number.isRequired, 64 serviceCount: PropTypes.number.isRequired,
55 workspaceCount: PropTypes.number.isRequired, 65 workspaceCount: PropTypes.number.isRequired,
@@ -59,12 +69,42 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
59 intl: intlShape, 69 intl: intlShape,
60 }; 70 };
61 71
72 handleLoginLogout() {
73 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
74 const isUsingWithoutAccount = this.props.stores.settings.app.server === LOCAL_SERVER;
75
76 if (isLoggedIn) {
77 // Remove current auth token
78 localStorage.removeItem('authToken');
79
80 if (isUsingWithoutAccount) {
81 // Reset server back to Ferdi API
82 this.props.actions.settings.update({
83 type: 'app',
84 data: {
85 server: LIVE_API,
86 },
87 });
88 }
89 this.props.stores.user.isLoggingOut = true;
90 }
91
92 this.props.stores.router.push(isLoggedIn ? '/auth/logout' : '/auth/welcome');
93
94 if (isLoggedIn) {
95 // Reload Ferdi, otherwise many settings won't sync correctly with the server
96 // after logging into another account
97 window.location.reload();
98 }
99 }
100
62 render() { 101 render() {
63 const { serviceCount, workspaceCount, stores } = this.props; 102 const { serviceCount, workspaceCount, stores } = this.props;
64 const { isDarkThemeActive } = stores.ui; 103 const { isDarkThemeActive } = stores.ui;
65 const { router, user } = stores; 104 const { router, user } = stores;
66 const { intl } = this.context; 105 const { intl } = this.context;
67 const isLoggedIn = Boolean(localStorage.getItem('authToken')); 106 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
107 const isUsingWithoutAccount = stores.settings.app.server === LOCAL_SERVER;
68 108
69 return ( 109 return (
70 <div className="settings-navigation"> 110 <div className="settings-navigation">
@@ -136,12 +176,14 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
136 {intl.formatMessage(messages.supportFerdi)} 176 {intl.formatMessage(messages.supportFerdi)}
137 </Link> 177 </Link>
138 <span className="settings-navigation__expander" /> 178 <span className="settings-navigation__expander" />
139 <Link 179 <button
180 type="button"
140 to={isLoggedIn ? '/auth/logout' : '/auth/welcome'} 181 to={isLoggedIn ? '/auth/logout' : '/auth/welcome'}
141 className="settings-navigation__link" 182 className="settings-navigation__link"
183 onClick={this.handleLoginLogout.bind(this)}
142 > 184 >
143 { isLoggedIn ? intl.formatMessage(messages.logout) : 'Login'} 185 { isLoggedIn && !isUsingWithoutAccount ? intl.formatMessage(messages.logout) : 'Login'}
144 </Link> 186 </button>
145 </div> 187 </div>
146 ); 188 );
147 } 189 }
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 76138aa15..fa34ac60b 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -328,6 +328,18 @@ export default @observer class EditServiceForm extends Component {
328 )} 328 )}
329 </Tabs> 329 </Tabs>
330 )} 330 )}
331
332 {recipe.message && (
333 <p
334 className="settings__message"
335 style={{
336 marginTop: 0,
337 }}
338 >
339 <span className="mdi mdi-information" />
340 {recipe.message}
341 </p>
342 )}
331 <div className="service-flex-grid"> 343 <div className="service-flex-grid">
332 <div className="settings__options"> 344 <div className="settings__options">
333 <div className="settings__settings-group"> 345 <div className="settings__settings-group">
@@ -417,13 +429,6 @@ export default @observer class EditServiceForm extends Component {
417 </div> 429 </div>
418 </PremiumFeatureContainer> 430 </PremiumFeatureContainer>
419 )} 431 )}
420
421 {recipe.message && (
422 <p className="settings__message">
423 <span className="mdi mdi-information" />
424 {recipe.message}
425 </p>
426 )}
427 </form> 432 </form>
428 </div> 433 </div>
429 <div className="settings__controls"> 434 <div className="settings__controls">
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
index 3a38d682b..7e6d93997 100644
--- a/src/components/settings/team/TeamDashboard.js
+++ b/src/components/settings/team/TeamDashboard.js
@@ -38,13 +38,13 @@ const messages = defineMessages({
38 id: 'settings.team.upgradeAction', 38 id: 'settings.team.upgradeAction',
39 defaultMessage: '!!!Upgrade your Account', 39 defaultMessage: '!!!Upgrade your Account',
40 }, 40 },
41 teamsUnavailible: { 41 teamsUnavailable: {
42 id: 'settings.team.teamsUnavailible', 42 id: 'settings.team.teamsUnavailable',
43 defaultMessage: '!!!Teams are unavailible', 43 defaultMessage: '!!!Teams are unavailable',
44 }, 44 },
45 teamsUnavailibleInfo: { 45 teamsUnavailableInfo: {
46 id: 'settings.team.teamsUnavailibleInfo', 46 id: 'settings.team.teamsUnavailableInfo',
47 defaultMessage: '!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.', 47 defaultMessage: '!!!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.',
48 }, 48 },
49}); 49});
50 50
@@ -208,9 +208,9 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon
208 </div> 208 </div>
209 <div className="settings__body"> 209 <div className="settings__body">
210 <h1 className={classes.headline}> 210 <h1 className={classes.headline}>
211 {intl.formatMessage(messages.teamsUnavailible)} 211 {intl.formatMessage(messages.teamsUnavailable)}
212 </h1> 212 </h1>
213 {intl.formatMessage(messages.teamsUnavailibleInfo)} 213 {intl.formatMessage(messages.teamsUnavailableInfo)}
214 </div> 214 </div>
215 </div> 215 </div>
216 ); 216 );
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js
index cdfbbe60d..ec486e5d0 100644
--- a/src/components/subscription/SubscriptionForm.js
+++ b/src/components/subscription/SubscriptionForm.js
@@ -30,11 +30,12 @@ const messages = defineMessages({
30 30
31const styles = () => ({ 31const styles = () => ({
32 activateTrialButton: { 32 activateTrialButton: {
33 margin: [40, 0, 50], 33 margin: [40, 'auto', 50],
34 display: 'flex',
34 }, 35 },
35}); 36});
36 37
37export default @observer @injectSheet(styles) class SubscriptionForm extends Component { 38export default @injectSheet(styles) @observer class SubscriptionForm extends Component {
38 static propTypes = { 39 static propTypes = {
39 selectPlan: PropTypes.func.isRequired, 40 selectPlan: PropTypes.func.isRequired,
40 isActivatingTrial: PropTypes.bool.isRequired, 41 isActivatingTrial: PropTypes.bool.isRequired,
@@ -62,7 +63,6 @@ export default @observer @injectSheet(styles) class SubscriptionForm extends Com
62 className={classes.activateTrialButton} 63 className={classes.activateTrialButton}
63 busy={isActivatingTrial} 64 busy={isActivatingTrial}
64 onClick={selectPlan} 65 onClick={selectPlan}
65 stretch
66 /> 66 />
67 <div className="subscription__premium-info"> 67 <div className="subscription__premium-info">
68 <H3> 68 <H3>
diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js
index 12ef8a6e9..12a51ad7b 100644
--- a/src/components/subscription/SubscriptionPopup.js
+++ b/src/components/subscription/SubscriptionPopup.js
@@ -59,8 +59,10 @@ export default @observer class SubscriptionPopup extends Component {
59 className="subscription-popup__webview" 59 className="subscription-popup__webview"
60 60
61 autosize 61 autosize
62 allowpopups
62 src={encodeURI(url)} 63 src={encodeURI(url)}
63 onDidNavigate={completeCheck} 64 onDidNavigate={completeCheck}
65 onDidNavigateInPage={completeCheck}
64 /> 66 />
65 </div> 67 </div>
66 <div className="subscription-popup__toolbar franz-form"> 68 <div className="subscription-popup__toolbar franz-form">
diff --git a/src/components/subscription/TrialForm.js b/src/components/subscription/TrialForm.js
index 6ccdf20ae..d61b779ed 100644
--- a/src/components/subscription/TrialForm.js
+++ b/src/components/subscription/TrialForm.js
@@ -43,7 +43,8 @@ const messages = defineMessages({
43 43
44const styles = theme => ({ 44const styles = theme => ({
45 activateTrialButton: { 45 activateTrialButton: {
46 margin: [40, 0, 10], 46 margin: [40, 'auto', 10],
47 display: 'flex',
47 }, 48 },
48 allOptionsButton: { 49 allOptionsButton: {
49 margin: [0, 0, 40], 50 margin: [0, 0, 40],
@@ -93,7 +94,6 @@ export default @injectSheet(styles) @observer class TrialForm extends Component
93 className={classes.activateTrialButton} 94 className={classes.activateTrialButton}
94 busy={isActivatingTrial} 95 busy={isActivatingTrial}
95 onClick={activateTrial} 96 onClick={activateTrial}
96 stretch
97 /> 97 />
98 <Button 98 <Button
99 label={intl.formatMessage(messages.allOptionsButton)} 99 label={intl.formatMessage(messages.allOptionsButton)}
diff --git a/src/components/ui/AppLoader/index.js b/src/components/ui/AppLoader/index.js
index 1fd247d17..a7f6f4545 100644
--- a/src/components/ui/AppLoader/index.js
+++ b/src/components/ui/AppLoader/index.js
@@ -22,8 +22,13 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component
22 static propTypes = { 22 static propTypes = {
23 classes: PropTypes.object.isRequired, 23 classes: PropTypes.object.isRequired,
24 theme: PropTypes.object.isRequired, 24 theme: PropTypes.object.isRequired,
25 texts: PropTypes.array,
25 }; 26 };
26 27
28 static defaultProps = {
29 texts: textList,
30 }
31
27 state = { 32 state = {
28 step: 0, 33 step: 0,
29 }; 34 };
@@ -43,7 +48,7 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component
43 } 48 }
44 49
45 render() { 50 render() {
46 const { classes, theme } = this.props; 51 const { classes, theme, texts } = this.props;
47 const { step } = this.state; 52 const { step } = this.state;
48 53
49 return ( 54 return (
@@ -52,7 +57,7 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component
52 className={classes.component} 57 className={classes.component}
53 spinnerColor={theme.colorAppLoaderSpinner} 58 spinnerColor={theme.colorAppLoaderSpinner}
54 > 59 >
55 {textList.map((text, i) => ( 60 {texts.map((text, i) => (
56 <span 61 <span
57 key={text} 62 key={text}
58 className={classnames({ 63 className={classnames({
diff --git a/src/components/ui/FeatureItem.js b/src/components/ui/FeatureItem.js
index 7c482c4d4..4926df470 100644
--- a/src/components/ui/FeatureItem.js
+++ b/src/components/ui/FeatureItem.js
@@ -10,6 +10,7 @@ const styles = theme => ({
10 padding: [8, 0], 10 padding: [8, 0],
11 display: 'flex', 11 display: 'flex',
12 alignItems: 'center', 12 alignItems: 'center',
13 textAlign: 'left',
13 }, 14 },
14 featureIcon: { 15 featureIcon: {
15 fill: theme.brandSuccess, 16 fill: theme.brandSuccess,
diff --git a/src/components/ui/FeatureList.js b/src/components/ui/FeatureList.js
index 62944ad75..7ba8b54d7 100644
--- a/src/components/ui/FeatureList.js
+++ b/src/components/ui/FeatureList.js
@@ -3,12 +3,33 @@ import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl'; 3import { defineMessages, intlShape } from 'react-intl';
4 4
5import { FeatureItem } from './FeatureItem'; 5import { FeatureItem } from './FeatureItem';
6import { PLANS } from '../../config';
6 7
7const messages = defineMessages({ 8const messages = defineMessages({
9 availableRecipes: {
10 id: 'pricing.features.recipes',
11 defaultMessage: '!!!Choose from more than 70 Services',
12 },
13 accountSync: {
14 id: 'pricing.features.accountSync',
15 defaultMessage: '!!!Account Synchronisation',
16 },
17 desktopNotifications: {
18 id: 'pricing.features.desktopNotifications',
19 defaultMessage: '!!!Desktop Notifications',
20 },
8 unlimitedServices: { 21 unlimitedServices: {
9 id: 'pricing.features.unlimitedServices', 22 id: 'pricing.features.unlimitedServices',
10 defaultMessage: '!!!Add unlimited services', 23 defaultMessage: '!!!Add unlimited services',
11 }, 24 },
25 upToThreeServices: {
26 id: 'pricing.features.upToThreeServices',
27 defaultMessage: '!!!Add up to 3 services',
28 },
29 upToSixServices: {
30 id: 'pricing.features.upToSixServices',
31 defaultMessage: '!!!Add up to 6 services',
32 },
12 spellchecker: { 33 spellchecker: {
13 id: 'pricing.features.spellchecker', 34 id: 'pricing.features.spellchecker',
14 defaultMessage: '!!!Spellchecker support', 35 defaultMessage: '!!!Spellchecker support',
@@ -51,11 +72,13 @@ export class FeatureList extends Component {
51 static propTypes = { 72 static propTypes = {
52 className: PropTypes.string, 73 className: PropTypes.string,
53 featureClassName: PropTypes.string, 74 featureClassName: PropTypes.string,
75 plan: PropTypes.oneOf(PLANS),
54 }; 76 };
55 77
56 static defaultProps = { 78 static defaultProps = {
57 className: '', 79 className: '',
58 featureClassName: '', 80 featureClassName: '',
81 plan: false,
59 } 82 }
60 83
61 static contextTypes = { 84 static contextTypes = {
@@ -66,21 +89,52 @@ export class FeatureList extends Component {
66 const { 89 const {
67 className, 90 className,
68 featureClassName, 91 featureClassName,
92 plan,
69 } = this.props; 93 } = this.props;
70 const { intl } = this.context; 94 const { intl } = this.context;
71 95
96 const features = [];
97 if (plan === PLANS.FREE) {
98 features.push(
99 messages.upToThreeServices,
100 messages.availableRecipes,
101 messages.accountSync,
102 messages.desktopNotifications,
103 );
104 } else if (plan === PLANS.PERSONAL) {
105 features.push(
106 messages.upToSixServices,
107 messages.spellchecker,
108 messages.appDelays,
109 messages.adFree,
110 );
111 } else if (plan === PLANS.PRO) {
112 features.push(
113 messages.unlimitedServices,
114 messages.workspaces,
115 messages.customWebsites,
116 // messages.onPremise,
117 messages.thirdPartyServices,
118 // messages.serviceProxies,
119 );
120 } else {
121 features.push(
122 messages.unlimitedServices,
123 messages.spellchecker,
124 messages.workspaces,
125 messages.customWebsites,
126 messages.onPremise,
127 messages.thirdPartyServices,
128 messages.serviceProxies,
129 messages.teamManagement,
130 messages.appDelays,
131 messages.adFree,
132 );
133 }
134
72 return ( 135 return (
73 <ul className={className}> 136 <ul className={className}>
74 <FeatureItem name={intl.formatMessage(messages.unlimitedServices)} className={featureClassName} /> 137 {features.map(feature => <FeatureItem name={intl.formatMessage(feature)} className={featureClassName} />)}
75 <FeatureItem name={intl.formatMessage(messages.spellchecker)} className={featureClassName} />
76 <FeatureItem name={intl.formatMessage(messages.workspaces)} className={featureClassName} />
77 <FeatureItem name={intl.formatMessage(messages.customWebsites)} className={featureClassName} />
78 <FeatureItem name={intl.formatMessage(messages.onPremise)} className={featureClassName} />
79 <FeatureItem name={intl.formatMessage(messages.thirdPartyServices)} className={featureClassName} />
80 <FeatureItem name={intl.formatMessage(messages.serviceProxies)} className={featureClassName} />
81 <FeatureItem name={intl.formatMessage(messages.teamManagement)} className={featureClassName} />
82 <FeatureItem name={intl.formatMessage(messages.appDelays)} className={featureClassName} />
83 <FeatureItem name={intl.formatMessage(messages.adFree)} className={featureClassName} />
84 </ul> 138 </ul>
85 ); 139 );
86 } 140 }
diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js
index 7ba353be3..36bf38c98 100644
--- a/src/components/ui/PremiumFeatureContainer/index.js
+++ b/src/components/ui/PremiumFeatureContainer/index.js
@@ -9,7 +9,7 @@ import { oneOrManyChildElements } from '../../../prop-types';
9import UserStore from '../../../stores/UserStore'; 9import UserStore from '../../../stores/UserStore';
10 10
11import styles from './styles'; 11import styles from './styles';
12import FeatureStore from '../../../stores/FeaturesStore'; 12import FeaturesStore from '../../../stores/FeaturesStore';
13 13
14const messages = defineMessages({ 14const messages = defineMessages({
15 action: { 15 action: {
@@ -90,7 +90,7 @@ PremiumFeatureContainer.wrappedComponent.propTypes = {
90 children: oneOrManyChildElements.isRequired, 90 children: oneOrManyChildElements.isRequired,
91 stores: PropTypes.shape({ 91 stores: PropTypes.shape({
92 user: PropTypes.instanceOf(UserStore).isRequired, 92 user: PropTypes.instanceOf(UserStore).isRequired,
93 features: PropTypes.instanceOf(FeatureStore).isRequired, 93 features: PropTypes.instanceOf(FeaturesStore).isRequired,
94 }).isRequired, 94 }).isRequired,
95 actions: PropTypes.shape({ 95 actions: PropTypes.shape({
96 ui: PropTypes.shape({ 96 ui: PropTypes.shape({
diff --git a/src/config.js b/src/config.js
index e762f879f..761d26eea 100644
--- a/src/config.js
+++ b/src/config.js
@@ -125,10 +125,10 @@ export const ALLOWED_PROTOCOLS = [
125]; 125];
126 126
127export const PLANS = { 127export const PLANS = {
128 PERSONAL: 'PERSONAL', 128 PERSONAL: 'personal',
129 PRO: 'PRO', 129 PRO: 'pro',
130 LEGACY: 'LEGACY', 130 LEGACY: 'legacy',
131 FREE: 'FREE', 131 FREE: 'free',
132}; 132};
133 133
134export const PLANS_MAPPING = { 134export const PLANS_MAPPING = {
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js
index 427054d3d..883a6ea60 100644
--- a/src/containers/auth/AuthLayoutContainer.js
+++ b/src/containers/auth/AuthLayoutContainer.js
@@ -5,6 +5,7 @@ import { ThemeProvider } from 'react-jss';
5 5
6import AuthLayout from '../../components/auth/AuthLayout'; 6import AuthLayout from '../../components/auth/AuthLayout';
7import AppStore from '../../stores/AppStore'; 7import AppStore from '../../stores/AppStore';
8import UserStore from '../../stores/UserStore';
8import GlobalErrorStore from '../../stores/GlobalErrorStore'; 9import GlobalErrorStore from '../../stores/GlobalErrorStore';
9import AppLoader from '../../components/ui/AppLoader'; 10import AppLoader from '../../components/ui/AppLoader';
10 11
@@ -23,7 +24,7 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer
23 stores, actions, children, location, 24 stores, actions, children, location,
24 } = this.props; 25 } = this.props;
25 const { 26 const {
26 app, features, globalError, 27 app, features, globalError, user,
27 } = stores; 28 } = stores;
28 29
29 const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting 30 const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting
@@ -37,6 +38,15 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer
37 ); 38 );
38 } 39 }
39 40
41 const { isLoggingOut } = user;
42 if (isLoggingOut) {
43 return (
44 <ThemeProvider theme={stores.ui.theme}>
45 <AppLoader texts={['Logging you out...']} />
46 </ThemeProvider>
47 );
48 }
49
40 return ( 50 return (
41 <ThemeProvider theme={stores.ui.theme}> 51 <ThemeProvider theme={stores.ui.theme}>
42 <AuthLayout 52 <AuthLayout
@@ -62,6 +72,7 @@ AuthLayoutContainer.wrappedComponent.propTypes = {
62 stores: PropTypes.shape({ 72 stores: PropTypes.shape({
63 app: PropTypes.instanceOf(AppStore).isRequired, 73 app: PropTypes.instanceOf(AppStore).isRequired,
64 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, 74 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired,
75 user: PropTypes.instanceOf(UserStore).isRequired,
65 }).isRequired, 76 }).isRequired,
66 actions: PropTypes.shape({ 77 actions: PropTypes.shape({
67 app: PropTypes.shape({ 78 app: PropTypes.shape({
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js
index af1651931..21c859c12 100644
--- a/src/containers/auth/PricingScreen.js
+++ b/src/containers/auth/PricingScreen.js
@@ -20,14 +20,19 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
20 } = this.props; 20 } = this.props;
21 21
22 const { activateTrialRequest } = stores.user; 22 const { activateTrialRequest } = stores.user;
23 const { defaultTrialPlan } = stores.features.features; 23 const { defaultTrialPlan, canSkipTrial } = stores.features.anonymousFeatures;
24 24
25 actions.user.activateTrial({ planId: defaultTrialPlan }); 25 if (!canSkipTrial) {
26 await activateTrialRequest._promise;
27
28 if (!activateTrialRequest.isError) {
29 stores.router.push('/'); 26 stores.router.push('/');
30 stores.user.hasCompletedSignup = true; 27 stores.user.hasCompletedSignup = true;
28 } else {
29 actions.user.activateTrial({ planId: defaultTrialPlan });
30 await activateTrialRequest._promise;
31
32 if (!activateTrialRequest.isError) {
33 stores.router.push('/');
34 stores.user.hasCompletedSignup = true;
35 }
31 } 36 }
32 } 37 }
33 38
@@ -37,8 +42,17 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
37 stores, 42 stores,
38 } = this.props; 43 } = this.props;
39 44
40 const { getUserInfoRequest, activateTrialRequest } = stores.user; 45 const { getUserInfoRequest, activateTrialRequest, data } = stores.user;
41 const { featuresRequest } = stores.features; 46 const { featuresRequest, features } = stores.features;
47
48 const { pricingConfig } = features;
49
50 let currency = '$';
51 let price = 5.99;
52 if (pricingConfig) {
53 ({ currency } = pricingConfig);
54 ({ price } = pricingConfig.plans.pro.yearly);
55 }
42 56
43 return ( 57 return (
44 <Pricing 58 <Pricing
@@ -46,7 +60,11 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
46 isLoadingRequiredData={(getUserInfoRequest.isExecuting || !getUserInfoRequest.wasExecuted) || (featuresRequest.isExecuting || !featuresRequest.wasExecuted)} 60 isLoadingRequiredData={(getUserInfoRequest.isExecuting || !getUserInfoRequest.wasExecuted) || (featuresRequest.isExecuting || !featuresRequest.wasExecuted)}
47 isActivatingTrial={activateTrialRequest.isExecuting} 61 isActivatingTrial={activateTrialRequest.isExecuting}
48 trialActivationError={activateTrialRequest.isError} 62 trialActivationError={activateTrialRequest.isError}
63 canSkipTrial={features.canSkipTrial}
49 error={error} 64 error={error}
65 currency={currency}
66 price={price}
67 name={data.firstname}
50 /> 68 />
51 ); 69 );
52 } 70 }
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js
index efc7ea4c1..f93498be2 100644
--- a/src/containers/auth/SignupScreen.js
+++ b/src/containers/auth/SignupScreen.js
@@ -4,6 +4,7 @@ import { inject, observer } from 'mobx-react';
4 4
5import Signup from '../../components/auth/Signup'; 5import Signup from '../../components/auth/Signup';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import FeaturesStore from '../../stores/FeaturesStore';
7 8
8import { globalError as globalErrorPropType } from '../../prop-types'; 9import { globalError as globalErrorPropType } from '../../prop-types';
9 10
@@ -12,11 +13,27 @@ export default @inject('stores', 'actions') @observer class SignupScreen extends
12 error: globalErrorPropType.isRequired, 13 error: globalErrorPropType.isRequired,
13 }; 14 };
14 15
16 onSignup(values) {
17 const { actions, stores } = this.props;
18
19 const { canSkipTrial, defaultTrialPlan, pricingConfig } = stores.features.anonymousFeatures;
20
21 if (!canSkipTrial) {
22 Object.assign(values, {
23 plan: defaultTrialPlan,
24 currency: pricingConfig.currencyID,
25 });
26 }
27
28 actions.user.signup(values);
29 }
30
15 render() { 31 render() {
16 const { actions, stores, error } = this.props; 32 const { stores, error } = this.props;
33
17 return ( 34 return (
18 <Signup 35 <Signup
19 onSubmit={actions.user.signup} 36 onSubmit={values => this.onSignup(values)}
20 isSubmitting={stores.user.signupRequest.isExecuting} 37 isSubmitting={stores.user.signupRequest.isExecuting}
21 loginRoute={stores.user.loginRoute} 38 loginRoute={stores.user.loginRoute}
22 error={error} 39 error={error}
@@ -33,5 +50,6 @@ SignupScreen.wrappedComponent.propTypes = {
33 }).isRequired, 50 }).isRequired,
34 stores: PropTypes.shape({ 51 stores: PropTypes.shape({
35 user: PropTypes.instanceOf(UserStore).isRequired, 52 user: PropTypes.instanceOf(UserStore).isRequired,
53 features: PropTypes.instanceOf(FeaturesStore).isRequired,
36 }).isRequired, 54 }).isRequired,
37}; 55};
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 95fbd109f..a4312d9de 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -24,6 +24,7 @@ import { state as delayAppState } from '../../features/delayApp';
24import { workspaceActions } from '../../features/workspaces/actions'; 24import { workspaceActions } from '../../features/workspaces/actions';
25import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; 25import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer';
26import { workspaceStore } from '../../features/workspaces'; 26import { workspaceStore } from '../../features/workspaces';
27import WorkspacesStore from '../../features/workspaces/store';
27 28
28export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { 29export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component {
29 static defaultProps = { 30 static defaultProps = {
@@ -41,6 +42,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
41 globalError, 42 globalError,
42 requests, 43 requests,
43 user, 44 user,
45 workspaces,
44 } = this.props.stores; 46 } = this.props.stores;
45 47
46 const { 48 const {
@@ -79,7 +81,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
79 const isLoadingServices = services.allServicesRequest.isExecuting 81 const isLoadingServices = services.allServicesRequest.isExecuting
80 && services.allServicesRequest.isExecutingFirstTime; 82 && services.allServicesRequest.isExecutingFirstTime;
81 83
82 if (isLoadingFeatures || isLoadingServices) { 84 if (isLoadingFeatures || isLoadingServices || workspaces.isLoadingWorkspaces) {
83 return ( 85 return (
84 <ThemeProvider theme={ui.theme}> 86 <ThemeProvider theme={ui.theme}>
85 <AppLoader /> 87 <AppLoader />
@@ -175,6 +177,7 @@ AppLayoutContainer.wrappedComponent.propTypes = {
175 user: PropTypes.instanceOf(UserStore).isRequired, 177 user: PropTypes.instanceOf(UserStore).isRequired,
176 requests: PropTypes.instanceOf(RequestStore).isRequired, 178 requests: PropTypes.instanceOf(RequestStore).isRequired,
177 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, 179 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired,
180 workspaces: PropTypes.instanceOf(WorkspacesStore).isRequired,
178 }).isRequired, 181 }).isRequired,
179 actions: PropTypes.shape({ 182 actions: PropTypes.shape({
180 service: PropTypes.shape({ 183 service: PropTypes.shape({
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index 41cdeb79a..93ab44690 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -5,6 +5,7 @@ import { inject, observer } from 'mobx-react';
5import PaymentStore from '../../stores/PaymentStore'; 5import PaymentStore from '../../stores/PaymentStore';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import AppStore from '../../stores/AppStore'; 7import AppStore from '../../stores/AppStore';
8import FeaturesStore from '../../stores/FeaturesStore';
8 9
9import AccountDashboard from '../../components/settings/account/AccountDashboard'; 10import AccountDashboard from '../../components/settings/account/AccountDashboard';
10import ErrorBoundary from '../../components/util/ErrorBoundary'; 11import ErrorBoundary from '../../components/util/ErrorBoundary';
@@ -12,8 +13,9 @@ import { WEBSITE } from '../../environment';
12 13
13export default @inject('stores', 'actions') @observer class AccountScreen extends Component { 14export default @inject('stores', 'actions') @observer class AccountScreen extends Component {
14 onCloseWindow() { 15 onCloseWindow() {
15 const { user } = this.props.stores; 16 const { user, features } = this.props.stores;
16 user.getUserInfoRequest.invalidate({ immediately: true }); 17 user.getUserInfoRequest.invalidate({ immediately: true });
18 features.featuresRequest.invalidate({ immediately: true });
17 } 19 }
18 20
19 reloadData() { 21 reloadData() {
@@ -39,12 +41,17 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend
39 } 41 }
40 42
41 render() { 43 render() {
42 const { user, payment } = this.props.stores; 44 const { user, payment, features } = this.props.stores;
43 const { user: userActions } = this.props.actions; 45 const {
46 user: userActions,
47 payment: paymentActions,
48 } = this.props.actions;
44 49
45 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; 50 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting;
46 const isLoadingPlans = payment.plansRequest.isExecuting; 51 const isLoadingPlans = payment.plansRequest.isExecuting;
47 52
53 const { upgradeAccount } = paymentActions;
54
48 return ( 55 return (
49 <ErrorBoundary> 56 <ErrorBoundary>
50 <AccountDashboard 57 <AccountDashboard
@@ -60,7 +67,7 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend
60 isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} 67 isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting}
61 isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} 68 isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError}
62 openEditAccount={() => this.handleWebsiteLink('/user/profile')} 69 openEditAccount={() => this.handleWebsiteLink('/user/profile')}
63 upgradeToPro={() => this.handleWebsiteLink('/inapp/user/licenses')} 70 upgradeToPro={() => upgradeAccount({ planId: features.features.pricingConfig.plans.pro.yearly.id })}
64 openBilling={() => this.handleWebsiteLink('/user/billing')} 71 openBilling={() => this.handleWebsiteLink('/user/billing')}
65 openInvoices={() => this.handleWebsiteLink('/user/invoices')} 72 openInvoices={() => this.handleWebsiteLink('/user/invoices')}
66 /> 73 />
@@ -72,12 +79,14 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend
72AccountScreen.wrappedComponent.propTypes = { 79AccountScreen.wrappedComponent.propTypes = {
73 stores: PropTypes.shape({ 80 stores: PropTypes.shape({
74 user: PropTypes.instanceOf(UserStore).isRequired, 81 user: PropTypes.instanceOf(UserStore).isRequired,
82 features: PropTypes.instanceOf(FeaturesStore).isRequired,
75 payment: PropTypes.instanceOf(PaymentStore).isRequired, 83 payment: PropTypes.instanceOf(PaymentStore).isRequired,
76 app: PropTypes.instanceOf(AppStore).isRequired, 84 app: PropTypes.instanceOf(AppStore).isRequired,
77 }).isRequired, 85 }).isRequired,
78 actions: PropTypes.shape({ 86 actions: PropTypes.shape({
79 payment: PropTypes.shape({ 87 payment: PropTypes.shape({
80 createDashboardUrl: PropTypes.func.isRequired, 88 createDashboardUrl: PropTypes.func.isRequired,
89 upgradeAccount: PropTypes.func.isRequired,
81 }).isRequired, 90 }).isRequired,
82 app: PropTypes.shape({ 91 app: PropTypes.shape({
83 openExternalUrl: PropTypes.func.isRequired, 92 openExternalUrl: PropTypes.func.isRequired,
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js
index 726b10628..38e46a7ba 100644
--- a/src/containers/subscription/SubscriptionFormScreen.js
+++ b/src/containers/subscription/SubscriptionFormScreen.js
@@ -1,4 +1,5 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import { remote } from 'electron';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
4 5
@@ -7,11 +8,21 @@ import PaymentStore from '../../stores/PaymentStore';
7import SubscriptionForm from '../../components/subscription/SubscriptionForm'; 8import SubscriptionForm from '../../components/subscription/SubscriptionForm';
8import TrialForm from '../../components/subscription/TrialForm'; 9import TrialForm from '../../components/subscription/TrialForm';
9 10
11const { BrowserWindow } = remote;
12
10export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { 13export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component {
14 static propTypes = {
15 onCloseWindow: PropTypes.func,
16 }
17
18 static defaultProps = {
19 onCloseWindow: () => null,
20 }
21
11 async openBrowser() { 22 async openBrowser() {
12 const { 23 const {
13 actions,
14 stores, 24 stores,
25 onCloseWindow,
15 } = this.props; 26 } = this.props;
16 27
17 const { 28 const {
@@ -22,7 +33,24 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre
22 let hostedPageURL = features.features.planSelectionURL; 33 let hostedPageURL = features.features.planSelectionURL;
23 hostedPageURL = user.getAuthURL(hostedPageURL); 34 hostedPageURL = user.getAuthURL(hostedPageURL);
24 35
25 actions.app.openExternalUrl({ url: hostedPageURL }); 36 const paymentWindow = new BrowserWindow({
37 parent: remote.getCurrentWindow(),
38 modal: true,
39 title: '🔒 Franz Supporter License',
40 width: 800,
41 height: window.innerHeight - 100,
42 maxWidth: 800,
43 minWidth: 600,
44 webPreferences: {
45 nodeIntegration: true,
46 webviewTag: true,
47 },
48 });
49 paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`);
50
51 paymentWindow.on('closed', () => {
52 onCloseWindow();
53 });
26 } 54 }
27 55
28 render() { 56 render() {
diff --git a/src/electron/Settings.js b/src/electron/Settings.js
index 95e3dcfa4..d4f0d25bf 100644
--- a/src/electron/Settings.js
+++ b/src/electron/Settings.js
@@ -47,7 +47,9 @@ export default class Settings {
47 } 47 }
48 48
49 _writeFile() { 49 _writeFile() {
50 outputJsonSync(this.settingsFile, this.store); 50 outputJsonSync(this.settingsFile, this.store, {
51 spaces: 2,
52 });
51 debug('Write settings file', this.type, toJS(this.store)); 53 debug('Write settings file', this.type, toJS(this.store));
52 } 54 }
53 55
diff --git a/src/electron/ipc-api/localServer.js b/src/electron/ipc-api/localServer.js
index 2f8f1020a..d12fb5708 100644
--- a/src/electron/ipc-api/localServer.js
+++ b/src/electron/ipc-api/localServer.js
@@ -1,5 +1,4 @@
1import { ipcMain, app } from 'electron'; 1import { ipcMain, app } from 'electron';
2import path from 'path';
3import net from 'net'; 2import net from 'net';
4import startServer from '../../server/start'; 3import startServer from '../../server/start';
5 4
@@ -38,7 +37,7 @@ export default (params) => {
38 console.log('Starting local server on port', port); 37 console.log('Starting local server on port', port);
39 38
40 startServer( 39 startServer(
41 path.join(app.getPath('userData'), 'server.sqlite'), 40 app.getPath('userData'),
42 port, 41 port,
43 ); 42 );
44 43
diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js
index c61cb06c9..81f89bc52 100644
--- a/src/features/delayApp/Component.js
+++ b/src/features/delayApp/Component.js
@@ -21,7 +21,7 @@ const messages = defineMessages({
21 }, 21 },
22 action: { 22 action: {
23 id: 'feature.delayApp.upgrade.action', 23 id: 'feature.delayApp.upgrade.action',
24 defaultMessage: '!!!Get a Franz Supporter License', 24 defaultMessage: '!!!Upgrade Franz',
25 }, 25 },
26 actionTrial: { 26 actionTrial: {
27 id: 'feature.delayApp.trial.action', 27 id: 'feature.delayApp.trial.action',
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js
index 5cc6c9506..51bd887a2 100644
--- a/src/features/delayApp/index.js
+++ b/src/features/delayApp/index.js
@@ -3,6 +3,7 @@ import moment from 'moment';
3import DelayAppComponent from './Component'; 3import DelayAppComponent from './Component';
4 4
5import { DEFAULT_FEATURES_CONFIG } from '../../config'; 5import { DEFAULT_FEATURES_CONFIG } from '../../config';
6import { getUserWorkspacesRequest } from '../workspaces/api';
6 7
7const debug = require('debug')('Ferdi:feature:delayApp'); 8const debug = require('debug')('Ferdi:feature:delayApp');
8 9
@@ -32,7 +33,13 @@ export default function init(stores) {
32 }; 33 };
33 34
34 reaction( 35 reaction(
35 () => stores.user.isLoggedIn && stores.services.allServicesRequest.wasExecuted && stores.features.features.needToWaitToProceed && !stores.user.data.isPremium, 36 () => (
37 stores.user.isLoggedIn
38 && stores.services.allServicesRequest.wasExecuted
39 && getUserWorkspacesRequest.wasExecuted
40 && stores.features.features.needToWaitToProceed
41 && !stores.user.data.isPremium
42 ),
36 (isEnabled) => { 43 (isEnabled) => {
37 if (isEnabled) { 44 if (isEnabled) {
38 debug('Enabling `delayApp` feature'); 45 debug('Enabling `delayApp` feature');
diff --git a/src/features/planSelection/actions.js b/src/features/planSelection/actions.js
new file mode 100644
index 000000000..83f58bfd7
--- /dev/null
+++ b/src/features/planSelection/actions.js
@@ -0,0 +1,9 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../actions/lib/actions';
3
4export const planSelectionActions = createActionsFromDefinitions({
5 downgradeAccount: {},
6 hideOverlay: {},
7}, PropTypes.checkPropTypes);
8
9export default planSelectionActions;
diff --git a/src/features/planSelection/api.js b/src/features/planSelection/api.js
new file mode 100644
index 000000000..734643f10
--- /dev/null
+++ b/src/features/planSelection/api.js
@@ -0,0 +1,26 @@
1import { sendAuthRequest } from '../../api/utils/auth';
2import { API, API_VERSION } from '../../environment';
3import Request from '../../stores/lib/Request';
4
5const debug = require('debug')('Franz:feature:planSelection:api');
6
7export const planSelectionApi = {
8 downgrade: async () => {
9 const url = `${API}/${API_VERSION}/payment/downgrade`;
10 const options = {
11 method: 'PUT',
12 };
13 debug('downgrade UPDATE', url, options);
14 const result = await sendAuthRequest(url, options);
15 debug('downgrade RESULT', result);
16 if (!result.ok) throw result;
17
18 return result.ok;
19 },
20};
21
22export const downgradeUserRequest = new Request(planSelectionApi, 'downgrade');
23
24export const resetApiRequests = () => {
25 downgradeUserRequest.reset();
26};
diff --git a/src/features/planSelection/components/PlanItem.js b/src/features/planSelection/components/PlanItem.js
new file mode 100644
index 000000000..ec061377b
--- /dev/null
+++ b/src/features/planSelection/components/PlanItem.js
@@ -0,0 +1,207 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import injectSheet from 'react-jss';
6import classnames from 'classnames';
7import color from 'color';
8
9import { H2 } from '@meetfranz/ui';
10
11import { Button } from '@meetfranz/forms';
12import { mdiArrowRight } from '@mdi/js';
13
14const messages = defineMessages({
15 perMonth: {
16 id: 'subscription.interval.perMonth',
17 defaultMessage: '!!!per month',
18 },
19 perMonthPerUser: {
20 id: 'subscription.interval.perMonthPerUser',
21 defaultMessage: '!!!per month & user',
22 },
23 bestValue: {
24 id: 'subscription.bestValue',
25 defaultMessage: '!!!Best value',
26 },
27});
28
29const styles = theme => ({
30 root: {
31 display: 'flex',
32 flexDirection: 'column',
33 borderRadius: theme.borderRadius,
34 flex: 1,
35 color: theme.styleTypes.primary.accent,
36 overflow: 'hidden',
37 textAlign: 'center',
38
39 '& h2': {
40 textAlign: 'center',
41 marginBottom: 10,
42 fontSize: 30,
43 color: theme.styleTypes.primary.contrast,
44 },
45 },
46 currency: {
47 fontSize: 35,
48 },
49 priceWrapper: {
50 height: 50,
51 marginBottom: 0,
52 },
53 price: {
54 fontSize: 50,
55
56 '& sup': {
57 fontSize: 20,
58 verticalAlign: 20,
59 },
60 },
61 text: {
62 marginBottom: 'auto',
63 },
64 cta: {
65 background: theme.styleTypes.primary.accent,
66 color: theme.styleTypes.primary.contrast,
67 margin: [40, 'auto', 0, 'auto'],
68 },
69 divider: {
70 width: 40,
71 border: 0,
72 borderTop: [1, 'solid', theme.styleTypes.primary.contrast],
73 margin: [15, 'auto', 20],
74 },
75 header: {
76 padding: 20,
77 background: color(theme.styleTypes.primary.accent).darken(0.25).hex(),
78 color: theme.styleTypes.primary.contrast,
79 position: 'relative',
80 },
81 content: {
82 padding: [10, 20, 20],
83 background: '#EFEFEF',
84 },
85 simpleCTA: {
86 background: 'none',
87 color: theme.styleTypes.primary.accent,
88
89 '& svg': {
90 fill: theme.styleTypes.primary.accent,
91 },
92 },
93 bestValue: {
94 background: theme.styleTypes.success.accent,
95 color: theme.styleTypes.success.contrast,
96 right: -66,
97 top: -40,
98 height: 'auto',
99 position: 'absolute',
100 transform: 'rotateZ(45deg)',
101 textAlign: 'center',
102 padding: [5, 50],
103 transformOrigin: 'left bottom',
104 fontSize: 12,
105 boxShadow: '0 2px 6px rgba(0,0,0,0.15)',
106 },
107});
108
109
110export default @observer @injectSheet(styles) class PlanItem extends Component {
111 static propTypes = {
112 name: PropTypes.string.isRequired,
113 text: PropTypes.string.isRequired,
114 price: PropTypes.number.isRequired,
115 currency: PropTypes.string.isRequired,
116 upgrade: PropTypes.func.isRequired,
117 ctaLabel: PropTypes.string.isRequired,
118 simpleCTA: PropTypes.bool,
119 perUser: PropTypes.bool,
120 classes: PropTypes.object.isRequired,
121 bestValue: PropTypes.bool,
122 className: PropTypes.string,
123 children: PropTypes.element,
124 };
125
126 static defaultProps = {
127 simpleCTA: false,
128 perUser: false,
129 children: null,
130 bestValue: false,
131 className: '',
132 }
133
134 static contextTypes = {
135 intl: intlShape,
136 };
137
138 render() {
139 const {
140 name,
141 text,
142 price,
143 currency,
144 classes,
145 upgrade,
146 ctaLabel,
147 simpleCTA,
148 perUser,
149 bestValue,
150 className,
151 children,
152 } = this.props;
153 const { intl } = this.context;
154
155 const priceParts = `${price}`.split('.');
156
157 return (
158 <div className={classnames({
159 [classes.root]: true,
160 [className]: className,
161 })}
162 >
163 <div className={classes.header}>
164 {bestValue && (
165 <div className={classes.bestValue}>
166 {intl.formatMessage(messages.bestValue)}
167 </div>
168 )}
169 <H2 className={classes.planName}>{name}</H2>
170 <p className={classes.text}>
171 {text}
172 </p>
173 <hr className={classes.divider} />
174 <p className={classes.priceWrapper}>
175 <span className={classes.currency}>{currency}</span>
176 <span className={classes.price}>
177 {priceParts[0]}
178 <sup>{priceParts[1]}</sup>
179 </span>
180 </p>
181 <p className={classes.interval}>
182 {intl.formatMessage(perUser ? messages.perMonthPerUser : messages.perMonth)}
183 </p>
184 </div>
185
186 <div className={classes.content}>
187 {children}
188
189 <Button
190 className={classnames({
191 [classes.cta]: true,
192 [classes.simpleCTA]: simpleCTA,
193 })}
194 icon={simpleCTA ? mdiArrowRight : null}
195 label={(
196 <>
197 {ctaLabel}
198 </>
199 )}
200 onClick={upgrade}
201 />
202 </div>
203
204 </div>
205 );
206 }
207}
diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js
new file mode 100644
index 000000000..4bf5238dd
--- /dev/null
+++ b/src/features/planSelection/components/PlanSelection.js
@@ -0,0 +1,279 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import { defineMessages, intlShape } from 'react-intl';
6import { H1, H2, Icon } from '@meetfranz/ui';
7import color from 'color';
8
9import { mdiRocket, mdiArrowRight } from '@mdi/js';
10import PlanItem from './PlanItem';
11import { i18nPlanName } from '../../../helpers/plan-helpers';
12import { PLANS } from '../../../config';
13import { FeatureList } from '../../../components/ui/FeatureList';
14import Appear from '../../../components/ui/effects/Appear';
15
16const messages = defineMessages({
17 welcome: {
18 id: 'feature.planSelection.fullscreen.welcome',
19 defaultMessage: '!!!Are you ready to choose, {name}',
20 },
21 subheadline: {
22 id: 'feature.planSelection.fullscreen.subheadline',
23 defaultMessage: '!!!It\'s time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.',
24 },
25 textFree: {
26 id: 'feature.planSelection.free.text',
27 defaultMessage: '!!!Basic functionality',
28 },
29 textPersonal: {
30 id: 'feature.planSelection.personal.text',
31 defaultMessage: '!!!More services, no waiting - ideal for personal use.',
32 },
33 textProfessional: {
34 id: 'feature.planSelection.pro.text',
35 defaultMessage: '!!!Unlimited services and professional features for you - and your team.',
36 },
37 ctaStayOnFree: {
38 id: 'feature.planSelection.cta.stayOnFree',
39 defaultMessage: '!!!Stay on Free',
40 },
41 ctaDowngradeFree: {
42 id: 'feature.planSelection.cta.ctaDowngradeFree',
43 defaultMessage: '!!!Downgrade to Free',
44 },
45 actionTrial: {
46 id: 'feature.planSelection.cta.trial',
47 defaultMessage: '!!!Start my free 14-days Trial',
48 },
49 shortActionPersonal: {
50 id: 'feature.planSelection.cta.upgradePersonal',
51 defaultMessage: '!!!Choose Personal',
52 },
53 shortActionPro: {
54 id: 'feature.planSelection.cta.upgradePro',
55 defaultMessage: '!!!Choose Professional',
56 },
57 fullFeatureList: {
58 id: 'feature.planSelection.fullFeatureList',
59 defaultMessage: '!!!Complete comparison of all plans',
60 },
61 pricesBasedOnAnnualPayment: {
62 id: 'feature.planSelection.pricesBasedOnAnnualPayment',
63 defaultMessage: '!!!All prices based on yearly payment',
64 },
65});
66
67const styles = theme => ({
68 root: {
69 background: theme.colorModalOverlayBackground,
70 width: '100%',
71 height: '100%',
72 position: 'absolute',
73 top: 0,
74 left: 0,
75 display: 'flex',
76 justifyContent: 'center',
77 alignItems: 'center',
78 zIndex: 999999,
79 overflowY: 'scroll',
80 },
81 container: {
82 width: '80%',
83 height: 'auto',
84 background: theme.styleTypes.primary.accent,
85 padding: 40,
86 borderRadius: theme.borderRadius,
87 maxWidth: 1000,
88
89 '& h1, & h2': {
90 textAlign: 'center',
91 color: theme.styleTypes.primary.contrast,
92 },
93 },
94 plans: {
95 display: 'flex',
96 margin: [40, 0, 0],
97 height: 'auto',
98
99 '& > div': {
100 margin: [0, 15],
101 flex: 1,
102 height: 'auto',
103 background: theme.styleTypes.primary.contrast,
104 boxShadow: [0, 2, 30, color('#000').alpha(0.1).rgb().string()],
105 },
106 },
107 bigIcon: {
108 background: theme.styleTypes.danger.accent,
109 width: 120,
110 height: 120,
111 display: 'flex',
112 alignItems: 'center',
113 borderRadius: '100%',
114 justifyContent: 'center',
115 margin: [-100, 'auto', 20],
116
117 '& svg': {
118 width: '80px !important',
119 height: '80px !important',
120 filter: 'drop-shadow( 0px 2px 3px rgba(0, 0, 0, 0.3))',
121 fill: theme.styleTypes.danger.contrast,
122 },
123 },
124 headline: {
125 fontSize: 40,
126 },
127 subheadline: {
128 maxWidth: 660,
129 fontSize: 22,
130 lineHeight: 1.1,
131 margin: [0, 'auto'],
132 },
133 featureList: {
134 '& li': {
135 borderBottom: [1, 'solid', '#CECECE'],
136 },
137 },
138 footer: {
139 display: 'flex',
140 color: theme.styleTypes.primary.contrast,
141 marginTop: 20,
142 padding: [0, 15],
143 },
144 fullFeatureList: {
145 marginRight: 'auto',
146 textAlign: 'center',
147 display: 'flex',
148 justifyContent: 'center',
149 alignItems: 'center',
150 color: `${theme.styleTypes.primary.contrast} !important`,
151
152 '& svg': {
153 marginRight: 5,
154 },
155 },
156 scrollContainer: {
157 border: '1px solid red',
158 overflow: 'scroll-x',
159 },
160 featuredPlan: {
161 transform: 'scale(1.05)',
162 },
163 disclaimer: {
164 textAlign: 'right',
165 margin: [10, 15, 0, 0],
166 },
167});
168
169@injectSheet(styles) @observer
170class PlanSelection extends Component {
171 static propTypes = {
172 classes: PropTypes.object.isRequired,
173 firstname: PropTypes.string.isRequired,
174 plans: PropTypes.object.isRequired,
175 currency: PropTypes.string.isRequired,
176 subscriptionExpired: PropTypes.bool.isRequired,
177 upgradeAccount: PropTypes.func.isRequired,
178 stayOnFree: PropTypes.func.isRequired,
179 hadSubscription: PropTypes.bool.isRequired,
180 };
181
182 static contextTypes = {
183 intl: intlShape,
184 };
185
186 componentDidMount() {
187 }
188
189 render() {
190 const {
191 classes,
192 firstname,
193 plans,
194 currency,
195 subscriptionExpired,
196 upgradeAccount,
197 stayOnFree,
198 hadSubscription,
199 } = this.props;
200
201 const { intl } = this.context;
202
203 return (
204 <Appear>
205 <div
206 className={classes.root}
207 >
208 <div className={classes.container}>
209 <div className={classes.bigIcon}>
210 <Icon icon={mdiRocket} />
211 </div>
212 <H1 className={classes.headline}>{intl.formatMessage(messages.welcome, { name: firstname })}</H1>
213 <H2 className={classes.subheadline}>{intl.formatMessage(messages.subheadline)}</H2>
214 <div className={classes.plans}>
215 <PlanItem
216 name={i18nPlanName(PLANS.FREE, intl)}
217 text={intl.formatMessage(messages.textFree)}
218 price={0}
219 currency={currency}
220 ctaLabel={intl.formatMessage(subscriptionExpired ? messages.ctaDowngradeFree : messages.ctaStayOnFree)}
221 upgrade={() => stayOnFree()}
222 simpleCTA
223 >
224 <FeatureList
225 plan={PLANS.FREE}
226 className={classes.featureList}
227 />
228 </PlanItem>
229 <PlanItem
230 name={i18nPlanName(plans.pro.yearly.id, intl)}
231 text={intl.formatMessage(messages.textProfessional)}
232 price={plans.pro.yearly.price}
233 currency={currency}
234 ctaLabel={intl.formatMessage(hadSubscription ? messages.shortActionPro : messages.actionTrial)}
235 upgrade={() => upgradeAccount(plans.pro.yearly.id)}
236 className={classes.featuredPlan}
237 perUser
238 bestValue
239 >
240 <FeatureList
241 plan={PLANS.PRO}
242 className={classes.featureList}
243 />
244 </PlanItem>
245 <PlanItem
246 name={i18nPlanName(plans.personal.yearly.id, intl)}
247 text={intl.formatMessage(messages.textPersonal)}
248 price={plans.personal.yearly.price}
249 currency={currency}
250 ctaLabel={intl.formatMessage(hadSubscription ? messages.shortActionPersonal : messages.actionTrial)}
251 upgrade={() => upgradeAccount(plans.personal.yearly.id)}
252 >
253 <FeatureList
254 plan={PLANS.PERSONAL}
255 className={classes.featureList}
256 />
257 </PlanItem>
258 </div>
259 <div className={classes.footer}>
260 <a
261 href="https://meetfranz.com/pricing"
262 target="_blank"
263 className={classes.fullFeatureList}
264 >
265 <Icon icon={mdiArrowRight} />
266 {intl.formatMessage(messages.fullFeatureList)}
267 </a>
268 {/* <p className={classes.disclaimer}> */}
269 {intl.formatMessage(messages.pricesBasedOnAnnualPayment)}
270 {/* </p> */}
271 </div>
272 </div>
273 </div>
274 </Appear>
275 );
276 }
277}
278
279export default PlanSelection;
diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js
new file mode 100644
index 000000000..d202c924e
--- /dev/null
+++ b/src/features/planSelection/containers/PlanSelectionScreen.js
@@ -0,0 +1,123 @@
1import React, { Component } from 'react';
2import { observer, inject } from 'mobx-react';
3import PropTypes from 'prop-types';
4import { remote } from 'electron';
5import { defineMessages, intlShape } from 'react-intl';
6
7import FeaturesStore from '../../../stores/FeaturesStore';
8import UserStore from '../../../stores/UserStore';
9import PlanSelection from '../components/PlanSelection';
10import ErrorBoundary from '../../../components/util/ErrorBoundary';
11import { planSelectionStore } from '..';
12
13const { dialog, app } = remote;
14
15const messages = defineMessages({
16 dialogTitle: {
17 id: 'feature.planSelection.fullscreen.dialog.title',
18 defaultMessage: '!!!Downgrade your Franz Plan',
19 },
20 dialogMessage: {
21 id: 'feature.planSelection.fullscreen.dialog.message',
22 defaultMessage: '!!!You\'re about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.',
23 },
24 dialogCTADowngrade: {
25 id: 'feature.planSelection.fullscreen.dialog.cta.downgrade',
26 defaultMessage: '!!!Downgrade to Free',
27 },
28 dialogCTAUpgrade: {
29 id: 'feature.planSelection.fullscreen.dialog.cta.upgrade',
30 defaultMessage: '!!!Choose Personal',
31 },
32});
33
34@inject('stores', 'actions') @observer
35class PlanSelectionScreen extends Component {
36 static contextTypes = {
37 intl: intlShape,
38 };
39
40 upgradeAccount(planId) {
41 const { upgradeAccount } = this.props.actions.payment;
42
43 upgradeAccount({
44 planId,
45 });
46 }
47
48 render() {
49 if (!planSelectionStore || !planSelectionStore.isFeatureActive || !planSelectionStore.showPlanSelectionOverlay) {
50 return null;
51 }
52
53 const { intl } = this.context;
54
55 const { user, features } = this.props.stores;
56 const { plans, currency } = features.features.pricingConfig;
57 const { activateTrial } = this.props.actions.user;
58 const { downgradeAccount, hideOverlay } = this.props.actions.planSelection;
59
60 return (
61 <ErrorBoundary>
62 <PlanSelection
63 firstname={user.data.firstname}
64 plans={plans}
65 currency={currency}
66 upgradeAccount={(planId) => {
67 if (user.data.hadSubscription) {
68 this.upgradeAccount(planId);
69 } else {
70 activateTrial({
71 planId,
72 });
73 }
74 }}
75 stayOnFree={() => {
76 const selection = dialog.showMessageBoxSync(app.mainWindow, {
77 type: 'question',
78 message: intl.formatMessage(messages.dialogTitle),
79 detail: intl.formatMessage(messages.dialogMessage, {
80 currency,
81 price: plans.personal.yearly.price,
82 }),
83 buttons: [
84 intl.formatMessage(messages.dialogCTADowngrade),
85 intl.formatMessage(messages.dialogCTAUpgrade),
86 ],
87 });
88
89 if (selection === 0) {
90 downgradeAccount();
91 hideOverlay();
92 } else {
93 this.upgradeAccount(plans.personal.yearly.id);
94 }
95 }}
96 subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded}
97 hadSubscription={user.data.hadSubscription}
98 />
99 </ErrorBoundary>
100 );
101 }
102}
103
104export default PlanSelectionScreen;
105
106PlanSelectionScreen.wrappedComponent.propTypes = {
107 stores: PropTypes.shape({
108 features: PropTypes.instanceOf(FeaturesStore).isRequired,
109 user: PropTypes.instanceOf(UserStore).isRequired,
110 }).isRequired,
111 actions: PropTypes.shape({
112 payment: PropTypes.shape({
113 upgradeAccount: PropTypes.func.isRequired,
114 }),
115 planSelection: PropTypes.shape({
116 downgradeAccount: PropTypes.func.isRequired,
117 hideOverlay: PropTypes.func.isRequired,
118 }),
119 user: PropTypes.shape({
120 activateTrial: PropTypes.func.isRequired,
121 }),
122 }).isRequired,
123};
diff --git a/src/features/planSelection/index.js b/src/features/planSelection/index.js
new file mode 100644
index 000000000..890be8871
--- /dev/null
+++ b/src/features/planSelection/index.js
@@ -0,0 +1,28 @@
1import { reaction } from 'mobx';
2import PlanSelectionStore from './store';
3
4const debug = require('debug')('Franz:feature:planSelection');
5
6export const planSelectionStore = new PlanSelectionStore();
7
8export default function initPlanSelection(stores, actions) {
9 stores.planSelection = planSelectionStore;
10 const { features } = stores;
11
12 // Toggle planSelection feature
13 reaction(
14 () => features.features.isPlanSelectionEnabled,
15 (isEnabled) => {
16 if (isEnabled) {
17 debug('Initializing `planSelection` feature');
18 planSelectionStore.start(stores, actions);
19 } else if (planSelectionStore.isFeatureActive) {
20 debug('Disabling `planSelection` feature');
21 planSelectionStore.stop();
22 }
23 },
24 {
25 fireImmediately: true,
26 },
27 );
28}
diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js
new file mode 100644
index 000000000..448e323ff
--- /dev/null
+++ b/src/features/planSelection/store.js
@@ -0,0 +1,68 @@
1import {
2 action,
3 observable,
4 computed,
5} from 'mobx';
6
7import { planSelectionActions } from './actions';
8import { FeatureStore } from '../utils/FeatureStore';
9import { createActionBindings } from '../utils/ActionBinding';
10import { downgradeUserRequest } from './api';
11
12const debug = require('debug')('Franz:feature:planSelection:store');
13
14export default class PlanSelectionStore extends FeatureStore {
15 @observable isFeatureEnabled = false;
16
17 @observable isFeatureActive = false;
18
19 @observable hideOverlay = false;
20
21 @computed get showPlanSelectionOverlay() {
22 const { team, isPremium } = this.stores.user;
23 if (team && !this.hideOverlay && !isPremium) {
24 return team.state === 'expired' && !team.userHasDowngraded;
25 }
26
27 return false;
28 }
29
30 // ========== PUBLIC API ========= //
31
32 @action start(stores, actions, api) {
33 debug('PlanSelectionStore::start');
34 this.stores = stores;
35 this.actions = actions;
36 this.api = api;
37
38 // ACTIONS
39
40 this._registerActions(createActionBindings([
41 [planSelectionActions.downgradeAccount, this._downgradeAccount],
42 [planSelectionActions.hideOverlay, this._hideOverlay],
43 ]));
44
45 this.isFeatureActive = true;
46 }
47
48 @action stop() {
49 super.stop();
50 debug('PlanSelectionStore::stop');
51 this.isFeatureActive = false;
52 }
53
54 // ========== PRIVATE METHODS ========= //
55
56 // Actions
57 @action _downgradeAccount = () => {
58 downgradeUserRequest.execute();
59 }
60
61 @action _hideOverlay = () => {
62 this.hideOverlay = true;
63 }
64
65 @action _showOverlay = () => {
66 this.hideOverlay = false;
67 }
68}
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js
index 217e926f9..04e3684ae 100644
--- a/src/features/shareFranz/index.js
+++ b/src/features/shareFranz/index.js
@@ -2,6 +2,7 @@ import { observable, reaction } from 'mobx';
2import ms from 'ms'; 2import ms from 'ms';
3 3
4import { state as delayAppState } from '../delayApp'; 4import { state as delayAppState } from '../delayApp';
5import { planSelectionStore } from '../planSelection';
5 6
6export { default as Component } from './Component'; 7export { default as Component } from './Component';
7 8
@@ -31,7 +32,7 @@ export default function initialize(stores) {
31 () => stores.user.isLoggedIn, 32 () => stores.user.isLoggedIn,
32 () => { 33 () => {
33 setTimeout(() => { 34 setTimeout(() => {
34 if (stores.settings.stats.appStarts % 50 === 0) { 35 if (stores.settings.stats.appStarts % 50 === 0 && !planSelectionStore.showPlanSelectionOverlay) {
35 if (delayAppState.isDelayAppScreenVisible) { 36 if (delayAppState.isDelayAppScreenVisible) {
36 debug('Delaying share modal by 5 minutes'); 37 debug('Delaying share modal by 5 minutes');
37 setTimeout(() => showModal(), ms('5m')); 38 setTimeout(() => showModal(), ms('5m'));
diff --git a/src/features/trialStatusBar/actions.js b/src/features/trialStatusBar/actions.js
new file mode 100644
index 000000000..38df76458
--- /dev/null
+++ b/src/features/trialStatusBar/actions.js
@@ -0,0 +1,13 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../actions/lib/actions';
3
4export const trialStatusBarActions = createActionsFromDefinitions({
5 upgradeAccount: {
6 planId: PropTypes.string.isRequired,
7 onCloseWindow: PropTypes.func.isRequired,
8 },
9 downgradeAccount: {},
10 hideOverlay: {},
11}, PropTypes.checkPropTypes);
12
13export default trialStatusBarActions;
diff --git a/src/features/trialStatusBar/components/ProgressBar.js b/src/features/trialStatusBar/components/ProgressBar.js
new file mode 100644
index 000000000..41b74d396
--- /dev/null
+++ b/src/features/trialStatusBar/components/ProgressBar.js
@@ -0,0 +1,45 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5
6const styles = theme => ({
7 root: {
8 background: theme.trialStatusBar.progressBar.background,
9 width: '25%',
10 maxWidth: 200,
11 height: 8,
12 display: 'flex',
13 alignItems: 'center',
14 borderRadius: theme.borderRadius,
15 overflow: 'hidden',
16 },
17 progress: {
18 background: theme.trialStatusBar.progressBar.progressIndicator,
19 width: ({ percent }) => `${percent}%`,
20 height: '100%',
21 },
22});
23
24@injectSheet(styles) @observer
25class ProgressBar extends Component {
26 static propTypes = {
27 classes: PropTypes.object.isRequired,
28 };
29
30 render() {
31 const {
32 classes,
33 } = this.props;
34
35 return (
36 <div
37 className={classes.root}
38 >
39 <div className={classes.progress} />
40 </div>
41 );
42 }
43}
44
45export default ProgressBar;
diff --git a/src/features/trialStatusBar/components/TrialStatusBar.js b/src/features/trialStatusBar/components/TrialStatusBar.js
new file mode 100644
index 000000000..b8fe4acc9
--- /dev/null
+++ b/src/features/trialStatusBar/components/TrialStatusBar.js
@@ -0,0 +1,135 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import { defineMessages, intlShape } from 'react-intl';
6import { Icon } from '@meetfranz/ui';
7import { mdiArrowRight, mdiWindowClose } from '@mdi/js';
8import classnames from 'classnames';
9
10import ProgressBar from './ProgressBar';
11
12const messages = defineMessages({
13 restTime: {
14 id: 'feature.trialStatusBar.restTime',
15 defaultMessage: '!!!Your Free Franz {plan} Trial ends in {time}.',
16 },
17 expired: {
18 id: 'feature.trialStatusBar.expired',
19 defaultMessage: '!!!Your free Franz {plan} Trial has expired, please upgrade your account.',
20 },
21 cta: {
22 id: 'feature.trialStatusBar.cta',
23 defaultMessage: '!!!Upgrade now',
24 },
25});
26
27const styles = theme => ({
28 root: {
29 background: theme.trialStatusBar.bar.background,
30 width: '100%',
31 height: 25,
32 order: 10,
33 display: 'flex',
34 alignItems: 'center',
35 fontSize: 12,
36 padding: [0, 10],
37 justifyContent: 'flex-end',
38 },
39 ended: {
40 background: theme.styleTypes.warning.accent,
41 color: theme.styleTypes.warning.contrast,
42 },
43 message: {
44 marginLeft: 20,
45 },
46 action: {
47 marginLeft: 20,
48 fontSize: 12,
49 color: theme.colorText,
50 textDecoration: 'underline',
51 display: 'flex',
52
53 '& svg': {
54 margin: [1, 2, 0, 0],
55 },
56 },
57});
58
59@injectSheet(styles) @observer
60class TrialStatusBar extends Component {
61 static propTypes = {
62 planName: PropTypes.string.isRequired,
63 percent: PropTypes.number.isRequired,
64 upgradeAccount: PropTypes.func.isRequired,
65 hideOverlay: PropTypes.func.isRequired,
66 trialEnd: PropTypes.string.isRequired,
67 hasEnded: PropTypes.bool.isRequired,
68 classes: PropTypes.object.isRequired,
69 };
70
71 static contextTypes = {
72 intl: intlShape,
73 };
74
75 render() {
76 const {
77 planName,
78 percent,
79 upgradeAccount,
80 hideOverlay,
81 trialEnd,
82 hasEnded,
83 classes,
84 } = this.props;
85
86 const { intl } = this.context;
87
88 return (
89 <div
90 className={classnames({
91 [classes.root]: true,
92 [classes.ended]: hasEnded,
93 })}
94 >
95 <ProgressBar
96 percent={percent}
97 />
98 {' '}
99 <span className={classes.message}>
100 {!hasEnded ? (
101 intl.formatMessage(messages.restTime, {
102 plan: planName,
103 time: trialEnd,
104 })
105 ) : (
106 intl.formatMessage(messages.expired, {
107 plan: planName,
108 })
109 )}
110 </span>
111 <button
112 className={classes.action}
113 type="button"
114 onClick={() => {
115 upgradeAccount();
116 }}
117 >
118 <Icon icon={mdiArrowRight} />
119 {intl.formatMessage(messages.cta)}
120 </button>
121 <button
122 className={classes.action}
123 type="button"
124 onClick={() => {
125 hideOverlay();
126 }}
127 >
128 <Icon icon={mdiWindowClose} />
129 </button>
130 </div>
131 );
132 }
133}
134
135export default TrialStatusBar;
diff --git a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js
new file mode 100644
index 000000000..e15a1204f
--- /dev/null
+++ b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js
@@ -0,0 +1,109 @@
1import React, { Component } from 'react';
2import { observer, inject } from 'mobx-react';
3import PropTypes from 'prop-types';
4import ms from 'ms';
5import { intlShape } from 'react-intl';
6
7import FeaturesStore from '../../../stores/FeaturesStore';
8import UserStore from '../../../stores/UserStore';
9import TrialStatusBar from '../components/TrialStatusBar';
10import ErrorBoundary from '../../../components/util/ErrorBoundary';
11import { trialStatusBarStore } from '..';
12import { i18nPlanName } from '../../../helpers/plan-helpers';
13
14@inject('stores', 'actions') @observer
15class TrialStatusBarScreen extends Component {
16 static contextTypes = {
17 intl: intlShape,
18 };
19
20 state = {
21 showOverlay: true,
22 percent: 0,
23 restTime: '',
24 hasEnded: false,
25 };
26
27 percentInterval = null;
28
29 componentDidMount() {
30 this.percentInterval = setInterval(() => {
31 this.calculateRestTime();
32 }, ms('1m'));
33
34 this.calculateRestTime();
35 }
36
37 componentWillUnmount() {
38 clearInterval(this.percentInterval);
39 }
40
41 calculateRestTime() {
42 const { trialEndTime } = trialStatusBarStore;
43 const percent = Math.abs(100 - Math.abs(trialEndTime.asMilliseconds()) * 100 / ms('14d')).toFixed(2);
44 const restTime = trialEndTime.humanize();
45 const hasEnded = trialEndTime.asMilliseconds() > 0;
46
47 this.setState({
48 percent,
49 restTime,
50 hasEnded,
51 });
52 }
53
54 hideOverlay() {
55 this.setState({
56 showOverlay: false,
57 });
58 }
59
60
61 render() {
62 const { intl } = this.context;
63
64 const {
65 showOverlay,
66 percent,
67 restTime,
68 hasEnded,
69 } = this.state;
70
71 if (!trialStatusBarStore || !trialStatusBarStore.isFeatureActive || !showOverlay || !trialStatusBarStore.showTrialStatusBarOverlay) {
72 return null;
73 }
74
75 const { user } = this.props.stores;
76 const { upgradeAccount } = this.props.actions.payment;
77
78 const planName = i18nPlanName(user.team.plan, intl);
79
80 return (
81 <ErrorBoundary>
82 <TrialStatusBar
83 planName={planName}
84 percent={parseFloat(percent < 5 ? 5 : percent)}
85 trialEnd={restTime}
86 upgradeAccount={() => upgradeAccount({
87 planId: user.team.plan,
88 })}
89 hideOverlay={() => this.hideOverlay()}
90 hasEnded={hasEnded}
91 />
92 </ErrorBoundary>
93 );
94 }
95}
96
97export default TrialStatusBarScreen;
98
99TrialStatusBarScreen.wrappedComponent.propTypes = {
100 stores: PropTypes.shape({
101 features: PropTypes.instanceOf(FeaturesStore).isRequired,
102 user: PropTypes.instanceOf(UserStore).isRequired,
103 }).isRequired,
104 actions: PropTypes.shape({
105 payment: PropTypes.shape({
106 upgradeAccount: PropTypes.func.isRequired,
107 }),
108 }).isRequired,
109};
diff --git a/src/features/trialStatusBar/index.js b/src/features/trialStatusBar/index.js
new file mode 100644
index 000000000..ec84cdfd7
--- /dev/null
+++ b/src/features/trialStatusBar/index.js
@@ -0,0 +1,30 @@
1import { reaction } from 'mobx';
2import TrialStatusBarStore from './store';
3
4const debug = require('debug')('Franz:feature:trialStatusBar');
5
6export const GA_CATEGORY_TRIAL_STATUS_BAR = 'trialStatusBar';
7
8export const trialStatusBarStore = new TrialStatusBarStore();
9
10export default function initTrialStatusBar(stores, actions) {
11 stores.trialStatusBar = trialStatusBarStore;
12 const { features } = stores;
13
14 // Toggle trialStatusBar feature
15 reaction(
16 () => features.features.isTrialStatusBarEnabled,
17 (isEnabled) => {
18 if (isEnabled) {
19 debug('Initializing `trialStatusBar` feature');
20 trialStatusBarStore.start(stores, actions);
21 } else if (trialStatusBarStore.isFeatureActive) {
22 debug('Disabling `trialStatusBar` feature');
23 trialStatusBarStore.stop();
24 }
25 },
26 {
27 fireImmediately: true,
28 },
29 );
30}
diff --git a/src/features/trialStatusBar/store.js b/src/features/trialStatusBar/store.js
new file mode 100644
index 000000000..89cf32392
--- /dev/null
+++ b/src/features/trialStatusBar/store.js
@@ -0,0 +1,72 @@
1import {
2 action,
3 observable,
4 computed,
5} from 'mobx';
6import moment from 'moment';
7
8import { trialStatusBarActions } from './actions';
9import { FeatureStore } from '../utils/FeatureStore';
10import { createActionBindings } from '../utils/ActionBinding';
11
12const debug = require('debug')('Franz:feature:trialStatusBar:store');
13
14export default class TrialStatusBarStore extends FeatureStore {
15 @observable isFeatureActive = false;
16
17 @observable isFeatureEnabled = false;
18
19 @computed get showTrialStatusBarOverlay() {
20 if (this.isFeatureActive) {
21 const { team } = this.stores.user;
22 if (team && !this.hideOverlay) {
23 return team.state !== 'expired' && team.isTrial;
24 }
25 }
26
27 return false;
28 }
29
30 @computed get trialEndTime() {
31 if (this.isFeatureActive) {
32 const { team } = this.stores.user;
33
34 if (team && !this.hideOverlay) {
35 return moment.duration(moment().diff(team.trialEnd));
36 }
37 }
38
39 return moment.duration();
40 }
41
42 // ========== PUBLIC API ========= //
43
44 @action start(stores, actions, api) {
45 debug('TrialStatusBarStore::start');
46 this.stores = stores;
47 this.actions = actions;
48 this.api = api;
49
50 // ACTIONS
51
52 this._registerActions(createActionBindings([
53 [trialStatusBarActions.hideOverlay, this._hideOverlay],
54 ]));
55
56 this.isFeatureActive = true;
57 }
58
59 @action stop() {
60 super.stop();
61 debug('TrialStatusBarStore::stop');
62 this.isFeatureActive = false;
63 }
64
65 // ========== PRIVATE METHODS ========= //
66
67 // Actions
68
69 @action _hideOverlay = () => {
70 this.hideOverlay = true;
71 }
72}
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index e991b9909..baa94f6b3 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -7,7 +7,7 @@ import { H1, Icon, ProBadge } from '@meetfranz/ui';
7import { Button } from '@meetfranz/forms/lib'; 7import { Button } from '@meetfranz/forms/lib';
8import ReactTooltip from 'react-tooltip'; 8import ReactTooltip from 'react-tooltip';
9 9
10import { mdiPlusBox, mdiSettings } from '@mdi/js'; 10import { mdiPlusBox, mdiSettings, mdiStar } from '@mdi/js';
11import WorkspaceDrawerItem from './WorkspaceDrawerItem'; 11import WorkspaceDrawerItem from './WorkspaceDrawerItem';
12import { workspaceActions } from '../actions'; 12import { workspaceActions } from '../actions';
13import { workspaceStore } from '../index'; 13import { workspaceStore } from '../index';
@@ -51,6 +51,8 @@ const styles = theme => ({
51 drawer: { 51 drawer: {
52 background: theme.workspaces.drawer.background, 52 background: theme.workspaces.drawer.background,
53 width: `${theme.workspaces.drawer.width}px`, 53 width: `${theme.workspaces.drawer.width}px`,
54 display: 'flex',
55 flexDirection: 'column',
54 }, 56 },
55 headline: { 57 headline: {
56 fontSize: '24px', 58 fontSize: '24px',
@@ -74,6 +76,7 @@ const styles = theme => ({
74 }, 76 },
75 workspaces: { 77 workspaces: {
76 height: 'auto', 78 height: 'auto',
79 overflowY: 'scroll',
77 }, 80 },
78 premiumAnnouncement: { 81 premiumAnnouncement: {
79 padding: '20px', 82 padding: '20px',
@@ -88,7 +91,7 @@ const styles = theme => ({
88 addNewWorkspaceLabel: { 91 addNewWorkspaceLabel: {
89 height: 'auto', 92 height: 'auto',
90 color: theme.workspaces.drawer.buttons.color, 93 color: theme.workspaces.drawer.buttons.color,
91 marginTop: 40, 94 margin: [40, 0],
92 textAlign: 'center', 95 textAlign: 'center',
93 '& > svg': { 96 '& > svg': {
94 fill: theme.workspaces.drawer.buttons.color, 97 fill: theme.workspaces.drawer.buttons.color,
@@ -172,7 +175,7 @@ class WorkspaceDrawer extends Component {
172 className={classes.premiumCtaButton} 175 className={classes.premiumCtaButton}
173 buttonType="primary" 176 buttonType="primary"
174 label={intl.formatMessage(messages.reactivatePremiumAccount)} 177 label={intl.formatMessage(messages.reactivatePremiumAccount)}
175 icon="mdiStar" 178 icon={mdiStar}
176 onClick={() => { 179 onClick={() => {
177 onUpgradeAccountClick(); 180 onUpgradeAccountClick();
178 }} 181 }}
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
index 977b23999..b499e02a4 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.js
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -5,6 +5,7 @@ import { defineMessages, intlShape } from 'react-intl';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6import { Infobox, Badge } from '@meetfranz/ui'; 6import { Infobox, Badge } from '@meetfranz/ui';
7 7
8import { mdiCheckboxMarkedCircleOutline } from '@mdi/js';
8import Loader from '../../../components/ui/Loader'; 9import Loader from '../../../components/ui/Loader';
9import WorkspaceItem from './WorkspaceItem'; 10import WorkspaceItem from './WorkspaceItem';
10import CreateWorkspaceForm from './CreateWorkspaceForm'; 11import CreateWorkspaceForm from './CreateWorkspaceForm';
@@ -128,7 +129,7 @@ class WorkspacesDashboard extends Component {
128 <Appear className={classes.appear}> 129 <Appear className={classes.appear}>
129 <Infobox 130 <Infobox
130 type="success" 131 type="success"
131 icon="mdiCheckboxMarkedCircleOutline" 132 icon={mdiCheckboxMarkedCircleOutline}
132 dismissable 133 dismissable
133 onUnmount={updateWorkspaceRequest.reset} 134 onUnmount={updateWorkspaceRequest.reset}
134 > 135 >
@@ -142,7 +143,7 @@ class WorkspacesDashboard extends Component {
142 <Appear className={classes.appear}> 143 <Appear className={classes.appear}>
143 <Infobox 144 <Infobox
144 type="success" 145 type="success"
145 icon="mdiCheckboxMarkedCircleOutline" 146 icon={mdiCheckboxMarkedCircleOutline}
146 dismissable 147 dismissable
147 onUnmount={deleteWorkspaceRequest.reset} 148 onUnmount={deleteWorkspaceRequest.reset}
148 > 149 >
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js
index 949f8a792..5c90ff180 100644
--- a/src/features/workspaces/store.js
+++ b/src/features/workspaces/store.js
@@ -47,6 +47,11 @@ export default class WorkspacesStore extends FeatureStore {
47 return getUserWorkspacesRequest.result || []; 47 return getUserWorkspacesRequest.result || [];
48 } 48 }
49 49
50 @computed get isLoadingWorkspaces() {
51 if (!this.isFeatureActive) return false;
52 return getUserWorkspacesRequest.isExecutingFirstTime;
53 }
54
50 @computed get settings() { 55 @computed get settings() {
51 return localStorage.getItem('workspaces') || {}; 56 return localStorage.getItem('workspaces') || {};
52 } 57 }
diff --git a/src/helpers/plan-helpers.js b/src/helpers/plan-helpers.js
index e0f1fd89a..ee22e4471 100644
--- a/src/helpers/plan-helpers.js
+++ b/src/helpers/plan-helpers.js
@@ -4,19 +4,19 @@ import { PLANS_MAPPING, PLANS } from '../config';
4const messages = defineMessages({ 4const messages = defineMessages({
5 [PLANS.PRO]: { 5 [PLANS.PRO]: {
6 id: 'pricing.plan.pro', 6 id: 'pricing.plan.pro',
7 defaultMessage: '!!!Franz Professional', 7 defaultMessage: '!!!Professional',
8 }, 8 },
9 [PLANS.PERSONAL]: { 9 [PLANS.PERSONAL]: {
10 id: 'pricing.plan.personal', 10 id: 'pricing.plan.personal',
11 defaultMessage: '!!!Franz Personal', 11 defaultMessage: '!!!Personal',
12 }, 12 },
13 [PLANS.FREE]: { 13 [PLANS.FREE]: {
14 id: 'pricing.plan.free', 14 id: 'pricing.plan.free',
15 defaultMessage: '!!!Franz Free', 15 defaultMessage: '!!!Free',
16 }, 16 },
17 [PLANS.LEGACY]: { 17 [PLANS.LEGACY]: {
18 id: 'pricing.plan.legacy', 18 id: 'pricing.plan.legacy',
19 defaultMessage: '!!!Franz Premium', 19 defaultMessage: '!!!Premium',
20 }, 20 },
21}); 21});
22 22
diff --git a/src/i18n/apply-branding.js b/src/i18n/apply-branding.js
index 1494ce923..d88d8741b 100644
--- a/src/i18n/apply-branding.js
+++ b/src/i18n/apply-branding.js
@@ -12,7 +12,8 @@ const ignore = [
12 'login.customServerQuestion', 12 'login.customServerQuestion',
13 'settings.app.todoServerInfo', 13 'settings.app.todoServerInfo',
14 'settings.app.serverMoneyInfo', 14 'settings.app.serverMoneyInfo',
15 'settings.team.teamsUnavailibleInfo', 15 'settings.team.teamsUnavailableInfo',
16 'settings.app.serverMoneyInfo',
16]; 17];
17 18
18// Files to ignore when applying branding 19// Files to ignore when applying branding
diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/af.json
+++ b/src/i18n/locales/af.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/ar.json
+++ b/src/i18n/locales/ar.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/bs.json
+++ b/src/i18n/locales/bs.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index 306c8e91d..5f55f804a 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Aconsegueix una llicència de suport per a Ferdi", 10 "feature.delayApp.upgrade.action": "Aconsegueix una llicència de suport per a Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Millorar el teu compte", 11 "feature.delayApp.upgrade.actionShort": "Millorar el teu compte",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "No es pot connectar amb els serveis en línia de Ferdi", 49 "global.api.unhealthy": "No es pot connectar amb els serveis en línia de Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "No esteu connectat a Internet.", 51 "global.notConnectedToTheInternet": "No esteu connectat a Internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Enviar", 163 "password.submit.label": "Enviar",
141 "password.successInfo": "Comproveu el vostre correu electrònic", 164 "password.successInfo": "Comproveu el vostre correu electrònic",
142 "premiumFeature.button.upgradeAccount": "Millorar el teu compte", 165 "premiumFeature.button.upgradeAccount": "Millorar el teu compte",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Recarrega {name}", 202 "service.crashHandler.action": "Recarrega {name}",
171 "service.crashHandler.autoReload": "Intentant restablir automàticament {name} en {seconds} segons", 203 "service.crashHandler.autoReload": "Intentant restablir automàticament {name} en {seconds} segons",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Memòria cau", 301 "settings.app.subheadlineCache": "Memòria cau",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ajuda'ns a traduir Ferdi en la teva llengua.", 303 "settings.app.translationHelp": "Ajuda'ns a traduir Ferdi en la teva llengua.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Equip", 388 "settings.team.headline": "Equip",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Empresa", 394 "settings.user.form.accountType.company": "Empresa",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Ja teniu un compte, iniciar la sessió?", 437 "signup.link.login": "Ja teniu un compte, iniciar la sessió?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Crea un compte", 439 "signup.submit.label": "Crea un compte",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel·la", 451 "subscriptionPopup.buttonCancel": "Cancel·la",
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index cd458df49..e8d3827dd 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Podpoř Ferdi a získej Supporter licenci", 10 "feature.delayApp.upgrade.action": "Podpoř Ferdi a získej Supporter licenci",
11 "feature.delayApp.upgrade.actionShort": "Vylepši si svůj účet", 11 "feature.delayApp.upgrade.actionShort": "Vylepši si svůj účet",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nemůžeme připojit Ferdi k online službám", 49 "global.api.unhealthy": "Nemůžeme připojit Ferdi k online službám",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Připojení k internetu není k dispozici.", 51 "global.notConnectedToTheInternet": "Připojení k internetu není k dispozici.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Odeslat", 163 "password.submit.label": "Odeslat",
141 "password.successInfo": "Prosím, zkontrolujte svůj e-mail", 164 "password.successInfo": "Prosím, zkontrolujte svůj e-mail",
142 "premiumFeature.button.upgradeAccount": "Vylepši si svůj účet", 165 "premiumFeature.button.upgradeAccount": "Vylepši si svůj účet",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Načíst znovu {name}", 202 "service.crashHandler.action": "Načíst znovu {name}",
171 "service.crashHandler.autoReload": "Pokus o automatické obnovení {name} za {seconds} sekund", 203 "service.crashHandler.autoReload": "Pokus o automatické obnovení {name} za {seconds} sekund",
172 "service.crashHandler.headline": "Ale ne!", 204 "service.crashHandler.headline": "Ale ne!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Mezipaměť", 301 "settings.app.subheadlineCache": "Mezipaměť",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Pomozte nám přeložit Ferdi do svého jazyka.", 303 "settings.app.translationHelp": "Pomozte nám přeložit Ferdi do svého jazyka.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Tým", 388 "settings.team.headline": "Tým",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Společnost", 394 "settings.user.form.accountType.company": "Společnost",
363 "settings.user.form.accountType.individual": "Jednotlivec", 395 "settings.user.form.accountType.individual": "Jednotlivec",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Již máte účet, přihlásit se?", 437 "signup.link.login": "Již máte účet, přihlásit se?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Vytvořit účet", 439 "signup.submit.label": "Vytvořit účet",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Zrušit", 451 "subscriptionPopup.buttonCancel": "Zrušit",
diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/da.json
+++ b/src/i18n/locales/da.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 1b7b5969a..02e9b2a8e 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Hol dir die kostenlose Ferdi Professional Testlizenz und es geht ohne Warten weiter", 9 "feature.delayApp.trial.headline": "Hol dir die kostenlose Ferdi Professional Testlizenz und es geht ohne Warten weiter",
10 "feature.delayApp.upgrade.action": "Hol dir Ferdi Premium", 10 "feature.delayApp.upgrade.action": "Hol dir Ferdi Premium",
11 "feature.delayApp.upgrade.actionShort": "Account erweitern", 11 "feature.delayApp.upgrade.actionShort": "Account erweitern",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Wähle einen Service mit TAB, ↑ und ↓. Um einen Service zu öffnen, drücke ENTER.", 28 "feature.quickSwitch.info": "Wähle einen Service mit TAB, ↑ und ↓. Um einen Service zu öffnen, drücke ENTER.",
13 "feature.quickSwitch.search": "Suchen...", 29 "feature.quickSwitch.search": "Suchen...",
14 "feature.quickSwitch.title": "Schnellauswahl", 30 "feature.quickSwitch.title": "Schnellauswahl",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos sind jetzt für Premium User verfügbar!", 39 "feature.todos.premium.info": "Ferdi Todos sind jetzt für Premium User verfügbar!",
24 "feature.todos.premium.rollout": "Alle anderen müssen sich noch ein wenig gedulden.", 40 "feature.todos.premium.rollout": "Alle anderen müssen sich noch ein wenig gedulden.",
25 "feature.todos.premium.upgrade": "Account Upgrade", 41 "feature.todos.premium.upgrade": "Account Upgrade",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen", 49 "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen",
27 "global.franzProRequired": "Ferdi Professional benötigt", 50 "global.franzProRequired": "Ferdi Professional benötigt",
28 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.", 51 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Absenden", 163 "password.submit.label": "Absenden",
141 "password.successInfo": "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt", 164 "password.successInfo": "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt",
142 "premiumFeature.button.upgradeAccount": "Account erweitern", 165 "premiumFeature.button.upgradeAccount": "Account erweitern",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Keine Werbung", 167 "pricing.features.adFree": "Keine Werbung",
144 "pricing.features.appDelays": "Keine unnötigen Unterbrechungen", 168 "pricing.features.appDelays": "Keine unnötigen Unterbrechungen",
145 "pricing.features.customWebsites": "Hinzufügen von eigenen Websites", 169 "pricing.features.customWebsites": "Hinzufügen von eigenen Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & andere Hosted Services", 171 "pricing.features.onPremise": "On-premise & andere Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service-Proxies", 173 "pricing.features.serviceProxies": "Service-Proxies",
148 "pricing.features.spellchecker": "Rechtschreibprüfung", 174 "pricing.features.spellchecker": "Rechtschreibprüfung",
149 "pricing.features.teamManagement": "Team-Management", 175 "pricing.features.teamManagement": "Team-Management",
150 "pricing.features.thirdPartyServices": "Integration von Services über Drittanbieter", 176 "pricing.features.thirdPartyServices": "Integration von Services über Drittanbieter",
151 "pricing.features.unlimitedServices": "Unbegrenztes hinzufügen von Services", 177 "pricing.features.unlimitedServices": "Unbegrenztes hinzufügen von Services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Arbeitsbereiche", 180 "pricing.features.workspaces": "Arbeitsbereiche",
153 "pricing.plan.free": "Ferdi kostenlos", 181 "pricing.plan.free": "Ferdi kostenlos",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional jährlich", 188 "pricing.plan.pro-yearly": "Ferdi Professional jährlich",
161 "pricing.trial.cta.accept": "Ja, Upgrade zu Ferdi Professional durchführen", 189 "pricing.trial.cta.accept": "Ja, Upgrade zu Ferdi Professional durchführen",
162 "pricing.trial.cta.skip": "Weiter zu Ferdi", 190 "pricing.trial.cta.skip": "Weiter zu Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren!", 192 "pricing.trial.error": "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren!",
164 "pricing.trial.features.headline": "Ferdi Professional beinhaltet:", 193 "pricing.trial.features.headline": "Ferdi Professional beinhaltet:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Dein persönliches Willkommensangebot:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", 198 "pricing.trial.terms.automaticTrialEnd": "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen",
168 "pricing.trial.terms.headline": "Ohne Bindung, ohne Haken", 199 "pricing.trial.terms.headline": "Ohne Bindung, ohne Haken",
169 "pricing.trial.terms.noCreditCard": "Keine Kreditkarte notwendig", 200 "pricing.trial.terms.noCreditCard": "Keine Kreditkarte notwendig",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "{name} neu laden", 202 "service.crashHandler.action": "{name} neu laden",
171 "service.crashHandler.autoReload": "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", 203 "service.crashHandler.autoReload": "{name} wird in {seconds} Sekunden automatisch wiederhergestellt",
172 "service.crashHandler.headline": "Oh nein!", 204 "service.crashHandler.headline": "Oh nein!",
@@ -265,7 +297,7 @@
265 "settings.app.scheduledDNDInfo": "Die geplante \"Nicht-stören\"-Funktion erlaubt es dir eine Zeitspanne festzulegen, in der du keine Benachrichtigungen von Ferdi erhalten möchtest.", 297 "settings.app.scheduledDNDInfo": "Die geplante \"Nicht-stören\"-Funktion erlaubt es dir eine Zeitspanne festzulegen, in der du keine Benachrichtigungen von Ferdi erhalten möchtest.",
266 "settings.app.scheduledDNDTimeInfo": "Zeiten im 24-Stunden-Format (z.B. 18:00). Endzeit kann vor Beginn der Startzeit sein (z.B. 17:00 Uhr, Ende 09:00), um die Funktion über Nacht zu aktivieren.", 298 "settings.app.scheduledDNDTimeInfo": "Zeiten im 24-Stunden-Format (z.B. 18:00). Endzeit kann vor Beginn der Startzeit sein (z.B. 17:00 Uhr, Ende 09:00), um die Funktion über Nacht zu aktivieren.",
267 "settings.app.serverInfo": "Wir empfehlen dir, dich nach dem Ändern des Servers abzumelden, da Ihre Einstellungen möglicherweise sonst nicht auf dem Server gespeichert werden können.", 299 "settings.app.serverInfo": "Wir empfehlen dir, dich nach dem Ändern des Servers abzumelden, da Ihre Einstellungen möglicherweise sonst nicht auf dem Server gespeichert werden können.",
268 "settings.app.serverMoneyInfo": "Du verwenden den offiziellen Franz Server für Ferdi.\nWir wissen, dass Ferdi es dir erlaubt, alle Funktionen kostenlos zu nutzen, aber du verwendest immer noch Franz's Serverressourcen - für die Franz's Entwickler zahlen müssen.\nBitte überlege dir, [Link 1]für ein Franz Premium-Account zu zahlen[/Link] oder [Link 2]dir einen eigene Server einzurichten[/Link] (wenn du das Wissen und die Ressourcen dazu hast). \nDurch die Nutzung von Ferdi profitieren Sie noch immer stark von Franz's Diensten, Serverressourcen und seiner Entwicklung.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "Dieser Server wird für die Funktion \"Ferdi Todo\" verwendet. (Standard: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "Dieser Server wird für die Funktion \"Ferdi Todo\" verwendet. (Standard: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Hilf uns, Ferdi in Deine Sprache zu übersetzen.", 303 "settings.app.translationHelp": "Hilf uns, Ferdi in Deine Sprache zu übersetzen.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "Mit Ferdi für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.", 389 "settings.team.intro": "Mit Ferdi für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.",
358 "settings.team.manageAction": "Verwalte dein Team auf getferdi.com", 390 "settings.team.manageAction": "Verwalte dein Team auf getferdi.com",
359 "settings.team.teamsUnavailible": "Teams sind nicht verfügbar", 391 "settings.team.teamsUnavailable": "Teams sind nicht verfügbar",
360 "settings.team.teamsUnavailibleInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar. \nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", 392 "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar.\nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.",
361 "settings.team.upgradeAction": "Account Upgrade durchführen", 393 "settings.team.upgradeAction": "Account Upgrade durchführen",
362 "settings.user.form.accountType.company": "Firma", 394 "settings.user.form.accountType.company": "Firma",
363 "settings.user.form.accountType.individual": "Einzelperson", 395 "settings.user.form.accountType.individual": "Einzelperson",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Du hast bereits ein Konto? Melde Dich an.", 437 "signup.link.login": "Du hast bereits ein Konto? Melde Dich an.",
406 "signup.password.label": "Passwort", 438 "signup.password.label": "Passwort",
407 "signup.submit.label": "Konto erstellen", 439 "signup.submit.label": "Konto erstellen",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Ja, kostenlose Ferdi Professional Testlizenz starten", 441 "subscription.cta.activateTrial": "Ja, kostenlose Ferdi Professional Testlizenz starten",
409 "subscription.cta.allOptions": "Alle Optionen anzeigen", 442 "subscription.cta.allOptions": "Alle Optionen anzeigen",
410 "subscription.cta.choosePlan": "Wähle deine Lizenz", 443 "subscription.cta.choosePlan": "Wähle deine Lizenz",
411 "subscription.includedProFeatures": "Die Ferdi Professional Lizenz beinhaltet:", 444 "subscription.includedProFeatures": "Die Ferdi Professional Lizenz beinhaltet:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Account Upgrade",
412 "subscription.teaser.includedFeatures": "Bezahlte Ferdi Lizenzen beinhalten:", 449 "subscription.teaser.includedFeatures": "Bezahlte Ferdi Lizenzen beinhalten:",
413 "subscription.teaser.intro": "Ferdi 5 ist voll gepackt mit vielen neuen Features, damit du für jegliche kommunikative Eventualität gerüstet bist. Nimm dir was du brauchst und leg los!", 450 "subscription.teaser.intro": "Ferdi 5 ist voll gepackt mit vielen neuen Features, damit du für jegliche kommunikative Eventualität gerüstet bist. Nimm dir was du brauchst und leg los!",
414 "subscriptionPopup.buttonCancel": "Abbrechen", 451 "subscriptionPopup.buttonCancel": "Abbrechen",
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index c9f5ac50c..bb65ccdf2 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -539,120 +539,172 @@
539 { 539 {
540 "descriptors": [ 540 "descriptors": [
541 { 541 {
542 "defaultMessage": "!!!Franz Professional", 542 "defaultMessage": "!!!Hi {name}, welcome to Franz",
543 "end": { 543 "end": {
544 "column": 3, 544 "column": 3,
545 "line": 18 545 "line": 18
546 }, 546 },
547 "file": "src/components/auth/Pricing.js", 547 "file": "src/components/auth/Pricing.js",
548 "id": "pricing.trial.headline", 548 "id": "pricing.trial.headline.pro",
549 "start": { 549 "start": {
550 "column": 12, 550 "column": 12,
551 "line": 15 551 "line": 15
552 } 552 }
553 }, 553 },
554 { 554 {
555 "defaultMessage": "!!!Your personal welcome offer:", 555 "defaultMessage": "!!!We have a special treat for you.",
556 "end": { 556 "end": {
557 "column": 3, 557 "column": 3,
558 "line": 22 558 "line": 22
559 }, 559 },
560 "file": "src/components/auth/Pricing.js", 560 "file": "src/components/auth/Pricing.js",
561 "id": "pricing.trial.subheadline", 561 "id": "pricing.trial.intro.specialTreat",
562 "start": { 562 "start": {
563 "column": 17, 563 "column": 16,
564 "line": 19 564 "line": 19
565 } 565 }
566 }, 566 },
567 { 567 {
568 "defaultMessage": "!!!No strings attached", 568 "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.",
569 "end": { 569 "end": {
570 "column": 3, 570 "column": 3,
571 "line": 26 571 "line": 26
572 }, 572 },
573 "file": "src/components/auth/Pricing.js", 573 "file": "src/components/auth/Pricing.js",
574 "id": "pricing.trial.intro.tryPro",
575 "start": {
576 "column": 10,
577 "line": 23
578 }
579 },
580 {
581 "defaultMessage": "!!!Happy messaging,",
582 "end": {
583 "column": 3,
584 "line": 30
585 },
586 "file": "src/components/auth/Pricing.js",
587 "id": "pricing.trial.intro.happyMessaging",
588 "start": {
589 "column": 18,
590 "line": 27
591 }
592 },
593 {
594 "defaultMessage": "!!!No strings attached",
595 "end": {
596 "column": 3,
597 "line": 34
598 },
599 "file": "src/components/auth/Pricing.js",
574 "id": "pricing.trial.terms.headline", 600 "id": "pricing.trial.terms.headline",
575 "start": { 601 "start": {
576 "column": 29, 602 "column": 29,
577 "line": 23 603 "line": 31
578 } 604 }
579 }, 605 },
580 { 606 {
581 "defaultMessage": "!!!No credit card required", 607 "defaultMessage": "!!!No credit card required",
582 "end": { 608 "end": {
583 "column": 3, 609 "column": 3,
584 "line": 30 610 "line": 38
585 }, 611 },
586 "file": "src/components/auth/Pricing.js", 612 "file": "src/components/auth/Pricing.js",
587 "id": "pricing.trial.terms.noCreditCard", 613 "id": "pricing.trial.terms.noCreditCard",
588 "start": { 614 "start": {
589 "column": 16, 615 "column": 16,
590 "line": 27 616 "line": 35
591 } 617 }
592 }, 618 },
593 { 619 {
594 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 620 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
595 "end": { 621 "end": {
596 "column": 3, 622 "column": 3,
597 "line": 34 623 "line": 42
598 }, 624 },
599 "file": "src/components/auth/Pricing.js", 625 "file": "src/components/auth/Pricing.js",
600 "id": "pricing.trial.terms.automaticTrialEnd", 626 "id": "pricing.trial.terms.automaticTrialEnd",
601 "start": { 627 "start": {
602 "column": 21, 628 "column": 21,
603 "line": 31 629 "line": 39
630 }
631 },
632 {
633 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)",
634 "end": {
635 "column": 3,
636 "line": 46
637 },
638 "file": "src/components/auth/Pricing.js",
639 "id": "pricing.trial.terms.trialWorth",
640 "start": {
641 "column": 14,
642 "line": 43
604 } 643 }
605 }, 644 },
606 { 645 {
607 "defaultMessage": "!!!Sorry, we could not activate your trial!", 646 "defaultMessage": "!!!Sorry, we could not activate your trial!",
608 "end": { 647 "end": {
609 "column": 3, 648 "column": 3,
610 "line": 38 649 "line": 50
611 }, 650 },
612 "file": "src/components/auth/Pricing.js", 651 "file": "src/components/auth/Pricing.js",
613 "id": "pricing.trial.error", 652 "id": "pricing.trial.error",
614 "start": { 653 "start": {
615 "column": 19, 654 "column": 19,
616 "line": 35 655 "line": 47
617 } 656 }
618 }, 657 },
619 { 658 {
620 "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", 659 "defaultMessage": "!!!Start my 14-day Franz Professional Trial",
621 "end": { 660 "end": {
622 "column": 3, 661 "column": 3,
623 "line": 42 662 "line": 54
624 }, 663 },
625 "file": "src/components/auth/Pricing.js", 664 "file": "src/components/auth/Pricing.js",
626 "id": "pricing.trial.cta.accept", 665 "id": "pricing.trial.cta.accept",
627 "start": { 666 "start": {
628 "column": 13, 667 "column": 13,
629 "line": 39 668 "line": 51
669 }
670 },
671 {
672 "defaultMessage": "!!!Start using Franz",
673 "end": {
674 "column": 3,
675 "line": 58
676 },
677 "file": "src/components/auth/Pricing.js",
678 "id": "pricing.trial.cta.start",
679 "start": {
680 "column": 12,
681 "line": 55
630 } 682 }
631 }, 683 },
632 { 684 {
633 "defaultMessage": "!!!Continue to Ferdi", 685 "defaultMessage": "!!!Continue to Ferdi",
634 "end": { 686 "end": {
635 "column": 3, 687 "column": 3,
636 "line": 46 688 "line": 62
637 }, 689 },
638 "file": "src/components/auth/Pricing.js", 690 "file": "src/components/auth/Pricing.js",
639 "id": "pricing.trial.cta.skip", 691 "id": "pricing.trial.cta.skip",
640 "start": { 692 "start": {
641 "column": 11, 693 "column": 11,
642 "line": 43 694 "line": 59
643 } 695 }
644 }, 696 },
645 { 697 {
646 "defaultMessage": "!!!Franz Professional includes:", 698 "defaultMessage": "!!!Franz Professional includes:",
647 "end": { 699 "end": {
648 "column": 3, 700 "column": 3,
649 "line": 50 701 "line": 66
650 }, 702 },
651 "file": "src/components/auth/Pricing.js", 703 "file": "src/components/auth/Pricing.js",
652 "id": "pricing.trial.features.headline", 704 "id": "pricing.trial.features.headline",
653 "start": { 705 "start": {
654 "column": 20, 706 "column": 20,
655 "line": 47 707 "line": 63
656 } 708 }
657 } 709 }
658 ], 710 ],
@@ -882,52 +934,52 @@
882 "defaultMessage": "!!!Your services have been updated.", 934 "defaultMessage": "!!!Your services have been updated.",
883 "end": { 935 "end": {
884 "column": 3, 936 "column": 3,
885 "line": 31 937 "line": 33
886 }, 938 },
887 "file": "src/components/layout/AppLayout.js", 939 "file": "src/components/layout/AppLayout.js",
888 "id": "infobar.servicesUpdated", 940 "id": "infobar.servicesUpdated",
889 "start": { 941 "start": {
890 "column": 19, 942 "column": 19,
891 "line": 28 943 "line": 30
892 } 944 }
893 }, 945 },
894 { 946 {
895 "defaultMessage": "!!!Reload services", 947 "defaultMessage": "!!!Reload services",
896 "end": { 948 "end": {
897 "column": 3, 949 "column": 3,
898 "line": 35 950 "line": 37
899 }, 951 },
900 "file": "src/components/layout/AppLayout.js", 952 "file": "src/components/layout/AppLayout.js",
901 "id": "infobar.buttonReloadServices", 953 "id": "infobar.buttonReloadServices",
902 "start": { 954 "start": {
903 "column": 24, 955 "column": 24,
904 "line": 32 956 "line": 34
905 } 957 }
906 }, 958 },
907 { 959 {
908 "defaultMessage": "!!!Could not load services and user information", 960 "defaultMessage": "!!!Could not load services and user information",
909 "end": { 961 "end": {
910 "column": 3, 962 "column": 3,
911 "line": 39 963 "line": 41
912 }, 964 },
913 "file": "src/components/layout/AppLayout.js", 965 "file": "src/components/layout/AppLayout.js",
914 "id": "infobar.requiredRequestsFailed", 966 "id": "infobar.requiredRequestsFailed",
915 "start": { 967 "start": {
916 "column": 26, 968 "column": 26,
917 "line": 36 969 "line": 38
918 } 970 }
919 }, 971 },
920 { 972 {
921 "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 973 "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
922 "end": { 974 "end": {
923 "column": 3, 975 "column": 3,
924 "line": 43 976 "line": 45
925 }, 977 },
926 "file": "src/components/layout/AppLayout.js", 978 "file": "src/components/layout/AppLayout.js",
927 "id": "infobar.authRequestFailed", 979 "id": "infobar.authRequestFailed",
928 "start": { 980 "start": {
929 "column": 21, 981 "column": 21,
930 "line": 40 982 "line": 42
931 } 983 }
932 } 984 }
933 ], 985 ],
@@ -1733,104 +1785,104 @@
1733 "defaultMessage": "!!!Available services", 1785 "defaultMessage": "!!!Available services",
1734 "end": { 1786 "end": {
1735 "column": 3, 1787 "column": 3,
1736 "line": 17 1788 "line": 20
1737 }, 1789 },
1738 "file": "src/components/settings/navigation/SettingsNavigation.js", 1790 "file": "src/components/settings/navigation/SettingsNavigation.js",
1739 "id": "settings.navigation.availableServices", 1791 "id": "settings.navigation.availableServices",
1740 "start": { 1792 "start": {
1741 "column": 21, 1793 "column": 21,
1742 "line": 14 1794 "line": 17
1743 } 1795 }
1744 }, 1796 },
1745 { 1797 {
1746 "defaultMessage": "!!!Your services", 1798 "defaultMessage": "!!!Your services",
1747 "end": { 1799 "end": {
1748 "column": 3, 1800 "column": 3,
1749 "line": 21 1801 "line": 24
1750 }, 1802 },
1751 "file": "src/components/settings/navigation/SettingsNavigation.js", 1803 "file": "src/components/settings/navigation/SettingsNavigation.js",
1752 "id": "settings.navigation.yourServices", 1804 "id": "settings.navigation.yourServices",
1753 "start": { 1805 "start": {
1754 "column": 16, 1806 "column": 16,
1755 "line": 18 1807 "line": 21
1756 } 1808 }
1757 }, 1809 },
1758 { 1810 {
1759 "defaultMessage": "!!!Your workspaces", 1811 "defaultMessage": "!!!Your workspaces",
1760 "end": { 1812 "end": {
1761 "column": 3, 1813 "column": 3,
1762 "line": 25 1814 "line": 28
1763 }, 1815 },
1764 "file": "src/components/settings/navigation/SettingsNavigation.js", 1816 "file": "src/components/settings/navigation/SettingsNavigation.js",
1765 "id": "settings.navigation.yourWorkspaces", 1817 "id": "settings.navigation.yourWorkspaces",
1766 "start": { 1818 "start": {
1767 "column": 18, 1819 "column": 18,
1768 "line": 22 1820 "line": 25
1769 } 1821 }
1770 }, 1822 },
1771 { 1823 {
1772 "defaultMessage": "!!!Account", 1824 "defaultMessage": "!!!Account",
1773 "end": { 1825 "end": {
1774 "column": 3, 1826 "column": 3,
1775 "line": 29 1827 "line": 32
1776 }, 1828 },
1777 "file": "src/components/settings/navigation/SettingsNavigation.js", 1829 "file": "src/components/settings/navigation/SettingsNavigation.js",
1778 "id": "settings.navigation.account", 1830 "id": "settings.navigation.account",
1779 "start": { 1831 "start": {
1780 "column": 11, 1832 "column": 11,
1781 "line": 26 1833 "line": 29
1782 } 1834 }
1783 }, 1835 },
1784 { 1836 {
1785 "defaultMessage": "!!!Manage Team", 1837 "defaultMessage": "!!!Manage Team",
1786 "end": { 1838 "end": {
1787 "column": 3, 1839 "column": 3,
1788 "line": 33 1840 "line": 36
1789 }, 1841 },
1790 "file": "src/components/settings/navigation/SettingsNavigation.js", 1842 "file": "src/components/settings/navigation/SettingsNavigation.js",
1791 "id": "settings.navigation.team", 1843 "id": "settings.navigation.team",
1792 "start": { 1844 "start": {
1793 "column": 8, 1845 "column": 8,
1794 "line": 30 1846 "line": 33
1795 } 1847 }
1796 }, 1848 },
1797 { 1849 {
1798 "defaultMessage": "!!!Settings", 1850 "defaultMessage": "!!!Settings",
1799 "end": { 1851 "end": {
1800 "column": 3, 1852 "column": 3,
1801 "line": 37 1853 "line": 40
1802 }, 1854 },
1803 "file": "src/components/settings/navigation/SettingsNavigation.js", 1855 "file": "src/components/settings/navigation/SettingsNavigation.js",
1804 "id": "settings.navigation.settings", 1856 "id": "settings.navigation.settings",
1805 "start": { 1857 "start": {
1806 "column": 12, 1858 "column": 12,
1807 "line": 34 1859 "line": 37
1808 } 1860 }
1809 }, 1861 },
1810 { 1862 {
1811 "defaultMessage": "!!!Support Ferdi", 1863 "defaultMessage": "!!!Support Ferdi",
1812 "end": { 1864 "end": {
1813 "column": 3, 1865 "column": 3,
1814 "line": 41 1866 "line": 44
1815 }, 1867 },
1816 "file": "src/components/settings/navigation/SettingsNavigation.js", 1868 "file": "src/components/settings/navigation/SettingsNavigation.js",
1817 "id": "settings.navigation.supportFerdi", 1869 "id": "settings.navigation.supportFerdi",
1818 "start": { 1870 "start": {
1819 "column": 16, 1871 "column": 16,
1820 "line": 38 1872 "line": 41
1821 } 1873 }
1822 }, 1874 },
1823 { 1875 {
1824 "defaultMessage": "!!!Logout", 1876 "defaultMessage": "!!!Logout",
1825 "end": { 1877 "end": {
1826 "column": 3, 1878 "column": 3,
1827 "line": 45 1879 "line": 48
1828 }, 1880 },
1829 "file": "src/components/settings/navigation/SettingsNavigation.js", 1881 "file": "src/components/settings/navigation/SettingsNavigation.js",
1830 "id": "settings.navigation.logout", 1882 "id": "settings.navigation.logout",
1831 "start": { 1883 "start": {
1832 "column": 10, 1884 "column": 10,
1833 "line": 42 1885 "line": 45
1834 } 1886 }
1835 } 1887 }
1836 ], 1888 ],
@@ -3083,26 +3135,26 @@
3083 } 3135 }
3084 }, 3136 },
3085 { 3137 {
3086 "defaultMessage": "!!!Teams are unavailible", 3138 "defaultMessage": "!!!Teams are unavailable",
3087 "end": { 3139 "end": {
3088 "column": 3, 3140 "column": 3,
3089 "line": 44 3141 "line": 44
3090 }, 3142 },
3091 "file": "src/components/settings/team/TeamDashboard.js", 3143 "file": "src/components/settings/team/TeamDashboard.js",
3092 "id": "settings.team.teamsUnavailible", 3144 "id": "settings.team.teamsUnavailable",
3093 "start": { 3145 "start": {
3094 "column": 20, 3146 "column": 20,
3095 "line": 41 3147 "line": 41
3096 } 3148 }
3097 }, 3149 },
3098 { 3150 {
3099 "defaultMessage": "!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 3151 "defaultMessage": "!!!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.",
3100 "end": { 3152 "end": {
3101 "column": 3, 3153 "column": 3,
3102 "line": 48 3154 "line": 48
3103 }, 3155 },
3104 "file": "src/components/settings/team/TeamDashboard.js", 3156 "file": "src/components/settings/team/TeamDashboard.js",
3105 "id": "settings.team.teamsUnavailibleInfo", 3157 "id": "settings.team.teamsUnavailableInfo",
3106 "start": { 3158 "start": {
3107 "column": 24, 3159 "column": 24,
3108 "line": 45 3160 "line": 45
@@ -3495,133 +3547,198 @@
3495 { 3547 {
3496 "descriptors": [ 3548 "descriptors": [
3497 { 3549 {
3550 "defaultMessage": "!!!Choose from more than 70 Services",
3551 "end": {
3552 "column": 3,
3553 "line": 12
3554 },
3555 "file": "src/components/ui/FeatureList.js",
3556 "id": "pricing.features.recipes",
3557 "start": {
3558 "column": 20,
3559 "line": 9
3560 }
3561 },
3562 {
3563 "defaultMessage": "!!!Account Synchronisation",
3564 "end": {
3565 "column": 3,
3566 "line": 16
3567 },
3568 "file": "src/components/ui/FeatureList.js",
3569 "id": "pricing.features.accountSync",
3570 "start": {
3571 "column": 15,
3572 "line": 13
3573 }
3574 },
3575 {
3576 "defaultMessage": "!!!Desktop Notifications",
3577 "end": {
3578 "column": 3,
3579 "line": 20
3580 },
3581 "file": "src/components/ui/FeatureList.js",
3582 "id": "pricing.features.desktopNotifications",
3583 "start": {
3584 "column": 24,
3585 "line": 17
3586 }
3587 },
3588 {
3498 "defaultMessage": "!!!Add unlimited services", 3589 "defaultMessage": "!!!Add unlimited services",
3499 "end": { 3590 "end": {
3500 "column": 3, 3591 "column": 3,
3501 "line": 11 3592 "line": 24
3502 }, 3593 },
3503 "file": "src/components/ui/FeatureList.js", 3594 "file": "src/components/ui/FeatureList.js",
3504 "id": "pricing.features.unlimitedServices", 3595 "id": "pricing.features.unlimitedServices",
3505 "start": { 3596 "start": {
3506 "column": 21, 3597 "column": 21,
3507 "line": 8 3598 "line": 21
3599 }
3600 },
3601 {
3602 "defaultMessage": "!!!Add up to 3 services",
3603 "end": {
3604 "column": 3,
3605 "line": 28
3606 },
3607 "file": "src/components/ui/FeatureList.js",
3608 "id": "pricing.features.upToThreeServices",
3609 "start": {
3610 "column": 21,
3611 "line": 25
3612 }
3613 },
3614 {
3615 "defaultMessage": "!!!Add up to 6 services",
3616 "end": {
3617 "column": 3,
3618 "line": 32
3619 },
3620 "file": "src/components/ui/FeatureList.js",
3621 "id": "pricing.features.upToSixServices",
3622 "start": {
3623 "column": 19,
3624 "line": 29
3508 } 3625 }
3509 }, 3626 },
3510 { 3627 {
3511 "defaultMessage": "!!!Spellchecker support", 3628 "defaultMessage": "!!!Spellchecker support",
3512 "end": { 3629 "end": {
3513 "column": 3, 3630 "column": 3,
3514 "line": 15 3631 "line": 36
3515 }, 3632 },
3516 "file": "src/components/ui/FeatureList.js", 3633 "file": "src/components/ui/FeatureList.js",
3517 "id": "pricing.features.spellchecker", 3634 "id": "pricing.features.spellchecker",
3518 "start": { 3635 "start": {
3519 "column": 16, 3636 "column": 16,
3520 "line": 12 3637 "line": 33
3521 } 3638 }
3522 }, 3639 },
3523 { 3640 {
3524 "defaultMessage": "!!!Workspaces", 3641 "defaultMessage": "!!!Workspaces",
3525 "end": { 3642 "end": {
3526 "column": 3, 3643 "column": 3,
3527 "line": 19 3644 "line": 40
3528 }, 3645 },
3529 "file": "src/components/ui/FeatureList.js", 3646 "file": "src/components/ui/FeatureList.js",
3530 "id": "pricing.features.workspaces", 3647 "id": "pricing.features.workspaces",
3531 "start": { 3648 "start": {
3532 "column": 14, 3649 "column": 14,
3533 "line": 16 3650 "line": 37
3534 } 3651 }
3535 }, 3652 },
3536 { 3653 {
3537 "defaultMessage": "!!!Add Custom Websites", 3654 "defaultMessage": "!!!Add Custom Websites",
3538 "end": { 3655 "end": {
3539 "column": 3, 3656 "column": 3,
3540 "line": 23 3657 "line": 44
3541 }, 3658 },
3542 "file": "src/components/ui/FeatureList.js", 3659 "file": "src/components/ui/FeatureList.js",
3543 "id": "pricing.features.customWebsites", 3660 "id": "pricing.features.customWebsites",
3544 "start": { 3661 "start": {
3545 "column": 18, 3662 "column": 18,
3546 "line": 20 3663 "line": 41
3547 } 3664 }
3548 }, 3665 },
3549 { 3666 {
3550 "defaultMessage": "!!!On-premise & other Hosted Services", 3667 "defaultMessage": "!!!On-premise & other Hosted Services",
3551 "end": { 3668 "end": {
3552 "column": 3, 3669 "column": 3,
3553 "line": 27 3670 "line": 48
3554 }, 3671 },
3555 "file": "src/components/ui/FeatureList.js", 3672 "file": "src/components/ui/FeatureList.js",
3556 "id": "pricing.features.onPremise", 3673 "id": "pricing.features.onPremise",
3557 "start": { 3674 "start": {
3558 "column": 13, 3675 "column": 13,
3559 "line": 24 3676 "line": 45
3560 } 3677 }
3561 }, 3678 },
3562 { 3679 {
3563 "defaultMessage": "!!!Install 3rd party services", 3680 "defaultMessage": "!!!Install 3rd party services",
3564 "end": { 3681 "end": {
3565 "column": 3, 3682 "column": 3,
3566 "line": 31 3683 "line": 52
3567 }, 3684 },
3568 "file": "src/components/ui/FeatureList.js", 3685 "file": "src/components/ui/FeatureList.js",
3569 "id": "pricing.features.thirdPartyServices", 3686 "id": "pricing.features.thirdPartyServices",
3570 "start": { 3687 "start": {
3571 "column": 22, 3688 "column": 22,
3572 "line": 28 3689 "line": 49
3573 } 3690 }
3574 }, 3691 },
3575 { 3692 {
3576 "defaultMessage": "!!!Service Proxies", 3693 "defaultMessage": "!!!Service Proxies",
3577 "end": { 3694 "end": {
3578 "column": 3, 3695 "column": 3,
3579 "line": 35 3696 "line": 56
3580 }, 3697 },
3581 "file": "src/components/ui/FeatureList.js", 3698 "file": "src/components/ui/FeatureList.js",
3582 "id": "pricing.features.serviceProxies", 3699 "id": "pricing.features.serviceProxies",
3583 "start": { 3700 "start": {
3584 "column": 18, 3701 "column": 18,
3585 "line": 32 3702 "line": 53
3586 } 3703 }
3587 }, 3704 },
3588 { 3705 {
3589 "defaultMessage": "!!!Team Management", 3706 "defaultMessage": "!!!Team Management",
3590 "end": { 3707 "end": {
3591 "column": 3, 3708 "column": 3,
3592 "line": 39 3709 "line": 60
3593 }, 3710 },
3594 "file": "src/components/ui/FeatureList.js", 3711 "file": "src/components/ui/FeatureList.js",
3595 "id": "pricing.features.teamManagement", 3712 "id": "pricing.features.teamManagement",
3596 "start": { 3713 "start": {
3597 "column": 18, 3714 "column": 18,
3598 "line": 36 3715 "line": 57
3599 } 3716 }
3600 }, 3717 },
3601 { 3718 {
3602 "defaultMessage": "!!!No Waiting Screens", 3719 "defaultMessage": "!!!No Waiting Screens",
3603 "end": { 3720 "end": {
3604 "column": 3, 3721 "column": 3,
3605 "line": 43 3722 "line": 64
3606 }, 3723 },
3607 "file": "src/components/ui/FeatureList.js", 3724 "file": "src/components/ui/FeatureList.js",
3608 "id": "pricing.features.appDelays", 3725 "id": "pricing.features.appDelays",
3609 "start": { 3726 "start": {
3610 "column": 13, 3727 "column": 13,
3611 "line": 40 3728 "line": 61
3612 } 3729 }
3613 }, 3730 },
3614 { 3731 {
3615 "defaultMessage": "!!!Forever ad-free", 3732 "defaultMessage": "!!!Forever ad-free",
3616 "end": { 3733 "end": {
3617 "column": 3, 3734 "column": 3,
3618 "line": 47 3735 "line": 68
3619 }, 3736 },
3620 "file": "src/components/ui/FeatureList.js", 3737 "file": "src/components/ui/FeatureList.js",
3621 "id": "pricing.features.adFree", 3738 "id": "pricing.features.adFree",
3622 "start": { 3739 "start": {
3623 "column": 10, 3740 "column": 10,
3624 "line": 44 3741 "line": 65
3625 } 3742 }
3626 } 3743 }
3627 ], 3744 ],
@@ -4450,7 +4567,7 @@
4450 } 4567 }
4451 }, 4568 },
4452 { 4569 {
4453 "defaultMessage": "!!!Get a Franz Supporter License", 4570 "defaultMessage": "!!!Upgrade Franz",
4454 "end": { 4571 "end": {
4455 "column": 3, 4572 "column": 3,
4456 "line": 25 4573 "line": 25
@@ -4494,6 +4611,299 @@
4494 { 4611 {
4495 "descriptors": [ 4612 "descriptors": [
4496 { 4613 {
4614 "defaultMessage": "!!!per month",
4615 "end": {
4616 "column": 3,
4617 "line": 18
4618 },
4619 "file": "src/features/planSelection/components/PlanItem.js",
4620 "id": "subscription.interval.perMonth",
4621 "start": {
4622 "column": 12,
4623 "line": 15
4624 }
4625 },
4626 {
4627 "defaultMessage": "!!!per month & user",
4628 "end": {
4629 "column": 3,
4630 "line": 22
4631 },
4632 "file": "src/features/planSelection/components/PlanItem.js",
4633 "id": "subscription.interval.perMonthPerUser",
4634 "start": {
4635 "column": 19,
4636 "line": 19
4637 }
4638 },
4639 {
4640 "defaultMessage": "!!!Best value",
4641 "end": {
4642 "column": 3,
4643 "line": 26
4644 },
4645 "file": "src/features/planSelection/components/PlanItem.js",
4646 "id": "subscription.bestValue",
4647 "start": {
4648 "column": 13,
4649 "line": 23
4650 }
4651 }
4652 ],
4653 "path": "src/features/planSelection/components/PlanItem.json"
4654 },
4655 {
4656 "descriptors": [
4657 {
4658 "defaultMessage": "!!!Are you ready to choose, {name}",
4659 "end": {
4660 "column": 3,
4661 "line": 20
4662 },
4663 "file": "src/features/planSelection/components/PlanSelection.js",
4664 "id": "feature.planSelection.fullscreen.welcome",
4665 "start": {
4666 "column": 11,
4667 "line": 17
4668 }
4669 },
4670 {
4671 "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
4672 "end": {
4673 "column": 3,
4674 "line": 24
4675 },
4676 "file": "src/features/planSelection/components/PlanSelection.js",
4677 "id": "feature.planSelection.fullscreen.subheadline",
4678 "start": {
4679 "column": 15,
4680 "line": 21
4681 }
4682 },
4683 {
4684 "defaultMessage": "!!!Basic functionality",
4685 "end": {
4686 "column": 3,
4687 "line": 28
4688 },
4689 "file": "src/features/planSelection/components/PlanSelection.js",
4690 "id": "feature.planSelection.free.text",
4691 "start": {
4692 "column": 12,
4693 "line": 25
4694 }
4695 },
4696 {
4697 "defaultMessage": "!!!More services, no waiting - ideal for personal use.",
4698 "end": {
4699 "column": 3,
4700 "line": 32
4701 },
4702 "file": "src/features/planSelection/components/PlanSelection.js",
4703 "id": "feature.planSelection.personal.text",
4704 "start": {
4705 "column": 16,
4706 "line": 29
4707 }
4708 },
4709 {
4710 "defaultMessage": "!!!Unlimited services and professional features for you - and your team.",
4711 "end": {
4712 "column": 3,
4713 "line": 36
4714 },
4715 "file": "src/features/planSelection/components/PlanSelection.js",
4716 "id": "feature.planSelection.pro.text",
4717 "start": {
4718 "column": 20,
4719 "line": 33
4720 }
4721 },
4722 {
4723 "defaultMessage": "!!!Stay on Free",
4724 "end": {
4725 "column": 3,
4726 "line": 40
4727 },
4728 "file": "src/features/planSelection/components/PlanSelection.js",
4729 "id": "feature.planSelection.cta.stayOnFree",
4730 "start": {
4731 "column": 17,
4732 "line": 37
4733 }
4734 },
4735 {
4736 "defaultMessage": "!!!Downgrade to Free",
4737 "end": {
4738 "column": 3,
4739 "line": 44
4740 },
4741 "file": "src/features/planSelection/components/PlanSelection.js",
4742 "id": "feature.planSelection.cta.ctaDowngradeFree",
4743 "start": {
4744 "column": 20,
4745 "line": 41
4746 }
4747 },
4748 {
4749 "defaultMessage": "!!!Start my free 14-days Trial",
4750 "end": {
4751 "column": 3,
4752 "line": 48
4753 },
4754 "file": "src/features/planSelection/components/PlanSelection.js",
4755 "id": "feature.planSelection.cta.trial",
4756 "start": {
4757 "column": 15,
4758 "line": 45
4759 }
4760 },
4761 {
4762 "defaultMessage": "!!!Choose Personal",
4763 "end": {
4764 "column": 3,
4765 "line": 52
4766 },
4767 "file": "src/features/planSelection/components/PlanSelection.js",
4768 "id": "feature.planSelection.cta.upgradePersonal",
4769 "start": {
4770 "column": 23,
4771 "line": 49
4772 }
4773 },
4774 {
4775 "defaultMessage": "!!!Choose Professional",
4776 "end": {
4777 "column": 3,
4778 "line": 56
4779 },
4780 "file": "src/features/planSelection/components/PlanSelection.js",
4781 "id": "feature.planSelection.cta.upgradePro",
4782 "start": {
4783 "column": 18,
4784 "line": 53
4785 }
4786 },
4787 {
4788 "defaultMessage": "!!!Complete comparison of all plans",
4789 "end": {
4790 "column": 3,
4791 "line": 60
4792 },
4793 "file": "src/features/planSelection/components/PlanSelection.js",
4794 "id": "feature.planSelection.fullFeatureList",
4795 "start": {
4796 "column": 19,
4797 "line": 57
4798 }
4799 },
4800 {
4801 "defaultMessage": "!!!All prices based on yearly payment",
4802 "end": {
4803 "column": 3,
4804 "line": 64
4805 },
4806 "file": "src/features/planSelection/components/PlanSelection.js",
4807 "id": "feature.planSelection.pricesBasedOnAnnualPayment",
4808 "start": {
4809 "column": 30,
4810 "line": 61
4811 }
4812 }
4813 ],
4814 "path": "src/features/planSelection/components/PlanSelection.json"
4815 },
4816 {
4817 "descriptors": [
4818 {
4819 "defaultMessage": "!!!per {interval}",
4820 "end": {
4821 "column": 3,
4822 "line": 19
4823 },
4824 "file": "src/features/planSelection/components/PlanTeaser.js",
4825 "id": "subscription.interval.per",
4826 "start": {
4827 "column": 7,
4828 "line": 16
4829 }
4830 },
4831 {
4832 "defaultMessage": "!!!Upgrade Account",
4833 "end": {
4834 "column": 3,
4835 "line": 23
4836 },
4837 "file": "src/features/planSelection/components/PlanTeaser.js",
4838 "id": "subscription.planItem.upgradeAccount",
4839 "start": {
4840 "column": 7,
4841 "line": 20
4842 }
4843 }
4844 ],
4845 "path": "src/features/planSelection/components/PlanTeaser.json"
4846 },
4847 {
4848 "descriptors": [
4849 {
4850 "defaultMessage": "!!!Downgrade your Franz Plan",
4851 "end": {
4852 "column": 3,
4853 "line": 19
4854 },
4855 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
4856 "id": "feature.planSelection.fullscreen.dialog.title",
4857 "start": {
4858 "column": 15,
4859 "line": 16
4860 }
4861 },
4862 {
4863 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
4864 "end": {
4865 "column": 3,
4866 "line": 23
4867 },
4868 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
4869 "id": "feature.planSelection.fullscreen.dialog.message",
4870 "start": {
4871 "column": 17,
4872 "line": 20
4873 }
4874 },
4875 {
4876 "defaultMessage": "!!!Downgrade to Free",
4877 "end": {
4878 "column": 3,
4879 "line": 27
4880 },
4881 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
4882 "id": "feature.planSelection.fullscreen.dialog.cta.downgrade",
4883 "start": {
4884 "column": 22,
4885 "line": 24
4886 }
4887 },
4888 {
4889 "defaultMessage": "!!!Choose Personal",
4890 "end": {
4891 "column": 3,
4892 "line": 31
4893 },
4894 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
4895 "id": "feature.planSelection.fullscreen.dialog.cta.upgrade",
4896 "start": {
4897 "column": 20,
4898 "line": 28
4899 }
4900 }
4901 ],
4902 "path": "src/features/planSelection/containers/PlanSelectionScreen.json"
4903 },
4904 {
4905 "descriptors": [
4906 {
4497 "defaultMessage": "!!!QuickSwitch", 4907 "defaultMessage": "!!!QuickSwitch",
4498 "end": { 4908 "end": {
4499 "column": 3, 4909 "column": 3,
@@ -4727,6 +5137,107 @@
4727 { 5137 {
4728 "descriptors": [ 5138 "descriptors": [
4729 { 5139 {
5140 "defaultMessage": "!!!Your Free Franz {plan} Trial ends in {time}.",
5141 "end": {
5142 "column": 3,
5143 "line": 16
5144 },
5145 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
5146 "id": "feature.trialStatusBar.restTime",
5147 "start": {
5148 "column": 12,
5149 "line": 13
5150 }
5151 },
5152 {
5153 "defaultMessage": "!!!Your free Franz {plan} Trial has expired, please upgrade your account.",
5154 "end": {
5155 "column": 3,
5156 "line": 20
5157 },
5158 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
5159 "id": "feature.trialStatusBar.expired",
5160 "start": {
5161 "column": 11,
5162 "line": 17
5163 }
5164 },
5165 {
5166 "defaultMessage": "!!!Upgrade now",
5167 "end": {
5168 "column": 3,
5169 "line": 24
5170 },
5171 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
5172 "id": "feature.trialStatusBar.cta",
5173 "start": {
5174 "column": 7,
5175 "line": 21
5176 }
5177 }
5178 ],
5179 "path": "src/features/trialStatusBar/components/TrialStatusBar.json"
5180 },
5181 {
5182 "descriptors": [
5183 {
5184 "defaultMessage": "!!!Downgrade your Franz Plan",
5185 "end": {
5186 "column": 3,
5187 "line": 19
5188 },
5189 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
5190 "id": "feature.trialStatusBar.fullscreen.dialog.title",
5191 "start": {
5192 "column": 15,
5193 "line": 16
5194 }
5195 },
5196 {
5197 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
5198 "end": {
5199 "column": 3,
5200 "line": 23
5201 },
5202 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
5203 "id": "feature.trialStatusBar.fullscreen.dialog.message",
5204 "start": {
5205 "column": 17,
5206 "line": 20
5207 }
5208 },
5209 {
5210 "defaultMessage": "!!!Downgrade to Free",
5211 "end": {
5212 "column": 3,
5213 "line": 27
5214 },
5215 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
5216 "id": "feature.trialStatusBar.fullscreen.dialog.cta.downgrade",
5217 "start": {
5218 "column": 22,
5219 "line": 24
5220 }
5221 },
5222 {
5223 "defaultMessage": "!!!Choose Personal",
5224 "end": {
5225 "column": 3,
5226 "line": 31
5227 },
5228 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
5229 "id": "feature.trialStatusBar.fullscreen.dialog.cta.upgrade",
5230 "start": {
5231 "column": 20,
5232 "line": 28
5233 }
5234 }
5235 ],
5236 "path": "src/features/trialStatusBar/containers/TrialStatusBarScreen.json"
5237 },
5238 {
5239 "descriptors": [
5240 {
4730 "defaultMessage": "!!!Home", 5241 "defaultMessage": "!!!Home",
4731 "end": { 5242 "end": {
4732 "column": 3, 5243 "column": 3,
@@ -5093,104 +5604,104 @@
5093 "defaultMessage": "!!!Your workspaces", 5604 "defaultMessage": "!!!Your workspaces",
5094 "end": { 5605 "end": {
5095 "column": 3, 5606 "column": 3,
5096 "line": 22 5607 "line": 23
5097 }, 5608 },
5098 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5609 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5099 "id": "settings.workspaces.headline", 5610 "id": "settings.workspaces.headline",
5100 "start": { 5611 "start": {
5101 "column": 12, 5612 "column": 12,
5102 "line": 19 5613 "line": 20
5103 } 5614 }
5104 }, 5615 },
5105 { 5616 {
5106 "defaultMessage": "!!!You haven't added any workspaces yet.", 5617 "defaultMessage": "!!!You haven't added any workspaces yet.",
5107 "end": { 5618 "end": {
5108 "column": 3, 5619 "column": 3,
5109 "line": 26 5620 "line": 27
5110 }, 5621 },
5111 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5622 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5112 "id": "settings.workspaces.noWorkspacesAdded", 5623 "id": "settings.workspaces.noWorkspacesAdded",
5113 "start": { 5624 "start": {
5114 "column": 19, 5625 "column": 19,
5115 "line": 23 5626 "line": 24
5116 } 5627 }
5117 }, 5628 },
5118 { 5629 {
5119 "defaultMessage": "!!!Could not load your workspaces", 5630 "defaultMessage": "!!!Could not load your workspaces",
5120 "end": { 5631 "end": {
5121 "column": 3, 5632 "column": 3,
5122 "line": 30 5633 "line": 31
5123 }, 5634 },
5124 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5635 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5125 "id": "settings.workspaces.workspacesRequestFailed", 5636 "id": "settings.workspaces.workspacesRequestFailed",
5126 "start": { 5637 "start": {
5127 "column": 27, 5638 "column": 27,
5128 "line": 27 5639 "line": 28
5129 } 5640 }
5130 }, 5641 },
5131 { 5642 {
5132 "defaultMessage": "!!!Try again", 5643 "defaultMessage": "!!!Try again",
5133 "end": { 5644 "end": {
5134 "column": 3, 5645 "column": 3,
5135 "line": 34 5646 "line": 35
5136 }, 5647 },
5137 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5648 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5138 "id": "settings.workspaces.tryReloadWorkspaces", 5649 "id": "settings.workspaces.tryReloadWorkspaces",
5139 "start": { 5650 "start": {
5140 "column": 23, 5651 "column": 23,
5141 "line": 31 5652 "line": 32
5142 } 5653 }
5143 }, 5654 },
5144 { 5655 {
5145 "defaultMessage": "!!!Your changes have been saved", 5656 "defaultMessage": "!!!Your changes have been saved",
5146 "end": { 5657 "end": {
5147 "column": 3, 5658 "column": 3,
5148 "line": 38 5659 "line": 39
5149 }, 5660 },
5150 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5661 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5151 "id": "settings.workspaces.updatedInfo", 5662 "id": "settings.workspaces.updatedInfo",
5152 "start": { 5663 "start": {
5153 "column": 15, 5664 "column": 15,
5154 "line": 35 5665 "line": 36
5155 } 5666 }
5156 }, 5667 },
5157 { 5668 {
5158 "defaultMessage": "!!!Workspace has been deleted", 5669 "defaultMessage": "!!!Workspace has been deleted",
5159 "end": { 5670 "end": {
5160 "column": 3, 5671 "column": 3,
5161 "line": 42 5672 "line": 43
5162 }, 5673 },
5163 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5674 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5164 "id": "settings.workspaces.deletedInfo", 5675 "id": "settings.workspaces.deletedInfo",
5165 "start": { 5676 "start": {
5166 "column": 15, 5677 "column": 15,
5167 "line": 39 5678 "line": 40
5168 } 5679 }
5169 }, 5680 },
5170 { 5681 {
5171 "defaultMessage": "!!!Info about workspace feature", 5682 "defaultMessage": "!!!Info about workspace feature",
5172 "end": { 5683 "end": {
5173 "column": 3, 5684 "column": 3,
5174 "line": 46 5685 "line": 47
5175 }, 5686 },
5176 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5687 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5177 "id": "settings.workspaces.workspaceFeatureInfo", 5688 "id": "settings.workspaces.workspaceFeatureInfo",
5178 "start": { 5689 "start": {
5179 "column": 24, 5690 "column": 24,
5180 "line": 43 5691 "line": 44
5181 } 5692 }
5182 }, 5693 },
5183 { 5694 {
5184 "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", 5695 "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces",
5185 "end": { 5696 "end": {
5186 "column": 3, 5697 "column": 3,
5187 "line": 50 5698 "line": 51
5188 }, 5699 },
5189 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5700 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
5190 "id": "settings.workspaces.workspaceFeatureHeadline", 5701 "id": "settings.workspaces.workspaceFeatureHeadline",
5191 "start": { 5702 "start": {
5192 "column": 28, 5703 "column": 28,
5193 "line": 47 5704 "line": 48
5194 } 5705 }
5195 } 5706 }
5196 ], 5707 ],
@@ -5217,7 +5728,7 @@
5217 { 5728 {
5218 "descriptors": [ 5729 "descriptors": [
5219 { 5730 {
5220 "defaultMessage": "!!!Franz Professional", 5731 "defaultMessage": "!!!Professional",
5221 "end": { 5732 "end": {
5222 "column": 3, 5733 "column": 3,
5223 "line": 8 5734 "line": 8
@@ -5230,7 +5741,7 @@
5230 } 5741 }
5231 }, 5742 },
5232 { 5743 {
5233 "defaultMessage": "!!!Franz Personal", 5744 "defaultMessage": "!!!Personal",
5234 "end": { 5745 "end": {
5235 "column": 3, 5746 "column": 3,
5236 "line": 12 5747 "line": 12
@@ -5243,7 +5754,7 @@
5243 } 5754 }
5244 }, 5755 },
5245 { 5756 {
5246 "defaultMessage": "!!!Franz Free", 5757 "defaultMessage": "!!!Free",
5247 "end": { 5758 "end": {
5248 "column": 3, 5759 "column": 3,
5249 "line": 16 5760 "line": 16
@@ -5256,7 +5767,7 @@
5256 } 5767 }
5257 }, 5768 },
5258 { 5769 {
5259 "defaultMessage": "!!!Franz Premium", 5770 "defaultMessage": "!!!Premium",
5260 "end": { 5771 "end": {
5261 "column": 3, 5772 "column": 3,
5262 "line": 20 5773 "line": 20
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index bba3e7c6d..89c0d62b6 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi", 49 "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Έχετε αποσυνδεθεί από το Διαδίκτυο", 51 "global.notConnectedToTheInternet": "Έχετε αποσυνδεθεί από το Διαδίκτυο",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Υποβολή", 163 "password.submit.label": "Υποβολή",
141 "password.successInfo": "Ελέγξτε το email σας", 164 "password.successInfo": "Ελέγξτε το email σας",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Επαναφόρτωση {name}", 202 "service.crashHandler.action": "Επαναφόρτωση {name}",
171 "service.crashHandler.autoReload": "Γίνεται προσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτερόλεπτα", 203 "service.crashHandler.autoReload": "Γίνεται προσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτερόλεπτα",
172 "service.crashHandler.headline": "Ω, όχι!", 204 "service.crashHandler.headline": "Ω, όχι!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Λανθάνουσα μνήμη", 301 "settings.app.subheadlineCache": "Λανθάνουσα μνήμη",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Βοηθήστε μας να μεταφράσουμε το Ferdi στη δική σας γλώσσα.", 303 "settings.app.translationHelp": "Βοηθήστε μας να μεταφράσουμε το Ferdi στη δική σας γλώσσα.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Ομάδα", 388 "settings.team.headline": "Ομάδα",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Εταιρεία", 394 "settings.user.form.accountType.company": "Εταιρεία",
363 "settings.user.form.accountType.individual": "Ατομικός", 395 "settings.user.form.accountType.individual": "Ατομικός",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Έχετε ήδη λογαριασμό? Συνδεθείτε.", 437 "signup.link.login": "Έχετε ήδη λογαριασμό? Συνδεθείτε.",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Δημιουργία λογαριασμού", 439 "signup.submit.label": "Δημιουργία λογαριασμού",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Ακύρωση", 451 "subscriptionPopup.buttonCancel": "Ακύρωση",
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 10f0b7c6f..a34da1848 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index 56462cdcd..e3aad888f 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.", 9 "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.",
10 "feature.delayApp.upgrade.action": "Consigue una Licencia de Soporte de Ferdi", 10 "feature.delayApp.upgrade.action": "Consigue una Licencia de Soporte de Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Mejora tu cuenta", 11 "feature.delayApp.upgrade.actionShort": "Mejora tu cuenta",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Todos de Ferdi está disponible para usuarios premium ahora!", 39 "feature.todos.premium.info": "Todos de Ferdi está disponible para usuarios premium ahora!",
24 "feature.todos.premium.rollout": "El resto de los usuarios deberán esperar un poco más de tiempo.", 40 "feature.todos.premium.rollout": "El resto de los usuarios deberán esperar un poco más de tiempo.",
25 "feature.todos.premium.upgrade": "Actualizar cuenta", 41 "feature.todos.premium.upgrade": "Actualizar cuenta",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "No es posible conectarse a los servicios en línea de Ferdi.", 49 "global.api.unhealthy": "No es posible conectarse a los servicios en línea de Ferdi.",
27 "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", 50 "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional",
28 "global.notConnectedToTheInternet": "No estás conectado a Internet", 51 "global.notConnectedToTheInternet": "No estás conectado a Internet",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Enviar", 163 "password.submit.label": "Enviar",
141 "password.successInfo": "Por favor revisa tu correo electrónico", 164 "password.successInfo": "Por favor revisa tu correo electrónico",
142 "premiumFeature.button.upgradeAccount": "Mejora tu cuenta", 165 "premiumFeature.button.upgradeAccount": "Mejora tu cuenta",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Sin anuncios para siempre!", 167 "pricing.features.adFree": "Sin anuncios para siempre!",
144 "pricing.features.appDelays": "Sin pantallas de espera", 168 "pricing.features.appDelays": "Sin pantallas de espera",
145 "pricing.features.customWebsites": "Agregue sitios personalizados", 169 "pricing.features.customWebsites": "Agregue sitios personalizados",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "En sitio y otros servicios alojados", 171 "pricing.features.onPremise": "En sitio y otros servicios alojados",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Apoderados de Servicio", 173 "pricing.features.serviceProxies": "Apoderados de Servicio",
148 "pricing.features.spellchecker": "Soporte de corrector ortográfico", 174 "pricing.features.spellchecker": "Soporte de corrector ortográfico",
149 "pricing.features.teamManagement": "Administración de Equipo", 175 "pricing.features.teamManagement": "Administración de Equipo",
150 "pricing.features.thirdPartyServices": "Instalar servicios de terceros", 176 "pricing.features.thirdPartyServices": "Instalar servicios de terceros",
151 "pricing.features.unlimitedServices": "Agregar servicios ilimitados", 177 "pricing.features.unlimitedServices": "Agregar servicios ilimitados",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Espacios de trabajo", 180 "pricing.features.workspaces": "Espacios de trabajo",
153 "pricing.plan.free": "Ferdi gratis", 181 "pricing.plan.free": "Ferdi gratis",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Profesional Anual", 188 "pricing.plan.pro-yearly": "Ferdi Profesional Anual",
161 "pricing.trial.cta.accept": "Si, actualizar mi cuenta a Ferdi Profesional", 189 "pricing.trial.cta.accept": "Si, actualizar mi cuenta a Ferdi Profesional",
162 "pricing.trial.cta.skip": "Continuar a Ferdi", 190 "pricing.trial.cta.skip": "Continuar a Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Disculpe, no pudimos activar su prueba!", 192 "pricing.trial.error": "Disculpe, no pudimos activar su prueba!",
164 "pricing.trial.features.headline": "Ferdi Profesional incluye:", 193 "pricing.trial.features.headline": "Ferdi Profesional incluye:",
165 "pricing.trial.headline": "Ferdi Profesional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Su oferta de bienvenida personal", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Su prueba gratis finaliza automáticamente después de 14 días", 198 "pricing.trial.terms.automaticTrialEnd": "Su prueba gratis finaliza automáticamente después de 14 días",
168 "pricing.trial.terms.headline": "Sin condiciones", 199 "pricing.trial.terms.headline": "Sin condiciones",
169 "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", 200 "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Recargar {name}", 202 "service.crashHandler.action": "Recargar {name}",
171 "service.crashHandler.autoReload": "Intentando recuperar automáticamente {name} en {seconds} segundos", 203 "service.crashHandler.autoReload": "Intentando recuperar automáticamente {name} en {seconds} segundos",
172 "service.crashHandler.headline": "¡Oh, no!", 204 "service.crashHandler.headline": "¡Oh, no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Caché", 301 "settings.app.subheadlineCache": "Caché",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ayúdanos a traducir Ferdi a tu idioma.", 303 "settings.app.translationHelp": "Ayúdanos a traducir Ferdi a tu idioma.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Equipo", 388 "settings.team.headline": "Equipo",
357 "settings.team.intro": "¿Usted y su equipo usan a Ferdi? Ahora puede administrar las suscripciones Premium para tantos colegas, amigos o familiares como desee, todo desde una misma cuenta.", 389 "settings.team.intro": "¿Usted y su equipo usan a Ferdi? Ahora puede administrar las suscripciones Premium para tantos colegas, amigos o familiares como desee, todo desde una misma cuenta.",
358 "settings.team.manageAction": "Gestione su equipo en getferdi.com", 390 "settings.team.manageAction": "Gestione su equipo en getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Actualiza tu cuenta", 393 "settings.team.upgradeAction": "Actualiza tu cuenta",
362 "settings.user.form.accountType.company": "Empresa", 394 "settings.user.form.accountType.company": "Empresa",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Ya tienes una cuenta, ¿Iniciar sesión?", 437 "signup.link.login": "Ya tienes una cuenta, ¿Iniciar sesión?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Crear cuenta", 439 "signup.submit.label": "Crear cuenta",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Actualizar cuenta",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancelar", 451 "subscriptionPopup.buttonCancel": "Cancelar",
diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/fi.json
+++ b/src/i18n/locales/fi.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index 4026ead28..1ae8d6164 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Prendre l'essai gratuit de 14 jours de Ferdi Professionnel et esquiver la ligne", 9 "feature.delayApp.trial.headline": "Prendre l'essai gratuit de 14 jours de Ferdi Professionnel et esquiver la ligne",
10 "feature.delayApp.upgrade.action": "Acheter une license Ferdi", 10 "feature.delayApp.upgrade.action": "Acheter une license Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Augmenter le niveau de mon compte", 11 "feature.delayApp.upgrade.actionShort": "Augmenter le niveau de mon compte",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Sélectionner un service avec TAB, ↑ et ↓. Ouvrir un service avec ENTER.", 28 "feature.quickSwitch.info": "Sélectionner un service avec TAB, ↑ et ↓. Ouvrir un service avec ENTER.",
13 "feature.quickSwitch.search": "Rechercher...", 29 "feature.quickSwitch.search": "Rechercher...",
14 "feature.quickSwitch.title": "Changement rapide", 30 "feature.quickSwitch.title": "Changement rapide",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos est disponible aux utilisateurs premium maintenant!", 39 "feature.todos.premium.info": "Ferdi Todos est disponible aux utilisateurs premium maintenant!",
24 "feature.todos.premium.rollout": "Tous le monde devra attendre un peux plus longtemps.", 40 "feature.todos.premium.rollout": "Tous le monde devra attendre un peux plus longtemps.",
25 "feature.todos.premium.upgrade": "Améliorez votre compte", 41 "feature.todos.premium.upgrade": "Améliorez votre compte",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi", 49 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi",
27 "global.franzProRequired": "Ferdi Professionnel Requis", 50 "global.franzProRequired": "Ferdi Professionnel Requis",
28 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", 51 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Soumettre", 163 "password.submit.label": "Soumettre",
141 "password.successInfo": "Merci de consulter vos emails", 164 "password.successInfo": "Merci de consulter vos emails",
142 "premiumFeature.button.upgradeAccount": "Augmenter le niveau de mon compte", 165 "premiumFeature.button.upgradeAccount": "Augmenter le niveau de mon compte",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Toujours sans pub", 167 "pricing.features.adFree": "Toujours sans pub",
144 "pricing.features.appDelays": "Plus d'écrans d'attente", 168 "pricing.features.appDelays": "Plus d'écrans d'attente",
145 "pricing.features.customWebsites": "Ajouter des sites web modifiés", 169 "pricing.features.customWebsites": "Ajouter des sites web modifiés",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "Services hébergés sur place et autre", 171 "pricing.features.onPremise": "Services hébergés sur place et autre",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxy", 173 "pricing.features.serviceProxies": "Service Proxy",
148 "pricing.features.spellchecker": "Support du correcteur orthographique", 174 "pricing.features.spellchecker": "Support du correcteur orthographique",
149 "pricing.features.teamManagement": "Gestion d'équipe", 175 "pricing.features.teamManagement": "Gestion d'équipe",
150 "pricing.features.thirdPartyServices": "Installer des services tiers", 176 "pricing.features.thirdPartyServices": "Installer des services tiers",
151 "pricing.features.unlimitedServices": "Ajouter des services illimités", 177 "pricing.features.unlimitedServices": "Ajouter des services illimités",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Espace de travail", 180 "pricing.features.workspaces": "Espace de travail",
153 "pricing.plan.free": "Ferdi Gratuit", 181 "pricing.plan.free": "Ferdi Gratuit",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professionnel à l'année", 188 "pricing.plan.pro-yearly": "Ferdi Professionnel à l'année",
161 "pricing.trial.cta.accept": "Oui, améliorer mon compte à Ferdi Professionnel", 189 "pricing.trial.cta.accept": "Oui, améliorer mon compte à Ferdi Professionnel",
162 "pricing.trial.cta.skip": "Continuer à Ferdi", 190 "pricing.trial.cta.skip": "Continuer à Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Désoler, nous ne pouvons pas activé votre essai!", 192 "pricing.trial.error": "Désoler, nous ne pouvons pas activé votre essai!",
164 "pricing.trial.features.headline": "Ferdi Professionnel inclus:", 193 "pricing.trial.features.headline": "Ferdi Professionnel inclus:",
165 "pricing.trial.headline": "Ferdi Professionnel", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Votre offre d'accueil personnelle:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Votre essai gratuit se finis automatiquement après 14 jours", 198 "pricing.trial.terms.automaticTrialEnd": "Votre essai gratuit se finis automatiquement après 14 jours",
168 "pricing.trial.terms.headline": "Sans condition", 199 "pricing.trial.terms.headline": "Sans condition",
169 "pricing.trial.terms.noCreditCard": "Pas de carte de crédit requis", 200 "pricing.trial.terms.noCreditCard": "Pas de carte de crédit requis",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Recharger {name}", 202 "service.crashHandler.action": "Recharger {name}",
171 "service.crashHandler.autoReload": "Tentative de restauration automatique de {name} dans {seconds} secondes", 203 "service.crashHandler.autoReload": "Tentative de restauration automatique de {name} dans {seconds} secondes",
172 "service.crashHandler.headline": "Oh non!", 204 "service.crashHandler.headline": "Oh non!",
@@ -265,7 +297,7 @@
265 "settings.app.scheduledDNDInfo": "Planifier le Ne-pas-Déranger vous permet de définir une période de temps dans lequel vous ne voulez pas de notifications de Ferdi.", 297 "settings.app.scheduledDNDInfo": "Planifier le Ne-pas-Déranger vous permet de définir une période de temps dans lequel vous ne voulez pas de notifications de Ferdi.",
266 "settings.app.scheduledDNDTimeInfo": "Le temps est en format 24 heures. La fin du temps peut être avant le début du temps (ex: début 17:00, fin 09:00) pour activer le Ne-pas-Déranger durant la nuit.", 298 "settings.app.scheduledDNDTimeInfo": "Le temps est en format 24 heures. La fin du temps peut être avant le début du temps (ex: début 17:00, fin 09:00) pour activer le Ne-pas-Déranger durant la nuit.",
267 "settings.app.serverInfo": "On vous recommande de vous déconnecter après d'avoir changer votre serveur dans vos paramètres au risque que les paramètres ne sois pas sauvegarder.", 299 "settings.app.serverInfo": "On vous recommande de vous déconnecter après d'avoir changer votre serveur dans vos paramètres au risque que les paramètres ne sois pas sauvegarder.",
268 "settings.app.serverMoneyInfo": "Vous êtes entrain d'utilisé le serveur officiel de Franz pour Ferdi.\nNous savons que Ferdi vous permet d'utilisé toutes les fonctionnalités gratuitement mais vous êtes toujours entrain d'utilisé les resources des serveurs de Franz - dont les créateurs paient pour.\nS'il vous plaît [Link 1]payé pour un compte Franz[/Link] ou [Link 2]utilisé un ferdi-serveur hébergé soi-même[/Link] (si vous avez la connaissance et les resources pour).\nEn utilisant Ferdi, vous profité beaucoup des recettes de Franz, resources serveurs et son développement.", 300 "settings.app.serverMoneyInfo": "Vous êtes entrain d'utilisé le serveur officiel de Franz pour Ferdi.\nNous savons que Ferdi vous permet d'utilisé toutes les fonctionnalités gratuitement mais vous êtes toujours entrain d'utilisé les resources des serveurs de Franz - dont les créateurs paient pour.\nS'il vous plaît [Link 1]payé pour un compte Franz[/Link] ou [Link 2]utilisé un ferdi-serveur hébergé par soi-même[/Link] (si vous avez la connaissance et les resources pour).\nEn utilisant Ferdi, vous profité beaucoup des recettes de Franz, resources serveurs et son développement.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "Ce serveur va être utilisé pour la fonction \"Ferdi Todo\". (défaut: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "Ce serveur va être utilisé pour la fonction \"Ferdi Todo\". (défaut: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Aidez-nous à traduire Ferdi dans votre langue.", 303 "settings.app.translationHelp": "Aidez-nous à traduire Ferdi dans votre langue.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Équipe", 388 "settings.team.headline": "Équipe",
357 "settings.team.intro": "Vous et votre équipes utilise Ferdi? Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", 389 "settings.team.intro": "Vous et votre équipes utilise Ferdi? Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.",
358 "settings.team.manageAction": "Gère ton équipe sur getferdi.com", 390 "settings.team.manageAction": "Gère ton équipe sur getferdi.com",
359 "settings.team.teamsUnavailible": "Les équipes sont indisponibles", 391 "settings.team.teamsUnavailable": "Les équipes sont indisponibles",
360 "settings.team.teamsUnavailibleInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.", 392 "settings.team.teamsUnavailableInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.",
361 "settings.team.upgradeAction": "Améliorez votre compte", 393 "settings.team.upgradeAction": "Améliorez votre compte",
362 "settings.user.form.accountType.company": "Entreprise", 394 "settings.user.form.accountType.company": "Entreprise",
363 "settings.user.form.accountType.individual": "Individuel", 395 "settings.user.form.accountType.individual": "Individuel",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Vous avez déjà un compte? Connectez-vous", 437 "signup.link.login": "Vous avez déjà un compte? Connectez-vous",
406 "signup.password.label": "Mot de passe", 438 "signup.password.label": "Mot de passe",
407 "signup.submit.label": "Créer un compte", 439 "signup.submit.label": "Créer un compte",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Oui, commencer l'essai gratuit de Ferdi Professionnel", 441 "subscription.cta.activateTrial": "Oui, commencer l'essai gratuit de Ferdi Professionnel",
409 "subscription.cta.allOptions": "Voir toutes les options", 442 "subscription.cta.allOptions": "Voir toutes les options",
410 "subscription.cta.choosePlan": "Choisissez votre plan", 443 "subscription.cta.choosePlan": "Choisissez votre plan",
411 "subscription.includedProFeatures": "Le plan Ferdi Professionnel inclus:", 444 "subscription.includedProFeatures": "Le plan Ferdi Professionnel inclus:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Améliorez votre compte",
412 "subscription.teaser.includedFeatures": "Les plans de Ferdi payés inclus:", 449 "subscription.teaser.includedFeatures": "Les plans de Ferdi payés inclus:",
413 "subscription.teaser.intro": "Ferdi 5 viens avec une large plage de nouvelles fonctionnalités pour renforcer votre communication quotidienne - batteries inclus. Aller voir nos nouveaux plans et trouver celui qui vous satisfait le mieux!", 450 "subscription.teaser.intro": "Ferdi 5 viens avec une large plage de nouvelles fonctionnalités pour renforcer votre communication quotidienne - batteries inclus. Aller voir nos nouveaux plans et trouver celui qui vous satisfait le mieux!",
414 "subscriptionPopup.buttonCancel": "Annuler", 451 "subscriptionPopup.buttonCancel": "Annuler",
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index 8903b2e30..e96d9e14f 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Ní féidir nascadh le seirbhísí Ferdi ar líne", 49 "global.api.unhealthy": "Ní féidir nascadh le seirbhísí Ferdi ar líne",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Níl tú nasctha leis an Idirlíon.", 51 "global.notConnectedToTheInternet": "Níl tú nasctha leis an Idirlíon.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Cuir isteach", 163 "password.submit.label": "Cuir isteach",
141 "password.successInfo": "Seiceáil do chuid ríomhphoist le do thoil", 164 "password.successInfo": "Seiceáil do chuid ríomhphoist le do thoil",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Athlódáil {name}", 202 "service.crashHandler.action": "Athlódáil {name}",
171 "service.crashHandler.autoReload": "Ag iarraidh {name} a thabhairt ar ais go huathoibríoch i gceann {seconds} shoicind", 203 "service.crashHandler.autoReload": "Ag iarraidh {name} a thabhairt ar ais go huathoibríoch i gceann {seconds} shoicind",
172 "service.crashHandler.headline": "Oró, ní hea!", 204 "service.crashHandler.headline": "Oró, ní hea!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Taisce", 301 "settings.app.subheadlineCache": "Taisce",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Cabhraigh linn Ferdi a aistriú i do theanga.", 303 "settings.app.translationHelp": "Cabhraigh linn Ferdi a aistriú i do theanga.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Foireann", 388 "settings.team.headline": "Foireann",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Comhlacht", 394 "settings.user.form.accountType.company": "Comhlacht",
363 "settings.user.form.accountType.individual": "Ar leith", 395 "settings.user.form.accountType.individual": "Ar leith",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Cuntas agat cheana féin, logáil isteach?", 437 "signup.link.login": "Cuntas agat cheana féin, logáil isteach?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Cruthaigh cuntas", 439 "signup.submit.label": "Cruthaigh cuntas",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cealaigh", 451 "subscriptionPopup.buttonCancel": "Cealaigh",
diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/he.json
+++ b/src/i18n/locales/he.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
index e2dc5e4b4..5ad85cc1a 100644
--- a/src/i18n/locales/hr.json
+++ b/src/i18n/locales/hr.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nije se moguće povezati na Francove on-line servise. ", 49 "global.api.unhealthy": "Nije se moguće povezati na Francove on-line servise. ",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Sada ste povezani s internetom. ", 51 "global.notConnectedToTheInternet": "Sada ste povezani s internetom. ",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Pošalji", 163 "password.submit.label": "Pošalji",
141 "password.successInfo": "Molimo Vas da provjerite svoju e-mail adresu", 164 "password.successInfo": "Molimo Vas da provjerite svoju e-mail adresu",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Osvježi okvir", 202 "service.crashHandler.action": "Osvježi okvir",
171 "service.crashHandler.autoReload": "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi", 203 "service.crashHandler.autoReload": "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi",
172 "service.crashHandler.headline": "O, ne! ", 204 "service.crashHandler.headline": "O, ne! ",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Predmemorija", 301 "settings.app.subheadlineCache": "Predmemorija",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ", 303 "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Tim", 388 "settings.team.headline": "Tim",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Tvrtka", 394 "settings.user.form.accountType.company": "Tvrtka",
363 "settings.user.form.accountType.individual": "Pojedinac", 395 "settings.user.form.accountType.individual": "Pojedinac",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Imate račun? Prijavite se.", 437 "signup.link.login": "Imate račun? Prijavite se.",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Napravite novi račun", 439 "signup.submit.label": "Napravite novi račun",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Odustani", 451 "subscriptionPopup.buttonCancel": "Odustani",
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index 0338cb98a..940db5dff 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Szerezz egy Ferdi Támogatói Liszencet", 10 "feature.delayApp.upgrade.action": "Szerezz egy Ferdi Támogatói Liszencet",
11 "feature.delayApp.upgrade.actionShort": "Fiók frissítése", 11 "feature.delayApp.upgrade.actionShort": "Fiók frissítése",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "A Ferdi Tennivalók már elérhető a prémium felhasználók részére!", 39 "feature.todos.premium.info": "A Ferdi Tennivalók már elérhető a prémium felhasználók részére!",
24 "feature.todos.premium.rollout": "Mindenki másnak még egy kicsit tovább kell várni.", 40 "feature.todos.premium.rollout": "Mindenki másnak még egy kicsit tovább kell várni.",
25 "feature.todos.premium.upgrade": "Fiók frissítése", 41 "feature.todos.premium.upgrade": "Fiók frissítése",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz", 49 "global.api.unhealthy": "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz",
27 "global.franzProRequired": "Ferdi Professional szükséges", 50 "global.franzProRequired": "Ferdi Professional szükséges",
28 "global.notConnectedToTheInternet": "Nincs hálózati kapcsolat.", 51 "global.notConnectedToTheInternet": "Nincs hálózati kapcsolat.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Küldés", 163 "password.submit.label": "Küldés",
141 "password.successInfo": "Ellenőrizd az email fiókodat", 164 "password.successInfo": "Ellenőrizd az email fiókodat",
142 "premiumFeature.button.upgradeAccount": "Fiók frissítése", 165 "premiumFeature.button.upgradeAccount": "Fiók frissítése",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Hirdetésmentesség, örökre!", 167 "pricing.features.adFree": "Hirdetésmentesség, örökre!",
144 "pricing.features.appDelays": "Nincsenek töltőképernyők", 168 "pricing.features.appDelays": "Nincsenek töltőképernyők",
145 "pricing.features.customWebsites": "Egyéni weboldalak megadása", 169 "pricing.features.customWebsites": "Egyéni weboldalak megadása",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "Helyi és egyéb távoli szolgáltatások", 171 "pricing.features.onPremise": "Helyi és egyéb távoli szolgáltatások",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Szolgáltatás Proxy-k", 173 "pricing.features.serviceProxies": "Szolgáltatás Proxy-k",
148 "pricing.features.spellchecker": "Helyesírás-ellenőrzés támogatás", 174 "pricing.features.spellchecker": "Helyesírás-ellenőrzés támogatás",
149 "pricing.features.teamManagement": "Csapatkezelés", 175 "pricing.features.teamManagement": "Csapatkezelés",
150 "pricing.features.thirdPartyServices": "Harmadik féltől származó szolgáltatások használata", 176 "pricing.features.thirdPartyServices": "Harmadik féltől származó szolgáltatások használata",
151 "pricing.features.unlimitedServices": "Korlátlan szolgáltatások felvitele", 177 "pricing.features.unlimitedServices": "Korlátlan szolgáltatások felvitele",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Munkaterületek", 180 "pricing.features.workspaces": "Munkaterületek",
153 "pricing.plan.free": "Ingyenes Ferdi", 181 "pricing.plan.free": "Ingyenes Ferdi",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "{name} újratöltése", 202 "service.crashHandler.action": "{name} újratöltése",
171 "service.crashHandler.autoReload": "{name} automatikusan helyreállítása {seconds} másodpercen belül", 203 "service.crashHandler.autoReload": "{name} automatikusan helyreállítása {seconds} másodpercen belül",
172 "service.crashHandler.headline": "Jajj ne!", 204 "service.crashHandler.headline": "Jajj ne!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Gyorsítótár", 301 "settings.app.subheadlineCache": "Gyorsítótár",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Segíts nekünk a Ferdi-ot lefordítani a nyelvedre.", 303 "settings.app.translationHelp": "Segíts nekünk a Ferdi-ot lefordítani a nyelvedre.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Csapat", 388 "settings.team.headline": "Csapat",
357 "settings.team.intro": "Te és a csapatod Ferdi-ot használtok? Egy fiókból kezelheted kollégáid, barátaid vagy családtagjaid Prémium előfizetéseit.", 389 "settings.team.intro": "Te és a csapatod Ferdi-ot használtok? Egy fiókból kezelheted kollégáid, barátaid vagy családtagjaid Prémium előfizetéseit.",
358 "settings.team.manageAction": "Csapat kezelése a getferdi.com-on", 390 "settings.team.manageAction": "Csapat kezelése a getferdi.com-on",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Előfizetés", 393 "settings.team.upgradeAction": "Előfizetés",
362 "settings.user.form.accountType.company": "Cég", 394 "settings.user.form.accountType.company": "Cég",
363 "settings.user.form.accountType.individual": "Egyén", 395 "settings.user.form.accountType.individual": "Egyén",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Már van fiókod? Lépj be!", 437 "signup.link.login": "Már van fiókod? Lépj be!",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Fiók létrehozása", 439 "signup.submit.label": "Fiók létrehozása",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Fiók frissítése",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Mégsem", 451 "subscriptionPopup.buttonCancel": "Mégsem",
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index 9059f0985..2378bfbad 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Dapatkan Lisensi Pendukung Ferdi", 10 "feature.delayApp.upgrade.action": "Dapatkan Lisensi Pendukung Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Tingkatkan akun", 11 "feature.delayApp.upgrade.actionShort": "Tingkatkan akun",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Tidak dapat tersambung ke layanan Ferdi", 49 "global.api.unhealthy": "Tidak dapat tersambung ke layanan Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.", 51 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Kirim", 163 "password.submit.label": "Kirim",
141 "password.successInfo": "Periksa email Anda", 164 "password.successInfo": "Periksa email Anda",
142 "premiumFeature.button.upgradeAccount": "Tingkatkan akun", 165 "premiumFeature.button.upgradeAccount": "Tingkatkan akun",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Ruang kerja", 180 "pricing.features.workspaces": "Ruang kerja",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Muat Ulang {name}", 202 "service.crashHandler.action": "Muat Ulang {name}",
171 "service.crashHandler.autoReload": "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", 203 "service.crashHandler.autoReload": "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik",
172 "service.crashHandler.headline": "Ya Ampun!", 204 "service.crashHandler.headline": "Ya Ampun!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Singgahan", 301 "settings.app.subheadlineCache": "Singgahan",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Bantu kami menerjemahkan Ferdi ke bahasa Anda.", 303 "settings.app.translationHelp": "Bantu kami menerjemahkan Ferdi ke bahasa Anda.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Tim", 388 "settings.team.headline": "Tim",
357 "settings.team.intro": "Anda dan tim Anda menggunakan Ferdi? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.", 389 "settings.team.intro": "Anda dan tim Anda menggunakan Ferdi? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.",
358 "settings.team.manageAction": "Kelola Tim Anda di getferdi.com", 390 "settings.team.manageAction": "Kelola Tim Anda di getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Tingkatkan Akun Anda", 393 "settings.team.upgradeAction": "Tingkatkan Akun Anda",
362 "settings.user.form.accountType.company": "Perusahaan", 394 "settings.user.form.accountType.company": "Perusahaan",
363 "settings.user.form.accountType.individual": "Pribadi", 395 "settings.user.form.accountType.individual": "Pribadi",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Sudah punya akun, masuk?", 437 "signup.link.login": "Sudah punya akun, masuk?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Buat akun", 439 "signup.submit.label": "Buat akun",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Batalkan", 451 "subscriptionPopup.buttonCancel": "Batalkan",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index 9e9b0484d..f3ed42e3a 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Ottieni la prova gratuita per 14 giorni di Ferdi Professional e salta la coda", 9 "feature.delayApp.trial.headline": "Ottieni la prova gratuita per 14 giorni di Ferdi Professional e salta la coda",
10 "feature.delayApp.upgrade.action": "Ricevi una Licenza Supporter di Ferdi", 10 "feature.delayApp.upgrade.action": "Ricevi una Licenza Supporter di Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Effettua l'upgrade del tuo account", 11 "feature.delayApp.upgrade.actionShort": "Effettua l'upgrade del tuo account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Le attività Ferdi sono ora disponibili agli utenti premium!", 39 "feature.todos.premium.info": "Le attività Ferdi sono ora disponibili agli utenti premium!",
24 "feature.todos.premium.rollout": "Chiunque altro dovrà aspettare un po' di più.", 40 "feature.todos.premium.rollout": "Chiunque altro dovrà aspettare un po' di più.",
25 "feature.todos.premium.upgrade": "Potenzia l'Account", 41 "feature.todos.premium.upgrade": "Potenzia l'Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Impossibile connettersi ai servizi online di Ferdi", 49 "global.api.unhealthy": "Impossibile connettersi ai servizi online di Ferdi",
27 "global.franzProRequired": "Richiesto Ferdi Professional", 50 "global.franzProRequired": "Richiesto Ferdi Professional",
28 "global.notConnectedToTheInternet": "Non sei connesso a Internet.", 51 "global.notConnectedToTheInternet": "Non sei connesso a Internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Invia", 163 "password.submit.label": "Invia",
141 "password.successInfo": "Per favore controlla la tua email", 164 "password.successInfo": "Per favore controlla la tua email",
142 "premiumFeature.button.upgradeAccount": "Effettua l'upgrade del tuo account", 165 "premiumFeature.button.upgradeAccount": "Effettua l'upgrade del tuo account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Senza pubblicità per sempre", 167 "pricing.features.adFree": "Senza pubblicità per sempre",
144 "pricing.features.appDelays": "Nessuna schermata di attesa", 168 "pricing.features.appDelays": "Nessuna schermata di attesa",
145 "pricing.features.customWebsites": "Aggiungi siti web personalizzati", 169 "pricing.features.customWebsites": "Aggiungi siti web personalizzati",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "Servizi ospitati & on-premise", 171 "pricing.features.onPremise": "Servizi ospitati & on-premise",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Proxy di servizio", 173 "pricing.features.serviceProxies": "Proxy di servizio",
148 "pricing.features.spellchecker": "Supporto per il correttore ortografico", 174 "pricing.features.spellchecker": "Supporto per il correttore ortografico",
149 "pricing.features.teamManagement": "Gestione del team", 175 "pricing.features.teamManagement": "Gestione del team",
150 "pricing.features.thirdPartyServices": "Installa servizi di terze parti", 176 "pricing.features.thirdPartyServices": "Installa servizi di terze parti",
151 "pricing.features.unlimitedServices": "Aggiungi servizi illimitati", 177 "pricing.features.unlimitedServices": "Aggiungi servizi illimitati",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Aree di lavoro", 180 "pricing.features.workspaces": "Aree di lavoro",
153 "pricing.plan.free": "Ferdi Gratuito", 181 "pricing.plan.free": "Ferdi Gratuito",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Annuale", 188 "pricing.plan.pro-yearly": "Ferdi Professional Annuale",
161 "pricing.trial.cta.accept": "Sì, potenzia il mio account a Ferdi Professional", 189 "pricing.trial.cta.accept": "Sì, potenzia il mio account a Ferdi Professional",
162 "pricing.trial.cta.skip": "Continua su Ferdi", 190 "pricing.trial.cta.skip": "Continua su Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Ci dispiace, non abbiamo potuto attivare la tua prova!", 192 "pricing.trial.error": "Ci dispiace, non abbiamo potuto attivare la tua prova!",
164 "pricing.trial.features.headline": "Ferdi Professional include:", 193 "pricing.trial.features.headline": "Ferdi Professional include:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "La tua personale offerta di benvenuto:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "La tua prova gratuita finirà automaticamente dopo 14 giorni", 198 "pricing.trial.terms.automaticTrialEnd": "La tua prova gratuita finirà automaticamente dopo 14 giorni",
168 "pricing.trial.terms.headline": "Senza impegno", 199 "pricing.trial.terms.headline": "Senza impegno",
169 "pricing.trial.terms.noCreditCard": "Nessuna carta di credito richiesta", 200 "pricing.trial.terms.noCreditCard": "Nessuna carta di credito richiesta",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Ricarica {name}", 202 "service.crashHandler.action": "Ricarica {name}",
171 "service.crashHandler.autoReload": "Tentativo di ripristino automatico di {name} in {seconds} secondi", 203 "service.crashHandler.autoReload": "Tentativo di ripristino automatico di {name} in {seconds} secondi",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Aiutaci a tradurre Ferdi nella tua lingua.", 303 "settings.app.translationHelp": "Aiutaci a tradurre Ferdi nella tua lingua.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Gruppo", 388 "settings.team.headline": "Gruppo",
357 "settings.team.intro": "Tu e il tuo team usate Ferdi? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.", 389 "settings.team.intro": "Tu e il tuo team usate Ferdi? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.",
358 "settings.team.manageAction": "Gestisci il tuo Team su getferdi.com", 390 "settings.team.manageAction": "Gestisci il tuo Team su getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Aggiorna il tuo Account", 393 "settings.team.upgradeAction": "Aggiorna il tuo Account",
362 "settings.user.form.accountType.company": "Società", 394 "settings.user.form.accountType.company": "Società",
363 "settings.user.form.accountType.individual": "Individuale", 395 "settings.user.form.accountType.individual": "Individuale",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Hai già un account, vuoi accedere?", 437 "signup.link.login": "Hai già un account, vuoi accedere?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Crea un account", 439 "signup.submit.label": "Crea un account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Sì, inizia la prova gratuita di Ferdi Professional", 441 "subscription.cta.activateTrial": "Sì, inizia la prova gratuita di Ferdi Professional",
409 "subscription.cta.allOptions": "Vedi tutte le opzioni", 442 "subscription.cta.allOptions": "Vedi tutte le opzioni",
410 "subscription.cta.choosePlan": "Scegli il tuo piano", 443 "subscription.cta.choosePlan": "Scegli il tuo piano",
411 "subscription.includedProFeatures": "Il piano Ferdi Professional include:", 444 "subscription.includedProFeatures": "Il piano Ferdi Professional include:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Potenzia l'Account",
412 "subscription.teaser.includedFeatures": "I piani Ferdi a pagamento includono:", 449 "subscription.teaser.includedFeatures": "I piani Ferdi a pagamento includono:",
413 "subscription.teaser.intro": "Ferdi 5 contiene un ampia gamma di nuove caratteristiche per potenziare le tue comunicazioni di tutti i giorni - incluse le batterie. Dai un'occhiata ai nostri nuovi piani per scoprire quale si adatta di più a te!", 450 "subscription.teaser.intro": "Ferdi 5 contiene un ampia gamma di nuove caratteristiche per potenziare le tue comunicazioni di tutti i giorni - incluse le batterie. Dai un'occhiata ai nostri nuovi piani per scoprire quale si adatta di più a te!",
414 "subscriptionPopup.buttonCancel": "Annulla", 451 "subscriptionPopup.buttonCancel": "Annulla",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index 79eb90db2..b9b6da6c3 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Ferdiサポーターライセンスを購入する", 10 "feature.delayApp.upgrade.action": "Ferdiサポーターライセンスを購入する",
11 "feature.delayApp.upgrade.actionShort": "アカウントをアップグレード", 11 "feature.delayApp.upgrade.actionShort": "アカウントをアップグレード",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Ferdiのオンラインサービスに接続できません。", 49 "global.api.unhealthy": "Ferdiのオンラインサービスに接続できません。",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "インターネットに接続されていません。", 51 "global.notConnectedToTheInternet": "インターネットに接続されていません。",
@@ -140,15 +163,20 @@
140 "password.submit.label": "送信", 163 "password.submit.label": "送信",
141 "password.successInfo": "メールを確認して下さい", 164 "password.successInfo": "メールを確認して下さい",
142 "premiumFeature.button.upgradeAccount": "アカウントをアップグレード", 165 "premiumFeature.button.upgradeAccount": "アカウントをアップグレード",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "{name}を再読み込み", 202 "service.crashHandler.action": "{name}を再読み込み",
171 "service.crashHandler.autoReload": "{seconds}秒後、自動的に{name}の復旧を試みます", 203 "service.crashHandler.autoReload": "{seconds}秒後、自動的に{name}の復旧を試みます",
172 "service.crashHandler.headline": "しまった!", 204 "service.crashHandler.headline": "しまった!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "キャッシュ", 301 "settings.app.subheadlineCache": "キャッシュ",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ferdiの翻訳作業にご協力をお願いします。", 303 "settings.app.translationHelp": "Ferdiの翻訳作業にご協力をお願いします。",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "チーム", 388 "settings.team.headline": "チーム",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "法人", 394 "settings.user.form.accountType.company": "法人",
363 "settings.user.form.accountType.individual": "個人", 395 "settings.user.form.accountType.individual": "個人",
@@ -405,10 +437,15 @@
405 "signup.link.login": "アカウントを既に持っていますか? こちらからサインイン", 437 "signup.link.login": "アカウントを既に持っていますか? こちらからサインイン",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "アカウントの作成", 439 "signup.submit.label": "アカウントの作成",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "キャンセル", 451 "subscriptionPopup.buttonCancel": "キャンセル",
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index 024af8c9b..2f0aaa5ae 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Ferdi-ის ონლაინ სერვისთან დაკავშირება ვერ მოხერხდა", 49 "global.api.unhealthy": "Ferdi-ის ონლაინ სერვისთან დაკავშირება ვერ მოხერხდა",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "თქვენ არ ხართ ინტერნეტთან დაკავშირებული.", 51 "global.notConnectedToTheInternet": "თქვენ არ ხართ ინტერნეტთან დაკავშირებული.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "დადასტურება", 163 "password.submit.label": "დადასტურება",
141 "password.successInfo": "გთხოვთ შეამოწმეთ მეილი", 164 "password.successInfo": "გთხოვთ შეამოწმეთ მეილი",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "გუნდი", 388 "settings.team.headline": "გუნდი",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "კომპანია", 394 "settings.user.form.accountType.company": "კომპანია",
363 "settings.user.form.accountType.individual": "ინდივიდუალური", 395 "settings.user.form.accountType.individual": "ინდივიდუალური",
@@ -405,10 +437,15 @@
405 "signup.link.login": "უკვე გაქვთ ანგარიში?", 437 "signup.link.login": "უკვე გაქვთ ანგარიში?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "ანგარიშის შექმნა", 439 "signup.submit.label": "ანგარიშის შექმნა",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "გაუქმება", 451 "subscriptionPopup.buttonCancel": "გაუქმება",
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/ko.json
+++ b/src/i18n/locales/ko.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index a88168e4a..ce8a35ce8 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Neem een Ferdi Supporter Licentie ", 10 "feature.delayApp.upgrade.action": "Neem een Ferdi Supporter Licentie ",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi services", 49 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Je hebt geen internet verbinding.", 51 "global.notConnectedToTheInternet": "Je hebt geen internet verbinding.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Verzenden", 163 "password.submit.label": "Verzenden",
141 "password.successInfo": "Controleer alsjeblieft je e-mail", 164 "password.successInfo": "Controleer alsjeblieft je e-mail",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Werkruimten", 180 "pricing.features.workspaces": "Werkruimten",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "{naam} herladen", 202 "service.crashHandler.action": "{naam} herladen",
171 "service.crashHandler.autoReload": "Ga proberen om {name} te herstellen over {seconds} seconden", 203 "service.crashHandler.autoReload": "Ga proberen om {name} te herstellen over {seconds} seconden",
172 "service.crashHandler.headline": "Oh nee!", 204 "service.crashHandler.headline": "Oh nee!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help ons om Ferdi te vertalen naar uw taal.", 303 "settings.app.translationHelp": "Help ons om Ferdi te vertalen naar uw taal.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.", 389 "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.",
358 "settings.team.manageAction": "Beheer je Team op getferdi.com", 390 "settings.team.manageAction": "Beheer je Team op getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade je Account", 393 "settings.team.upgradeAction": "Upgrade je Account",
362 "settings.user.form.accountType.company": "Bedrijf", 394 "settings.user.form.accountType.company": "Bedrijf",
363 "settings.user.form.accountType.individual": "Particulier", 395 "settings.user.form.accountType.individual": "Particulier",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Al een account, inloggen?", 437 "signup.link.login": "Al een account, inloggen?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Account aanmaken", 439 "signup.submit.label": "Account aanmaken",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Annuleren", 451 "subscriptionPopup.buttonCancel": "Annuleren",
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index 538df2fb8..e5467c877 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Sponsor Ferdi", 10 "feature.delayApp.upgrade.action": "Sponsor Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Upgrade Account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade Account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi-services.", 49 "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi-services.",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "U bent niet verbonden met het internet.", 51 "global.notConnectedToTheInternet": "U bent niet verbonden met het internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Verzenden", 163 "password.submit.label": "Verzenden",
141 "password.successInfo": "Controleer je e-mail", 164 "password.successInfo": "Controleer je e-mail",
142 "premiumFeature.button.upgradeAccount": "Upgrade Account", 165 "premiumFeature.button.upgradeAccount": "Upgrade Account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Werkruimtes", 180 "pricing.features.workspaces": "Werkruimtes",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Laad {name} opnieuw", 202 "service.crashHandler.action": "Laad {name} opnieuw",
171 "service.crashHandler.autoReload": "Bezig om {name} te herstellen over {seconds} seconden", 203 "service.crashHandler.autoReload": "Bezig om {name} te herstellen over {seconds} seconden",
172 "service.crashHandler.headline": "Oh nee!", 204 "service.crashHandler.headline": "Oh nee!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help ons om Ferdi uw taal te laten spreken.", 303 "settings.app.translationHelp": "Help ons om Ferdi uw taal te laten spreken.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt. En dat alles vanuit één account.", 389 "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt. En dat alles vanuit één account.",
358 "settings.team.manageAction": "Beheer je Team op getferdi.com", 390 "settings.team.manageAction": "Beheer je Team op getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Jouw Account opwaarderen", 393 "settings.team.upgradeAction": "Jouw Account opwaarderen",
362 "settings.user.form.accountType.company": "Bedrijf", 394 "settings.user.form.accountType.company": "Bedrijf",
363 "settings.user.form.accountType.individual": "Individueel", 395 "settings.user.form.accountType.individual": "Individueel",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Heb je al een account? Log in!", 437 "signup.link.login": "Heb je al een account? Log in!",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Account aanmaken", 439 "signup.submit.label": "Account aanmaken",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Annuleer", 451 "subscriptionPopup.buttonCancel": "Annuleer",
diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/no.json
+++ b/src/i18n/locales/no.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index fe65f73b8..6cc75eaf3 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Uzyskaj licencję Ferdi Supporter", 10 "feature.delayApp.upgrade.action": "Uzyskaj licencję Ferdi Supporter",
11 "feature.delayApp.upgrade.actionShort": "Ulepsz swoje konto", 11 "feature.delayApp.upgrade.actionShort": "Ulepsz swoje konto",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Listy zadań Ferdi są już dostępne dla użytkowników premium!", 39 "feature.todos.premium.info": "Listy zadań Ferdi są już dostępne dla użytkowników premium!",
24 "feature.todos.premium.rollout": "Wszyscy inni będą musieli zaczekać nieco dłużej.", 40 "feature.todos.premium.rollout": "Wszyscy inni będą musieli zaczekać nieco dłużej.",
25 "feature.todos.premium.upgrade": "Ulepsz konto", 41 "feature.todos.premium.upgrade": "Ulepsz konto",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online", 49 "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online",
27 "global.franzProRequired": "Wymagany Ferdi Professional", 50 "global.franzProRequired": "Wymagany Ferdi Professional",
28 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.", 51 "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Wyślij", 163 "password.submit.label": "Wyślij",
141 "password.successInfo": "Proszę sprawdzić swój email", 164 "password.successInfo": "Proszę sprawdzić swój email",
142 "premiumFeature.button.upgradeAccount": "Ulepsz swoje konto", 165 "premiumFeature.button.upgradeAccount": "Ulepsz swoje konto",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Na zawsze bez reklam", 167 "pricing.features.adFree": "Na zawsze bez reklam",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych", 169 "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Obsługa sprawdzania pisowni", 174 "pricing.features.spellchecker": "Obsługa sprawdzania pisowni",
149 "pricing.features.teamManagement": "Zarządzanie zespołem", 175 "pricing.features.teamManagement": "Zarządzanie zespołem",
150 "pricing.features.thirdPartyServices": "Instalacja zewnętrznych usług", 176 "pricing.features.thirdPartyServices": "Instalacja zewnętrznych usług",
151 "pricing.features.unlimitedServices": "Dodawanie nielimitowanych usług", 177 "pricing.features.unlimitedServices": "Dodawanie nielimitowanych usług",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Obszary robocze", 180 "pricing.features.workspaces": "Obszary robocze",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Przeładuj {name}", 202 "service.crashHandler.action": "Przeładuj {name}",
171 "service.crashHandler.autoReload": "Próba automatycznego odnowienia {name} za {seconds} sekund/y", 203 "service.crashHandler.autoReload": "Próba automatycznego odnowienia {name} za {seconds} sekund/y",
172 "service.crashHandler.headline": "O nie!", 204 "service.crashHandler.headline": "O nie!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Pamięć podręczna", 301 "settings.app.subheadlineCache": "Pamięć podręczna",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Pomóż nam tłumaczyć Ferdi na Twój język.", 303 "settings.app.translationHelp": "Pomóż nam tłumaczyć Ferdi na Twój język.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Zespół", 388 "settings.team.headline": "Zespół",
357 "settings.team.intro": "Czy Ty i zesół używacie programu Ferdi? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.", 389 "settings.team.intro": "Czy Ty i zesół używacie programu Ferdi? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.",
358 "settings.team.manageAction": "Zarządzaj zespołem na getferdi.com", 390 "settings.team.manageAction": "Zarządzaj zespołem na getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Ulepsz swoje konto", 393 "settings.team.upgradeAction": "Ulepsz swoje konto",
362 "settings.user.form.accountType.company": "Firma", 394 "settings.user.form.accountType.company": "Firma",
363 "settings.user.form.accountType.individual": "Prywatne", 395 "settings.user.form.accountType.individual": "Prywatne",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Masz już konto, zalogować się?", 437 "signup.link.login": "Masz już konto, zalogować się?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Stwórz konto", 439 "signup.submit.label": "Stwórz konto",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Ulepsz konto",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Anuluj", 451 "subscriptionPopup.buttonCancel": "Anuluj",
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index 91c1fbc37..9dec7e7a3 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.", 9 "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.",
10 "feature.delayApp.upgrade.action": "Adquira uma licença de suporte Ferdi", 10 "feature.delayApp.upgrade.action": "Adquira uma licença de suporte Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Atualizar conta", 11 "feature.delayApp.upgrade.actionShort": "Atualizar conta",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "As Listas de Tarefa do Ferdi estão disponíveis para usuários premium!", 39 "feature.todos.premium.info": "As Listas de Tarefa do Ferdi estão disponíveis para usuários premium!",
24 "feature.todos.premium.rollout": "As outras pessoas terão que esperar um pouquinho mais.", 40 "feature.todos.premium.rollout": "As outras pessoas terão que esperar um pouquinho mais.",
25 "feature.todos.premium.upgrade": "Actualizar cuenta", 41 "feature.todos.premium.upgrade": "Actualizar cuenta",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Não foi possível conectar-se aos serviços on-line do Ferdi.", 49 "global.api.unhealthy": "Não foi possível conectar-se aos serviços on-line do Ferdi.",
27 "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", 50 "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional",
28 "global.notConnectedToTheInternet": "Você não está conectado à internet", 51 "global.notConnectedToTheInternet": "Você não está conectado à internet",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Enviar", 163 "password.submit.label": "Enviar",
141 "password.successInfo": "Por favor, verifique o seu e-mail", 164 "password.successInfo": "Por favor, verifique o seu e-mail",
142 "premiumFeature.button.upgradeAccount": "Atualizar conta", 165 "premiumFeature.button.upgradeAccount": "Atualizar conta",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Sin anuncios para siempre!", 167 "pricing.features.adFree": "Sin anuncios para siempre!",
144 "pricing.features.appDelays": "Sem Telas de Espera", 168 "pricing.features.appDelays": "Sem Telas de Espera",
145 "pricing.features.customWebsites": "Adicionar Websites Personalizados", 169 "pricing.features.customWebsites": "Adicionar Websites Personalizados",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "En sitio y otros servicios alojados", 171 "pricing.features.onPremise": "En sitio y otros servicios alojados",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Apoderados de Servicio", 173 "pricing.features.serviceProxies": "Apoderados de Servicio",
148 "pricing.features.spellchecker": "Soporte de corrector ortográfico", 174 "pricing.features.spellchecker": "Soporte de corrector ortográfico",
149 "pricing.features.teamManagement": "Gestão de Time", 175 "pricing.features.teamManagement": "Gestão de Time",
150 "pricing.features.thirdPartyServices": "Instalar servicios de terceros", 176 "pricing.features.thirdPartyServices": "Instalar servicios de terceros",
151 "pricing.features.unlimitedServices": "Agregar servicios ilimitados", 177 "pricing.features.unlimitedServices": "Agregar servicios ilimitados",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Áreas de trabalho", 180 "pricing.features.workspaces": "Áreas de trabalho",
153 "pricing.plan.free": "Ferdi Gratuito", 181 "pricing.plan.free": "Ferdi Gratuito",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Profissional Anual", 188 "pricing.plan.pro-yearly": "Ferdi Profissional Anual",
161 "pricing.trial.cta.accept": "Sim, atualizar minha conta para o Ferdi Profissional", 189 "pricing.trial.cta.accept": "Sim, atualizar minha conta para o Ferdi Profissional",
162 "pricing.trial.cta.skip": "Continuar para o Ferdi", 190 "pricing.trial.cta.skip": "Continuar para o Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Desculpe, não conseguimos ativar o seu período de testes", 192 "pricing.trial.error": "Desculpe, não conseguimos ativar o seu período de testes",
164 "pricing.trial.features.headline": "Incluso no Ferdi Profissional:", 193 "pricing.trial.features.headline": "Incluso no Ferdi Profissional:",
165 "pricing.trial.headline": "Ferdi Profissional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Sua oferta pessoal de boas-vindas:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Seu período de testes encerra automaticamente em 14 dias", 198 "pricing.trial.terms.automaticTrialEnd": "Seu período de testes encerra automaticamente em 14 dias",
168 "pricing.trial.terms.headline": "Sem vínculos", 199 "pricing.trial.terms.headline": "Sem vínculos",
169 "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", 200 "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Recarregar {name}", 202 "service.crashHandler.action": "Recarregar {name}",
171 "service.crashHandler.autoReload": "Tentando reestabelecer {name} automaticamente em {seconds} segundos", 203 "service.crashHandler.autoReload": "Tentando reestabelecer {name} automaticamente em {seconds} segundos",
172 "service.crashHandler.headline": "Ah, não!", 204 "service.crashHandler.headline": "Ah, não!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "memória cache", 301 "settings.app.subheadlineCache": "memória cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ajude-nos a traduzir o Ferdi para seu idioma.", 303 "settings.app.translationHelp": "Ajude-nos a traduzir o Ferdi para seu idioma.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Equipe", 388 "settings.team.headline": "Equipe",
357 "settings.team.intro": "Você e sua equipe usam Ferdi? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da família que você quiser, tudo isso em uma única conta.", 389 "settings.team.intro": "Você e sua equipe usam Ferdi? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da família que você quiser, tudo isso em uma única conta.",
358 "settings.team.manageAction": "Gerencie sua Equipe no getferdi.com", 390 "settings.team.manageAction": "Gerencie sua Equipe no getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Atualize a sua conta para versão paga", 393 "settings.team.upgradeAction": "Atualize a sua conta para versão paga",
362 "settings.user.form.accountType.company": "Empresa", 394 "settings.user.form.accountType.company": "Empresa",
363 "settings.user.form.accountType.individual": "Pessoal", 395 "settings.user.form.accountType.individual": "Pessoal",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Já tem uma conta?", 437 "signup.link.login": "Já tem uma conta?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Criar uma conta", 439 "signup.submit.label": "Criar uma conta",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Actualizar cuenta",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "O Ferdi 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", 450 "subscription.teaser.intro": "O Ferdi 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!",
414 "subscriptionPopup.buttonCancel": "Cancelar", 451 "subscriptionPopup.buttonCancel": "Cancelar",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 2237cc059..f5beac6b3 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Faz parte do grupo de apoio do Ferdi", 10 "feature.delayApp.upgrade.action": "Faz parte do grupo de apoio do Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Atualiza a tua conta", 11 "feature.delayApp.upgrade.actionShort": "Atualiza a tua conta",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Não foi possível estabelecer ligação aos serviços do Ferdi", 49 "global.api.unhealthy": "Não foi possível estabelecer ligação aos serviços do Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Não estás ligado à Internet", 51 "global.notConnectedToTheInternet": "Não estás ligado à Internet",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submeter", 163 "password.submit.label": "Submeter",
141 "password.successInfo": "Por favor verifique o seu endereço de e-mail", 164 "password.successInfo": "Por favor verifique o seu endereço de e-mail",
142 "premiumFeature.button.upgradeAccount": "Atualiza a tua conta", 165 "premiumFeature.button.upgradeAccount": "Atualiza a tua conta",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Sem publicidade para sempre", 167 "pricing.features.adFree": "Sem publicidade para sempre",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Espaços de trabalho", 180 "pricing.features.workspaces": "Espaços de trabalho",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Recarregar {name}", 202 "service.crashHandler.action": "Recarregar {name}",
171 "service.crashHandler.autoReload": "A tentar restaurar automaticamente {name} em {seconds} segundos", 203 "service.crashHandler.autoReload": "A tentar restaurar automaticamente {name} em {seconds} segundos",
172 "service.crashHandler.headline": "Oh não!", 204 "service.crashHandler.headline": "Oh não!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ajude-nos a traduzir a Ferdi para a sua língua.", 303 "settings.app.translationHelp": "Ajude-nos a traduzir a Ferdi para a sua língua.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Equipa", 388 "settings.team.headline": "Equipa",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Gerir a tua Equipa em getferdi.com", 390 "settings.team.manageAction": "Gerir a tua Equipa em getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Actualiza a tua conta", 393 "settings.team.upgradeAction": "Actualiza a tua conta",
362 "settings.user.form.accountType.company": "Empresa", 394 "settings.user.form.accountType.company": "Empresa",
363 "settings.user.form.accountType.individual": "Indivíduo", 395 "settings.user.form.accountType.individual": "Indivíduo",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Já tem uma conta, iniciar sessão?", 437 "signup.link.login": "Já tem uma conta, iniciar sessão?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Criar uma conta", 439 "signup.submit.label": "Criar uma conta",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancelar", 451 "subscriptionPopup.buttonCancel": "Cancelar",
diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/ro.json
+++ b/src/i18n/locales/ro.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 58fa12b60..b329522f4 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Получить бесплатную 14-дневную триальную версию Ferdi Professional и перейти к следующему полю", 9 "feature.delayApp.trial.headline": "Получить бесплатную 14-дневную триальную версию Ferdi Professional и перейти к следующему полю",
10 "feature.delayApp.upgrade.action": "Получите лицензию поддержки Ferdi", 10 "feature.delayApp.upgrade.action": "Получите лицензию поддержки Ferdi",
11 "feature.delayApp.upgrade.actionShort": "Апгрейдить аккаунт", 11 "feature.delayApp.upgrade.actionShort": "Апгрейдить аккаунт",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Выберите сервис с Tab, вверх и вниз. Откройте сервис нажав на ENTER.", 28 "feature.quickSwitch.info": "Выберите сервис с Tab, вверх и вниз. Откройте сервис нажав на ENTER.",
13 "feature.quickSwitch.search": "Поиск...", 29 "feature.quickSwitch.search": "Поиск...",
14 "feature.quickSwitch.title": "Быстрое переключение", 30 "feature.quickSwitch.title": "Быстрое переключение",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos теперь доступны для премиум пользователей!", 39 "feature.todos.premium.info": "Ferdi Todos теперь доступны для премиум пользователей!",
24 "feature.todos.premium.rollout": "Все остальные должны будут ждать немного дольше.", 40 "feature.todos.premium.rollout": "Все остальные должны будут ждать немного дольше.",
25 "feature.todos.premium.upgrade": "Повысить уровень учетной записи", 41 "feature.todos.premium.upgrade": "Повысить уровень учетной записи",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Невозможно подключиться к онлайн-сервисам Ferdi", 49 "global.api.unhealthy": "Невозможно подключиться к онлайн-сервисам Ferdi",
27 "global.franzProRequired": "Требуется Ferdi Professional", 50 "global.franzProRequired": "Требуется Ferdi Professional",
28 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет", 51 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Принять", 163 "password.submit.label": "Принять",
141 "password.successInfo": "Проверьте вашу электронную почту", 164 "password.successInfo": "Проверьте вашу электронную почту",
142 "premiumFeature.button.upgradeAccount": "Апгрейдить аккаунт", 165 "premiumFeature.button.upgradeAccount": "Апгрейдить аккаунт",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Всегда бесплатен с рекламой", 167 "pricing.features.adFree": "Всегда бесплатен с рекламой",
144 "pricing.features.appDelays": "Без экранов ожидания", 168 "pricing.features.appDelays": "Без экранов ожидания",
145 "pricing.features.customWebsites": "Добавить пользовательские веб-сайты", 169 "pricing.features.customWebsites": "Добавить пользовательские веб-сайты",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Прокси сервиса", 173 "pricing.features.serviceProxies": "Прокси сервиса",
148 "pricing.features.spellchecker": "Поддержка Spellchecker", 174 "pricing.features.spellchecker": "Поддержка Spellchecker",
149 "pricing.features.teamManagement": "Команда управления", 175 "pricing.features.teamManagement": "Команда управления",
150 "pricing.features.thirdPartyServices": "Установить сторонние сервисы", 176 "pricing.features.thirdPartyServices": "Установить сторонние сервисы",
151 "pricing.features.unlimitedServices": "Добавить неограниченные сервисы", 177 "pricing.features.unlimitedServices": "Добавить неограниченные сервисы",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Окружение", 180 "pricing.features.workspaces": "Окружение",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Да, обновите мой аккаунт до Ferdi Professional", 189 "pricing.trial.cta.accept": "Да, обновите мой аккаунт до Ferdi Professional",
162 "pricing.trial.cta.skip": "Перейти к Ферди", 190 "pricing.trial.cta.skip": "Перейти к Ферди",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "К сожалению, мы не смогли активировать ваш пробный период!", 192 "pricing.trial.error": "К сожалению, мы не смогли активировать ваш пробный период!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Перезагрузить {name}", 202 "service.crashHandler.action": "Перезагрузить {name}",
171 "service.crashHandler.autoReload": "Пытаюсь автоматически восстановить {name} в течение {seconds} секунд", 203 "service.crashHandler.autoReload": "Пытаюсь автоматически восстановить {name} в течение {seconds} секунд",
172 "service.crashHandler.headline": "О, нет!", 204 "service.crashHandler.headline": "О, нет!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Кэш", 301 "settings.app.subheadlineCache": "Кэш",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Помогите нам перевести Ferdi на ваш язык.", 303 "settings.app.translationHelp": "Помогите нам перевести Ferdi на ваш язык.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Команда", 388 "settings.team.headline": "Команда",
357 "settings.team.intro": "Вы и ваша команда испльзуете Ferdi? Вы теперь можете управлять Премиум подписками любого количества коллег, друзей и членов семьи, из одного и того же аккаунта.", 389 "settings.team.intro": "Вы и ваша команда испльзуете Ferdi? Вы теперь можете управлять Премиум подписками любого количества коллег, друзей и членов семьи, из одного и того же аккаунта.",
358 "settings.team.manageAction": "Управляйте вашей Командой на getferdi.com", 390 "settings.team.manageAction": "Управляйте вашей Командой на getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Улучшить ваш аккаунт", 393 "settings.team.upgradeAction": "Улучшить ваш аккаунт",
362 "settings.user.form.accountType.company": "Компания", 394 "settings.user.form.accountType.company": "Компания",
363 "settings.user.form.accountType.individual": "Индивидуальный", 395 "settings.user.form.accountType.individual": "Индивидуальный",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Уже есть аккаунт, войти?", 437 "signup.link.login": "Уже есть аккаунт, войти?",
406 "signup.password.label": "Пароль", 438 "signup.password.label": "Пароль",
407 "signup.submit.label": "Создать аккаунт", 439 "signup.submit.label": "Создать аккаунт",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Повысить уровень учетной записи",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Отмена", 451 "subscriptionPopup.buttonCancel": "Отмена",
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index ca4410a56..0b4c0d3fa 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Získajte licenciu pre Ferdi podporu", 10 "feature.delayApp.upgrade.action": "Získajte licenciu pre Ferdi podporu",
11 "feature.delayApp.upgrade.actionShort": "Upgradovať účet", 11 "feature.delayApp.upgrade.actionShort": "Upgradovať účet",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi", 49 "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.", 51 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Odoslať", 163 "password.submit.label": "Odoslať",
141 "password.successInfo": "Skontrolujte prosím váš e-mail", 164 "password.successInfo": "Skontrolujte prosím váš e-mail",
142 "premiumFeature.button.upgradeAccount": "Upgradovať účet", 165 "premiumFeature.button.upgradeAccount": "Upgradovať účet",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Pracovný priestor", 180 "pricing.features.workspaces": "Pracovný priestor",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Znovu načítať {name}", 202 "service.crashHandler.action": "Znovu načítať {name}",
171 "service.crashHandler.autoReload": "Najbližší pokus o automatické obnovenie {name} o {seconds} sekúnd", 203 "service.crashHandler.autoReload": "Najbližší pokus o automatické obnovenie {name} o {seconds} sekúnd",
172 "service.crashHandler.headline": "Ale nie!", 204 "service.crashHandler.headline": "Ale nie!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Vyrovnávacia pamäť", 301 "settings.app.subheadlineCache": "Vyrovnávacia pamäť",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Pomôžte nám preložiť Ferdi do svojho jazyka.", 303 "settings.app.translationHelp": "Pomôžte nám preložiť Ferdi do svojho jazyka.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Tím", 388 "settings.team.headline": "Tím",
357 "settings.team.intro": "Vy a váš tím používate Ferdi? Teraz môžete spravovať prémiové predplatné pre toľko kolegov, priateľov alebo rodinných príslušníkov, koľko chcete, všetko z jedného účtu.", 389 "settings.team.intro": "Vy a váš tím používate Ferdi? Teraz môžete spravovať prémiové predplatné pre toľko kolegov, priateľov alebo rodinných príslušníkov, koľko chcete, všetko z jedného účtu.",
358 "settings.team.manageAction": "Spravujte svoj tím na adrese getferdi.com", 390 "settings.team.manageAction": "Spravujte svoj tím na adrese getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Vylepšite svoj účet", 393 "settings.team.upgradeAction": "Vylepšite svoj účet",
362 "settings.user.form.accountType.company": "Spoločnosť", 394 "settings.user.form.accountType.company": "Spoločnosť",
363 "settings.user.form.accountType.individual": "Osoba", 395 "settings.user.form.accountType.individual": "Osoba",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Už máte účet, chcete sa prihlásiť?", 437 "signup.link.login": "Už máte účet, chcete sa prihlásiť?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Vytvoriť účet", 439 "signup.submit.label": "Vytvoriť účet",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Zrušiť", 451 "subscriptionPopup.buttonCancel": "Zrušiť",
diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/sl.json
+++ b/src/i18n/locales/sl.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
index 4aacd6d6e..1190fee0a 100644
--- a/src/i18n/locales/sr.json
+++ b/src/i18n/locales/sr.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Nije moguće pristupiti Ferdi-ovim on-line servisima. ", 49 "global.api.unhealthy": "Nije moguće pristupiti Ferdi-ovim on-line servisima. ",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Niste povezani sa serverom.", 51 "global.notConnectedToTheInternet": "Niste povezani sa serverom.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Pošalji", 163 "password.submit.label": "Pošalji",
141 "password.successInfo": "Molimo Vas da provjerite vašu e-mail adresu", 164 "password.successInfo": "Molimo Vas da provjerite vašu e-mail adresu",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Osvježi {ime}", 202 "service.crashHandler.action": "Osvježi {ime}",
171 "service.crashHandler.autoReload": "Pokušaću automatski povratiti {ime} u {sekundi} sekundi", 203 "service.crashHandler.autoReload": "Pokušaću automatski povratiti {ime} u {sekundi} sekundi",
172 "service.crashHandler.headline": "O, ne! ", 204 "service.crashHandler.headline": "O, ne! ",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Кеш", 301 "settings.app.subheadlineCache": "Кеш",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ", 303 "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Tim", 388 "settings.team.headline": "Tim",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Tvrtka", 394 "settings.user.form.accountType.company": "Tvrtka",
363 "settings.user.form.accountType.individual": "Pojedinac", 395 "settings.user.form.accountType.individual": "Pojedinac",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Imate račun? Prijavite se.", 437 "signup.link.login": "Imate račun? Prijavite se.",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Napravite novi račun", 439 "signup.submit.label": "Napravite novi račun",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Odustani", 451 "subscriptionPopup.buttonCancel": "Odustani",
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/sv.json
+++ b/src/i18n/locales/sv.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index 08f661d8f..8e55a66f9 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -9,10 +9,26 @@
9 "feature.delayApp.trial.headline": "Ferdi Professional'ın 14 günlük denemesini et ve sıranın önüne geç", 9 "feature.delayApp.trial.headline": "Ferdi Professional'ın 14 günlük denemesini et ve sıranın önüne geç",
10 "feature.delayApp.upgrade.action": "Ferdi Destek Lisansı'nı alın", 10 "feature.delayApp.upgrade.action": "Ferdi Destek Lisansı'nı alın",
11 "feature.delayApp.upgrade.actionShort": "Hesabı Yükselt", 11 "feature.delayApp.upgrade.actionShort": "Hesabı Yükselt",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "TAB, ↑ ve ↓ ile bir servis seç. ENTER ile bir servisi aç.", 28 "feature.quickSwitch.info": "TAB, ↑ ve ↓ ile bir servis seç. ENTER ile bir servisi aç.",
13 "feature.quickSwitch.search": "Ara...", 29 "feature.quickSwitch.search": "Ara...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
15 "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 31 "feature.serviceLimit.limitReached": "Hesabında {limit} adet servis limiti olmasına rağmen {amount} servis ekledin. Lütfen daha fazla servis eklemek için hesabını yükselt.",
16 "feature.shareFranz.action.email": "Mail olarak gönder", 32 "feature.shareFranz.action.email": "Mail olarak gönder",
17 "feature.shareFranz.action.facebook": "Facebook'ta Paylaş", 33 "feature.shareFranz.action.facebook": "Facebook'ta Paylaş",
18 "feature.shareFranz.action.twitter": "Twitter'da Paylaş", 34 "feature.shareFranz.action.twitter": "Twitter'da Paylaş",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Yapılacaklar Listesi şimdi Premium kullanıcılar için kullanılabilir!", 39 "feature.todos.premium.info": "Ferdi Yapılacaklar Listesi şimdi Premium kullanıcılar için kullanılabilir!",
24 "feature.todos.premium.rollout": "Diğer herkes biraz daha beklemek zorunda.", 40 "feature.todos.premium.rollout": "Diğer herkes biraz daha beklemek zorunda.",
25 "feature.todos.premium.upgrade": "Hesabını Yükselt", 41 "feature.todos.premium.upgrade": "Hesabını Yükselt",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Ferdi hizmetlerine şu anda erişilemiyor", 49 "global.api.unhealthy": "Ferdi hizmetlerine şu anda erişilemiyor",
27 "global.franzProRequired": "Ferdi Professional Gerekli", 50 "global.franzProRequired": "Ferdi Professional Gerekli",
28 "global.notConnectedToTheInternet": "İnternete bağlı değilsiniz.", 51 "global.notConnectedToTheInternet": "İnternete bağlı değilsiniz.",
@@ -35,7 +58,7 @@
35 "import.notSupportedHeadline": "Henüz Ferdi 5'te desteklenmeyen servisler", 58 "import.notSupportedHeadline": "Henüz Ferdi 5'te desteklenmeyen servisler",
36 "import.skip.label": "Servisleri kendim eklemek istiyorum", 59 "import.skip.label": "Servisleri kendim eklemek istiyorum",
37 "import.submit.label": "Servisleri içe aktar", 60 "import.submit.label": "Servisleri içe aktar",
38 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 61 "infobar.authRequestFailed": "Yetkili bir işlem yapılmaya çalışırken hatalar ortaya çıktı. Lütfen bu hata tekrarlarsa çıkış yapıp tekrar girmeyi dene.",
39 "infobar.buttonChangelog": "Yeni ne var?", 62 "infobar.buttonChangelog": "Yeni ne var?",
40 "infobar.buttonInstallUpdate": "Yeniden Başlat ve Güncelleştirmeleri Kur", 63 "infobar.buttonInstallUpdate": "Yeniden Başlat ve Güncelleştirmeleri Kur",
41 "infobar.buttonReloadServices": "Hizmetleri yeniden yükle", 64 "infobar.buttonReloadServices": "Hizmetleri yeniden yükle",
@@ -49,12 +72,12 @@
49 "invite.skip.label": "Daha sonra yapmak istiyorum", 72 "invite.skip.label": "Daha sonra yapmak istiyorum",
50 "invite.submit.label": "Davetiye gönder", 73 "invite.submit.label": "Davetiye gönder",
51 "invite.successInfo": "Davetiyeler başarıyla gönderildi", 74 "invite.successInfo": "Davetiyeler başarıyla gönderildi",
52 "locked.headline": "Locked", 75 "locked.headline": "Kilitli",
53 "locked.info": "Ferdi şu anda kilitli. Lütfen mesajlarını görmek için Ferdi'nin kilidini şifrenle aç.", 76 "locked.info": "Ferdi şu anda kilitli. Lütfen mesajlarını görmek için Ferdi'nin kilidini şifrenle aç.",
54 "locked.invalidCredentials": "Password invalid", 77 "locked.invalidCredentials": "Geçersiz şifre",
55 "locked.password.label": "Password", 78 "locked.password.label": "Şifre",
56 "locked.submit.label": "Unlock", 79 "locked.submit.label": "Kilidi aç",
57 "login.changeServer": "Change server", 80 "login.changeServer": "Sunucuyu değiştir",
58 "login.customServerQuestion": "Using a custom Ferdi server?", 81 "login.customServerQuestion": "Using a custom Ferdi server?",
59 "login.customServerSuggestion": "Try importing your Franz account", 82 "login.customServerSuggestion": "Try importing your Franz account",
60 "login.email.label": "E-posta adresi", 83 "login.email.label": "E-posta adresi",
@@ -62,7 +85,7 @@
62 "login.invalidCredentials": "Yanlış parola ya da e-posta adresi", 85 "login.invalidCredentials": "Yanlış parola ya da e-posta adresi",
63 "login.link.password": "Parola sıfırla", 86 "login.link.password": "Parola sıfırla",
64 "login.link.signup": "Ücretsiz hesap oluştur", 87 "login.link.signup": "Ücretsiz hesap oluştur",
65 "login.password.label": "Password", 88 "login.password.label": "Şifre",
66 "login.serverLogout": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", 89 "login.serverLogout": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.",
67 "login.submit.label": "Oturum Aç", 90 "login.submit.label": "Oturum Aç",
68 "login.tokenExpired": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", 91 "login.tokenExpired": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.",
@@ -70,7 +93,7 @@
70 "menu.Todoss.openTodosDrawer": "Yapılacaklar çekmecesini aç", 93 "menu.Todoss.openTodosDrawer": "Yapılacaklar çekmecesini aç",
71 "menu.app.about": "Ferdi Hakkında", 94 "menu.app.about": "Ferdi Hakkında",
72 "menu.app.announcement": "Neler yeni?", 95 "menu.app.announcement": "Neler yeni?",
73 "menu.app.autohideMenuBar": "Auto-hide menu bar", 96 "menu.app.autohideMenuBar": "Menü çubuğunu otomatik otomatik olarak gizle",
74 "menu.app.checkForUpdates": "Güncellemeleri kontrol et", 97 "menu.app.checkForUpdates": "Güncellemeleri kontrol et",
75 "menu.app.hide": "Gizle", 98 "menu.app.hide": "Gizle",
76 "menu.app.hideOthers": "Diğerlerini Gizle", 99 "menu.app.hideOthers": "Diğerlerini Gizle",
@@ -94,26 +117,26 @@
94 "menu.file": "Dosya", 117 "menu.file": "Dosya",
95 "menu.help": "Yardım", 118 "menu.help": "Yardım",
96 "menu.help.changelog": "Değişim Günlüğü", 119 "menu.help.changelog": "Değişim Günlüğü",
97 "menu.help.debugInfo": "Copy Debug Information", 120 "menu.help.debugInfo": "Hata ayıklama bilgisini kopyala",
98 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 121 "menu.help.debugInfoCopiedBody": "Hata ayıklama bilgilerin panoya kopyalandı.",
99 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 122 "menu.help.debugInfoCopiedHeadline": "Ferdi Hata Ayıklama Bilgisi",
100 "menu.help.learnMore": "Daha Fazlasını Öğrenin", 123 "menu.help.learnMore": "Daha Fazlasını Öğrenin",
101 "menu.help.privacy": "Gizlilik Sözleşmesi", 124 "menu.help.privacy": "Gizlilik Sözleşmesi",
102 "menu.help.support": "Destek", 125 "menu.help.support": "Destek",
103 "menu.help.tos": "Kullanım Şartları", 126 "menu.help.tos": "Kullanım Şartları",
104 "menu.services": "Hizmetler", 127 "menu.services": "Hizmetler",
105 "menu.services.activatePreviousService": "Activate previous service", 128 "menu.services.activatePreviousService": "Bir önceki servisi aktive et",
106 "menu.services.addNewService": "Yeni servis ekle...", 129 "menu.services.addNewService": "Yeni servis ekle...",
107 "menu.services.goHome": "Home", 130 "menu.services.goHome": "Ana Sayfa",
108 "menu.services.setNextServiceActive": "Activate next service", 131 "menu.services.setNextServiceActive": "Bir sonraki servisi aktive et",
109 "menu.todos": "Yapılacaklar", 132 "menu.todos": "Yapılacaklar",
110 "menu.todos.enableTodos": "Yapılacaklar Listesi'ni Aç", 133 "menu.todos.enableTodos": "Yapılacaklar Listesi'ni Aç",
111 "menu.view": "Görünüm", 134 "menu.view": "Görünüm",
112 "menu.view.back": "Back", 135 "menu.view.back": "Geri",
113 "menu.view.enterFullScreen": "Tam Ekrana Geç", 136 "menu.view.enterFullScreen": "Tam Ekrana Geç",
114 "menu.view.exitFullScreen": "Tam Ekrandan Çık", 137 "menu.view.exitFullScreen": "Tam Ekrandan Çık",
115 "menu.view.forward": "Forward", 138 "menu.view.forward": "İleri",
116 "menu.view.lockFerdi": "Lock Ferdi", 139 "menu.view.lockFerdi": "Ferdi'yi Kilitle",
117 "menu.view.openQuickSwitch": "QuickSwitch'i aç", 140 "menu.view.openQuickSwitch": "QuickSwitch'i aç",
118 "menu.view.reloadFranz": "Ferdi'ı Yeniden Yükle", 141 "menu.view.reloadFranz": "Ferdi'ı Yeniden Yükle",
119 "menu.view.reloadService": "Servisi Tekrar Yükle", 142 "menu.view.reloadService": "Servisi Tekrar Yükle",
@@ -121,17 +144,17 @@
121 "menu.view.toggleDevTools": "Geliştirici Araçlarına Geç", 144 "menu.view.toggleDevTools": "Geliştirici Araçlarına Geç",
122 "menu.view.toggleFullScreen": "Tam Ekrana Geç", 145 "menu.view.toggleFullScreen": "Tam Ekrana Geç",
123 "menu.view.toggleServiceDevTools": "Hizmet Geliştirici Araçlarını Değiştir", 146 "menu.view.toggleServiceDevTools": "Hizmet Geliştirici Araçlarını Değiştir",
124 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 147 "menu.view.toggleTodosDevTools": "Yapılacaklar Listesi Geliştirici Araçlarını Aç",
125 "menu.view.zoomIn": "Yakınlaştır", 148 "menu.view.zoomIn": "Yakınlaştır",
126 "menu.view.zoomOut": "Uzaklaştır", 149 "menu.view.zoomOut": "Uzaklaştır",
127 "menu.window": "Pencere", 150 "menu.window": "Pencere",
128 "menu.window.close": "Kapat", 151 "menu.window.close": "Kapat",
129 "menu.window.minimize": "Simge Durumuna Küçült", 152 "menu.window.minimize": "Simge Durumuna Küçült",
130 "menu.workspaces": "Workspaces", 153 "menu.workspaces": "Çalışma Alanları",
131 "menu.workspaces.addNewWorkspace": "Add New Workspace...", 154 "menu.workspaces.addNewWorkspace": "Yeni Çalışma Alanı ekle...",
132 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", 155 "menu.workspaces.closeWorkspaceDrawer": "Çalışma alanı çekmecesini kapat",
133 "menu.workspaces.defaultWorkspace": "Tüm servisler", 156 "menu.workspaces.defaultWorkspace": "Tüm servisler",
134 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", 157 "menu.workspaces.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç",
135 "password.email.label": "E-posta adresi", 158 "password.email.label": "E-posta adresi",
136 "password.headline": "Parola sıfırla", 159 "password.headline": "Parola sıfırla",
137 "password.link.login": "Hesabına giriş yap", 160 "password.link.login": "Hesabına giriş yap",
@@ -140,16 +163,21 @@
140 "password.submit.label": "Gönder", 163 "password.submit.label": "Gönder",
141 "password.successInfo": "E-postanızı kontrol ediniz", 164 "password.successInfo": "E-postanızı kontrol ediniz",
142 "premiumFeature.button.upgradeAccount": "Hesabı Yükselt", 165 "premiumFeature.button.upgradeAccount": "Hesabı Yükselt",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Sonsuza dek reklamsız", 167 "pricing.features.adFree": "Sonsuza dek reklamsız",
144 "pricing.features.appDelays": "Yükleme Ekranları Yok", 168 "pricing.features.appDelays": "Yükleme Ekranları Yok",
145 "pricing.features.customWebsites": "Özel Siteler Ekle", 169 "pricing.features.customWebsites": "Özel Siteler Ekle",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
147 "pricing.features.serviceProxies": "Service Proxies", 172 "pricing.features.recipes": "Choose from more than 70 Services",
148 "pricing.features.spellchecker": "Spellchecker support", 173 "pricing.features.serviceProxies": "Servis proxy'leri",
149 "pricing.features.teamManagement": "Team Management", 174 "pricing.features.spellchecker": "Yazım denetimi desteği",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 175 "pricing.features.teamManagement": "Takım yönetimi",
151 "pricing.features.unlimitedServices": "Add unlimited services", 176 "pricing.features.thirdPartyServices": "3. parti servisleri yükleme",
152 "pricing.features.workspaces": "Workspaces", 177 "pricing.features.unlimitedServices": "Sınırsız servis ekleme",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
180 "pricing.features.workspaces": "Çalışma Alanları",
153 "pricing.plan.free": "Ferdi - Ücretsiz", 181 "pricing.plan.free": "Ferdi - Ücretsiz",
154 "pricing.plan.legacy": "Ferdi - Premium", 182 "pricing.plan.legacy": "Ferdi - Premium",
155 "pricing.plan.personal": "Ferdi - Kişisel", 183 "pricing.plan.personal": "Ferdi - Kişisel",
@@ -159,14 +187,18 @@
159 "pricing.plan.pro-monthly": "Ferdi - Aylık Professional", 187 "pricing.plan.pro-monthly": "Ferdi - Aylık Professional",
160 "pricing.plan.pro-yearly": "Ferdi - Yıllık Professional", 188 "pricing.plan.pro-yearly": "Ferdi - Yıllık Professional",
161 "pricing.trial.cta.accept": "Evet, hesabını Ferdi Professional'a yükselt", 189 "pricing.trial.cta.accept": "Evet, hesabını Ferdi Professional'a yükselt",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Ferdi'ye Devam Et",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 191 "pricing.trial.cta.start": "Start using Ferdi",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 192 "pricing.trial.error": "Üzgünüz, ücretsiz denemeni başlatamadık!",
165 "pricing.trial.headline": "Ferdi - Professional", 193 "pricing.trial.features.headline": "Ferdi Professional şunları içerir:",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "Kredi kartı gerektirmez",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "{name} yeniden yükle", 202 "service.crashHandler.action": "{name} yeniden yükle",
171 "service.crashHandler.autoReload": "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz", 203 "service.crashHandler.autoReload": "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz",
172 "service.crashHandler.headline": "Olamaz!", 204 "service.crashHandler.headline": "Olamaz!",
@@ -187,7 +219,7 @@
187 "services.getStarted": "Haydi başlayalım", 219 "services.getStarted": "Haydi başlayalım",
188 "services.login": "Please login to use Ferdi.", 220 "services.login": "Please login to use Ferdi.",
189 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", 221 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
190 "services.serverless": "Use Ferdi without an Account", 222 "services.serverless": "Ferdi'yi bir hesap olmadan kullan",
191 "services.welcome": "Ferdi'a Hoşgeldiniz", 223 "services.welcome": "Ferdi'a Hoşgeldiniz",
192 "settings.account.account.editButton": "Hesabı düzenle", 224 "settings.account.account.editButton": "Hesabı düzenle",
193 "settings.account.accountType.basic": "Basit Hesap", 225 "settings.account.accountType.basic": "Basit Hesap",
@@ -209,7 +241,7 @@
209 "settings.account.manageSubscription.label": "Aboneliğini yönet", 241 "settings.account.manageSubscription.label": "Aboneliğini yönet",
210 "settings.account.successInfo": "Değişikliklerin kaydedildi", 242 "settings.account.successInfo": "Değişikliklerin kaydedildi",
211 "settings.account.trial": "Free Trial", 243 "settings.account.trial": "Free Trial",
212 "settings.account.trialEndsIn": "Your free trial ends in {duration}.", 244 "settings.account.trialEndsIn": "Ücretsiz denemen {duration} içinde bitiyor.",
213 "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", 245 "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.",
214 "settings.account.tryReloadServices": "Tekrar deneyin", 246 "settings.account.tryReloadServices": "Tekrar deneyin",
215 "settings.account.tryReloadUserInfoRequest": "Tekrar deneyin", 247 "settings.account.tryReloadUserInfoRequest": "Tekrar deneyin",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Önbellek", 301 "settings.app.subheadlineCache": "Önbellek",
270 "settings.app.todoServerInfo": "Bu sunucu \"Ferdi Yapılacaklar Listesi\" özelliği için kullanılacakdır. (varsayılan: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "Bu sunucu \"Ferdi Yapılacaklar Listesi\" özelliği için kullanılacakdır. (varsayılan: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Ferdi'ı senin diline tercüme etmemiz için yardım et.", 303 "settings.app.translationHelp": "Ferdi'ı senin diline tercüme etmemiz için yardım et.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Takım", 388 "settings.team.headline": "Takım",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "getferdi.com adresinden Ekibini yönet", 390 "settings.team.manageAction": "getferdi.com adresinden Ekibini yönet",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Kurum", 394 "settings.user.form.accountType.company": "Kurum",
363 "settings.user.form.accountType.individual": "Bireysel", 395 "settings.user.form.accountType.individual": "Bireysel",
@@ -387,11 +419,11 @@
387 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", 419 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
388 "sidebar.addNewService": "Yeni servis ekle", 420 "sidebar.addNewService": "Yeni servis ekle",
389 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 421 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
390 "sidebar.closeWorkspaceDrawer": "Close workspace drawer", 422 "sidebar.closeWorkspaceDrawer": "Çalışma alanı çekmecesini kapat",
391 "sidebar.lockFerdi": "Lock Ferdi", 423 "sidebar.lockFerdi": "Ferdi'yi Kilitle",
392 "sidebar.muteApp": "Bildirimleri ve sesli uyarıları kapat", 424 "sidebar.muteApp": "Bildirimleri ve sesli uyarıları kapat",
393 "sidebar.openTodosDrawer": "Open Ferdi Todos", 425 "sidebar.openTodosDrawer": "Open Ferdi Todos",
394 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 426 "sidebar.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç",
395 "sidebar.settings": "Ayarlar", 427 "sidebar.settings": "Ayarlar",
396 "sidebar.unmuteApp": "Bildirimleri ve sesli uyarıları etkinleştir", 428 "sidebar.unmuteApp": "Bildirimleri ve sesli uyarıları etkinleştir",
397 "signup.email.label": "E-posta adresi", 429 "signup.email.label": "E-posta adresi",
@@ -403,12 +435,17 @@
403 "signup.legal.privacy": "Gizlilik Sözleşmesi", 435 "signup.legal.privacy": "Gizlilik Sözleşmesi",
404 "signup.legal.terms": "Kullanım Koşulları", 436 "signup.legal.terms": "Kullanım Koşulları",
405 "signup.link.login": "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", 437 "signup.link.login": "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Şifre",
407 "signup.submit.label": "Hesap oluştur", 439 "signup.submit.label": "Hesap oluştur",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Hesabını Yükselt",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "İptal", 451 "subscriptionPopup.buttonCancel": "İptal",
@@ -427,16 +464,16 @@
427 "validation.oneRequired": "At least one is required", 464 "validation.oneRequired": "At least one is required",
428 "validation.required": "{field} gereklidir", 465 "validation.required": "{field} gereklidir",
429 "validation.url": "{field} geçerli bir URL değil", 466 "validation.url": "{field} geçerli bir URL değil",
430 "webControls.back": "Back", 467 "webControls.back": "Geri",
431 "webControls.forward": "Forward", 468 "webControls.forward": "İleri",
432 "webControls.goHome": "Home", 469 "webControls.goHome": "Ana Sayfa",
433 "webControls.openInBrowser": "Open in Browser", 470 "webControls.openInBrowser": "Open in Browser",
434 "webControls.reload": "Yenile", 471 "webControls.reload": "Yenile",
435 "welcome.loginButton": "Hesabına giriş yap", 472 "welcome.loginButton": "Hesabına giriş yap",
436 "welcome.signupButton": "Ücretsiz hesap oluştur", 473 "welcome.signupButton": "Ücretsiz hesap oluştur",
437 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 474 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
438 "workspaceDrawer.allServices": "Tüm servisler", 475 "workspaceDrawer.allServices": "Tüm servisler",
439 "workspaceDrawer.headline": "Workspaces", 476 "workspaceDrawer.headline": "Çalışma Alanları",
440 "workspaceDrawer.item.contextMenuEdit": "edit", 477 "workspaceDrawer.item.contextMenuEdit": "edit",
441 "workspaceDrawer.item.noServicesAddedYet": "No services added yet", 478 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
442 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", 479 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace",
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 7cbfdc3a3..1deed25fe 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Отримати ліцензію Ferdi Supporter ", 10 "feature.delayApp.upgrade.action": "Отримати ліцензію Ferdi Supporter ",
11 "feature.delayApp.upgrade.actionShort": "Преміум акаунт", 11 "feature.delayApp.upgrade.actionShort": "Преміум акаунт",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Не можливо підключитись до онлайн сервісів Ferdi", 49 "global.api.unhealthy": "Не можливо підключитись до онлайн сервісів Ferdi",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", 51 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Подати", 163 "password.submit.label": "Подати",
141 "password.successInfo": "Будь ласка, перевірте ваш email", 164 "password.successInfo": "Будь ласка, перевірте ваш email",
142 "premiumFeature.button.upgradeAccount": "Преміум акаунт", 165 "premiumFeature.button.upgradeAccount": "Преміум акаунт",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Перезавантажити {name}", 202 "service.crashHandler.action": "Перезавантажити {name}",
171 "service.crashHandler.autoReload": "Спробую автоматично відновити {name} через {seconds} с", 203 "service.crashHandler.autoReload": "Спробую автоматично відновити {name} через {seconds} с",
172 "service.crashHandler.headline": "О, ні!", 204 "service.crashHandler.headline": "О, ні!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Кеш", 301 "settings.app.subheadlineCache": "Кеш",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Допоможіть перекласти Ferdi на Вашу мову.", 303 "settings.app.translationHelp": "Допоможіть перекласти Ferdi на Вашу мову.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Команда", 388 "settings.team.headline": "Команда",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Компанія", 394 "settings.user.form.accountType.company": "Компанія",
363 "settings.user.form.accountType.individual": "Індивідуальний", 395 "settings.user.form.accountType.individual": "Індивідуальний",
@@ -405,10 +437,15 @@
405 "signup.link.login": "У вас вже є обліковий запис, увійти?", 437 "signup.link.login": "У вас вже є обліковий запис, увійти?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Створити акаунт", 439 "signup.submit.label": "Створити акаунт",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Відмінити", 451 "subscriptionPopup.buttonCancel": "Відмінити",
diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/vi.json
+++ b/src/i18n/locales/vi.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json
index 678554c05..872bfd9d7 100644
--- a/src/i18n/locales/zh-HANT.json
+++ b/src/i18n/locales/zh-HANT.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "無法連接到Ferdi網路服務", 49 "global.api.unhealthy": "無法連接到Ferdi網路服務",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "您未連上網際網路", 51 "global.notConnectedToTheInternet": "您未連上網際網路",
@@ -54,6 +77,7 @@
54 "locked.invalidCredentials": "Password invalid", 77 "locked.invalidCredentials": "Password invalid",
55 "locked.password.label": "Password", 78 "locked.password.label": "Password",
56 "locked.submit.label": "Unlock", 79 "locked.submit.label": "Unlock",
80 "login.changeServer": "Change server",
57 "login.customServerQuestion": "Using a custom Ferdi server?", 81 "login.customServerQuestion": "Using a custom Ferdi server?",
58 "login.customServerSuggestion": "Try importing your Franz account", 82 "login.customServerSuggestion": "Try importing your Franz account",
59 "login.email.label": "電子郵件信箱", 83 "login.email.label": "電子郵件信箱",
@@ -139,15 +163,20 @@
139 "password.submit.label": "送出", 163 "password.submit.label": "送出",
140 "password.successInfo": "請重新確認您的電子郵件信箱", 164 "password.successInfo": "請重新確認您的電子郵件信箱",
141 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
142 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
143 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
144 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
145 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
146 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
147 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
148 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
149 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
150 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
151 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
152 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
153 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -159,13 +188,17 @@
159 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
160 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
161 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
162 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
163 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
164 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
165 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
166 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
167 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
168 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
169 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
170 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
171 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -186,6 +219,7 @@
186 "services.getStarted": "開始使用", 219 "services.getStarted": "開始使用",
187 "services.login": "Please login to use Ferdi.", 220 "services.login": "Please login to use Ferdi.",
188 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", 221 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
222 "services.serverless": "Use Ferdi without an Account",
189 "services.welcome": "歡迎使用 Ferdi", 223 "services.welcome": "歡迎使用 Ferdi",
190 "settings.account.account.editButton": "更改帳戶資訊", 224 "settings.account.account.editButton": "更改帳戶資訊",
191 "settings.account.accountType.basic": "基本帳戶", 225 "settings.account.accountType.basic": "基本帳戶",
@@ -263,7 +297,7 @@
263 "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.", 297 "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.",
264 "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.", 298 "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.",
265 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
266 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
267 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
268 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
269 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -354,6 +388,8 @@
354 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
355 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
356 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
391 "settings.team.teamsUnavailable": "Teams are unavailable",
392 "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.",
357 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
358 "settings.user.form.accountType.company": "公司", 394 "settings.user.form.accountType.company": "公司",
359 "settings.user.form.accountType.individual": "個人", 395 "settings.user.form.accountType.individual": "個人",
@@ -401,10 +437,15 @@
401 "signup.link.login": "您已有一個帳戶,請問是否要登入?", 437 "signup.link.login": "您已有一個帳戶,請問是否要登入?",
402 "signup.password.label": "Password", 438 "signup.password.label": "Password",
403 "signup.submit.label": "建立帳戶", 439 "signup.submit.label": "建立帳戶",
440 "subscription.bestValue": "Best value",
404 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
405 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
406 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
407 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
408 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
409 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
410 "subscriptionPopup.buttonCancel": "取消", 451 "subscriptionPopup.buttonCancel": "取消",
diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json
deleted file mode 100644
index 678554c05..000000000
--- a/src/i18n/locales/zh-Hant.json
+++ /dev/null
@@ -1,444 +0,0 @@
1{
2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "Something went wrong",
4 "feature.announcements.changelog.headline": "Changes in Ferdi {version}",
5 "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting",
6 "feature.delayApp.text": "Ferdi will continue in {seconds} seconds.",
7 "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional",
8 "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial",
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch",
15 "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.",
16 "feature.shareFranz.action.email": "Send as email",
17 "feature.shareFranz.action.facebook": "Share on Facebook",
18 "feature.shareFranz.action.twitter": "Share on Twitter",
19 "feature.shareFranz.headline": "Ferdi is better together!",
20 "feature.shareFranz.shareText.email": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com",
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.",
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account",
26 "global.api.unhealthy": "無法連接到Ferdi網路服務",
27 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "您未連上網際網路",
29 "global.spellchecker.useDefault": "Use System Default ({default})",
30 "global.spellchecking.autodetect": "Detect language automatically",
31 "global.spellchecking.autodetect.short": "Automatic",
32 "global.spellchecking.language": "Spell checking language",
33 "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional",
34 "import.headline": "匯入您的 Ferdi 4 服務",
35 "import.notSupportedHeadline": "此服務不被 Ferdi 5 支持",
36 "import.skip.label": "我想手動匯入",
37 "import.submit.label": "匯入服務",
38 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
39 "infobar.buttonChangelog": "What is new?",
40 "infobar.buttonInstallUpdate": "重新啟動並且更新",
41 "infobar.buttonReloadServices": "重新載入",
42 "infobar.requiredRequestsFailed": "無法載入服務與帳戶資訊",
43 "infobar.servicesUpdated": "您的服務已更新",
44 "infobar.trialActivated": "Your trial was successfully activated. Happy messaging!",
45 "infobar.updateAvailable": "有新的更新可安裝",
46 "invite.email.label": "電子郵件信箱",
47 "invite.headline.friends": "邀請三個人",
48 "invite.name.label": "名子",
49 "invite.skip.label": "我想晚點進行",
50 "invite.submit.label": "Send invites",
51 "invite.successInfo": "Invitations sent successfully",
52 "locked.headline": "Locked",
53 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
54 "locked.invalidCredentials": "Password invalid",
55 "locked.password.label": "Password",
56 "locked.submit.label": "Unlock",
57 "login.customServerQuestion": "Using a custom Ferdi server?",
58 "login.customServerSuggestion": "Try importing your Franz account",
59 "login.email.label": "電子郵件信箱",
60 "login.headline": "登入",
61 "login.invalidCredentials": "電子郵件帳戶或密碼有誤",
62 "login.link.password": "密碼重設",
63 "login.link.signup": "建立一個免費帳戶",
64 "login.password.label": "Password",
65 "login.serverLogout": "登入狀態過期,請重新登入",
66 "login.submit.label": "登入",
67 "login.tokenExpired": "登入狀態過期,請重新登入",
68 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
69 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
70 "menu.app.about": "About Ferdi",
71 "menu.app.announcement": "What's new?",
72 "menu.app.autohideMenuBar": "Auto-hide menu bar",
73 "menu.app.checkForUpdates": "Check for updates",
74 "menu.app.hide": "Hide",
75 "menu.app.hideOthers": "Hide Others",
76 "menu.app.quit": "Quit",
77 "menu.app.settings": "Settings",
78 "menu.app.unhide": "Unhide",
79 "menu.edit": "Edit",
80 "menu.edit.copy": "Copy",
81 "menu.edit.cut": "Cut",
82 "menu.edit.delete": "Delete",
83 "menu.edit.emojiSymbols": "Emoji & Symbols",
84 "menu.edit.paste": "Paste",
85 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
86 "menu.edit.redo": "Redo",
87 "menu.edit.selectAll": "Select All",
88 "menu.edit.speech": "Speech",
89 "menu.edit.startDictation": "Start Dictation",
90 "menu.edit.startSpeaking": "Start Speaking",
91 "menu.edit.stopSpeaking": "Stop Speaking",
92 "menu.edit.undo": "Undo",
93 "menu.file": "File",
94 "menu.help": "Help",
95 "menu.help.changelog": "Changelog",
96 "menu.help.debugInfo": "Copy Debug Information",
97 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
98 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
99 "menu.help.learnMore": "Learn More",
100 "menu.help.privacy": "Privacy Statement",
101 "menu.help.support": "Support",
102 "menu.help.tos": "Terms of Service",
103 "menu.services": "Services",
104 "menu.services.activatePreviousService": "Activate previous service",
105 "menu.services.addNewService": "Add New Service...",
106 "menu.services.goHome": "Home",
107 "menu.services.setNextServiceActive": "Activate next service",
108 "menu.todos": "Todos",
109 "menu.todos.enableTodos": "Enable Todos",
110 "menu.view": "View",
111 "menu.view.back": "Back",
112 "menu.view.enterFullScreen": "Enter Full Screen",
113 "menu.view.exitFullScreen": "Exit Full Screen",
114 "menu.view.forward": "Forward",
115 "menu.view.lockFerdi": "Lock Ferdi",
116 "menu.view.openQuickSwitch": "Open Quick Switch",
117 "menu.view.reloadFranz": "Reload Ferdi",
118 "menu.view.reloadService": "Reload Service",
119 "menu.view.resetZoom": "Actual Size",
120 "menu.view.toggleDevTools": "Toggle Developer Tools",
121 "menu.view.toggleFullScreen": "Toggle Full Screen",
122 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
123 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools",
124 "menu.view.zoomIn": "Zoom In",
125 "menu.view.zoomOut": "Zoom Out",
126 "menu.window": "Window",
127 "menu.window.close": "Close",
128 "menu.window.minimize": "Minimize",
129 "menu.workspaces": "Workspaces",
130 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
131 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
132 "menu.workspaces.defaultWorkspace": "All services",
133 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
134 "password.email.label": "電子郵件信箱",
135 "password.headline": "密碼重設",
136 "password.link.login": "登入您的帳戶",
137 "password.link.signup": "建立一個免費帳戶",
138 "password.noUser": "此電子郵件帳戶不存在",
139 "password.submit.label": "送出",
140 "password.successInfo": "請重新確認您的電子郵件信箱",
141 "premiumFeature.button.upgradeAccount": "Upgrade account",
142 "pricing.features.adFree": "Forever ad-free",
143 "pricing.features.appDelays": "No Waiting Screens",
144 "pricing.features.customWebsites": "Add Custom Websites",
145 "pricing.features.onPremise": "On-premise & other Hosted Services",
146 "pricing.features.serviceProxies": "Service Proxies",
147 "pricing.features.spellchecker": "Spellchecker support",
148 "pricing.features.teamManagement": "Team Management",
149 "pricing.features.thirdPartyServices": "Install 3rd party services",
150 "pricing.features.unlimitedServices": "Add unlimited services",
151 "pricing.features.workspaces": "Workspaces",
152 "pricing.plan.free": "Ferdi Free",
153 "pricing.plan.legacy": "Ferdi Premium",
154 "pricing.plan.personal": "Ferdi Personal",
155 "pricing.plan.personal-monthly": "Ferdi Personal Monthly",
156 "pricing.plan.personal-yearly": "Ferdi Personal Yearly",
157 "pricing.plan.pro": "Ferdi Professional",
158 "pricing.plan.pro-monthly": "Ferdi Professional Monthly",
159 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
160 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
161 "pricing.trial.cta.skip": "Continue to Ferdi",
162 "pricing.trial.error": "Sorry, we could not activate your trial!",
163 "pricing.trial.features.headline": "Ferdi Professional includes:",
164 "pricing.trial.headline": "Ferdi Professional",
165 "pricing.trial.subheadline": "Your personal welcome offer:",
166 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
167 "pricing.trial.terms.headline": "No strings attached",
168 "pricing.trial.terms.noCreditCard": "No credit card required",
169 "service.crashHandler.action": "Reload {name}",
170 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
171 "service.crashHandler.headline": "Oh no!",
172 "service.crashHandler.text": "{name} has caused an error.",
173 "service.disabledHandler.action": "Enable {name}",
174 "service.disabledHandler.headline": "{name} is disabled",
175 "service.errorHandler.action": "Reload {name}",
176 "service.errorHandler.editAction": "Edit {name}",
177 "service.errorHandler.headline": "Oh no!",
178 "service.errorHandler.message": "Error",
179 "service.errorHandler.text": "{name} has failed to load.",
180 "service.restrictedHandler.action": "Upgrade Account",
181 "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required",
182 "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.",
183 "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.",
184 "service.restrictedHandler.serviceLimit.text": "Please upgrade your account to use more than {count} services.",
185 "service.webviewLoader.loading": "Loading",
186 "services.getStarted": "開始使用",
187 "services.login": "Please login to use Ferdi.",
188 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
189 "services.welcome": "歡迎使用 Ferdi",
190 "settings.account.account.editButton": "更改帳戶資訊",
191 "settings.account.accountType.basic": "基本帳戶",
192 "settings.account.accountType.premium": "Premium Supporter Account",
193 "settings.account.buttonSave": "更新帳戶資訊",
194 "settings.account.deleteAccount": "Delete account",
195 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
196 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
197 "settings.account.headline": "帳戶",
198 "settings.account.headlineAccount": "帳戶資訊",
199 "settings.account.headlineDangerZone": "Danger Zone",
200 "settings.account.headlineInvoices": "Invoices",
201 "settings.account.headlinePassword": "更改密碼",
202 "settings.account.headlineProfile": "更新帳戶資訊",
203 "settings.account.headlineSubscription": "您的訂閱",
204 "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial",
205 "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Ferdi experience",
206 "settings.account.invoiceDownload": "下載",
207 "settings.account.manageSubscription.label": "管理訂閱",
208 "settings.account.successInfo": "您的更改已經儲存",
209 "settings.account.trial": "Free Trial",
210 "settings.account.trialEndsIn": "Your free trial ends in {duration}.",
211 "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.",
212 "settings.account.tryReloadServices": "Try again",
213 "settings.account.tryReloadUserInfoRequest": "Try again",
214 "settings.account.upgradeToPro.label": "Upgrade to Ferdi Professional",
215 "settings.account.userInfoRequestFailed": "無法載入帳戶資訊",
216 "settings.account.yourLicense": "Your Ferdi License",
217 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: #7367f0)",
218 "settings.app.buttonClearAllCache": "Clear cache",
219 "settings.app.buttonInstallUpdate": "重新啟動並且更新",
220 "settings.app.buttonSearchForUpdate": "Check for updates",
221 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
222 "settings.app.currentVersion": "當前版本:",
223 "settings.app.form.accentColor": "Accent color",
224 "settings.app.form.autoLaunchInBackground": "背景啟動",
225 "settings.app.form.autoLaunchOnStart": "開機時啟動",
226 "settings.app.form.beta": "包含開發中版本",
227 "settings.app.form.darkMode": "Join the Dark Side",
228 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
229 "settings.app.form.enableLock": "Enable Ferdi password lock",
230 "settings.app.form.enableSpellchecking": "Enable spell checking",
231 "settings.app.form.enableSystemTray": "在系統匣上顯示",
232 "settings.app.form.enableTodos": "Enable Ferdi Todos",
233 "settings.app.form.hibernate": "Enable service hibernation",
234 "settings.app.form.hibernationStrategy": "Hibernation strategy",
235 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
236 "settings.app.form.language": "語言",
237 "settings.app.form.lockPassword": "Ferdi Lock password",
238 "settings.app.form.minimizeToSystemTray": "最小化至系統匣",
239 "settings.app.form.noUpdates": "Disable updates",
240 "settings.app.form.privateNotifications": "Don't show message content in notifications",
241 "settings.app.form.runInBackground": "關閉時保持在背景運作",
242 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",
243 "settings.app.form.scheduledDNDEnd": "To",
244 "settings.app.form.scheduledDNDStart": "From",
245 "settings.app.form.server": "Server",
246 "settings.app.form.showDisabledServices": "Display disabled services tabs",
247 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
248 "settings.app.form.showServiceNavigationBar": "Always show service navigation bar",
249 "settings.app.form.todoServer": "Todo Server",
250 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
251 "settings.app.headline": "Settings",
252 "settings.app.headlineAdvanced": "Advanced",
253 "settings.app.headlineAppearance": "Appearance",
254 "settings.app.headlineGeneral": "一般",
255 "settings.app.headlineLanguage": "語言",
256 "settings.app.headlineUpdates": "更新",
257 "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.",
258 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
259 "settings.app.lockInfo": "Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi 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 CMD/CTRL+Shift+L.",
260 "settings.app.lockedPassword": "Ferdi Lock Password",
261 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
262 "settings.app.restartRequired": "Changes require restart",
263 "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.",
264 "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.",
265 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
266 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.",
267 "settings.app.subheadlineCache": "Cache",
268 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
269 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
270 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
271 "settings.app.updateStatusAvailable": "有可用更新,下載中...",
272 "settings.app.updateStatusSearching": "檢查更新中...",
273 "settings.app.updateStatusUpToDate": "已經是最新版本了",
274 "settings.invite.headline": "Invite Friends",
275 "settings.navigation.account": "帳戶",
276 "settings.navigation.availableServices": "可用服務",
277 "settings.navigation.logout": "登出",
278 "settings.navigation.settings": "Settings",
279 "settings.navigation.supportFerdi": "Support Ferdi",
280 "settings.navigation.team": "Manage Team",
281 "settings.navigation.yourServices": "您的服務",
282 "settings.navigation.yourWorkspaces": "Your workspaces",
283 "settings.recipes.all": "All services",
284 "settings.recipes.custom": "Custom Services",
285 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
286 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
287 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
288 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:",
289 "settings.recipes.customService.openDevDocs": "Developer Documentation",
290 "settings.recipes.customService.openFolder": "Open folder",
291 "settings.recipes.headline": "可用服務",
292 "settings.recipes.missingService": "Missing a service?",
293 "settings.recipes.mostPopular": "熱門",
294 "settings.recipes.nothingFound": "抱歉,找不到您所要的服務",
295 "settings.recipes.servicesSuccessfulAddedInfo": "新增服務成功",
296 "settings.searchService": "Search service",
297 "settings.service.error.goBack": "返回",
298 "settings.service.error.headline": "Error",
299 "settings.service.error.message": "無法載入服務元件",
300 "settings.service.form.addServiceHeadline": "新增 {name}",
301 "settings.service.form.availableServices": "可用服務",
302 "settings.service.form.customUrl": "Custom server",
303 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Ferdi Premium Supporter Account.",
304 "settings.service.form.customUrlUpgradeAccount": "升級帳戶",
305 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
306 "settings.service.form.deleteButton": "刪除",
307 "settings.service.form.editServiceHeadline": "Edit {name}",
308 "settings.service.form.enableAudio": "Enable audio",
309 "settings.service.form.enableBadge": "Show unread message badges",
310 "settings.service.form.enableDarkMode": "Enable Dark Mode",
311 "settings.service.form.enableNotification": "啟用通知",
312 "settings.service.form.enableService": "啟用服務",
313 "settings.service.form.headlineBadges": "Unread message badges",
314 "settings.service.form.headlineGeneral": "一般",
315 "settings.service.form.headlineNotifications": "Notifications",
316 "settings.service.form.icon": "Custom icon",
317 "settings.service.form.iconDelete": "Delete",
318 "settings.service.form.iconUpload": "Drop your image, or click here",
319 "settings.service.form.indirectMessageInfo": "除了 @username, @channel, @here 之外,當您參與的頻道有訊息時,就會通知",
320 "settings.service.form.indirectMessages": "針對全部訊息顯示通知",
321 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
322 "settings.service.form.name": "名子",
323 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
324 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
325 "settings.service.form.proxy.host": "Proxy Host/IP",
326 "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.",
327 "settings.service.form.proxy.isEnabled": "Use Proxy",
328 "settings.service.form.proxy.password": "Password (optional)",
329 "settings.service.form.proxy.port": "Port",
330 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
331 "settings.service.form.proxy.user": "User (optional)",
332 "settings.service.form.saveButton": "儲存",
333 "settings.service.form.tabHosted": "Hosted",
334 "settings.service.form.tabOnPremise": "Self hosted ⭐️",
335 "settings.service.form.team": "Team",
336 "settings.service.form.useHostedService": "Use the hosted {name} service.",
337 "settings.service.form.yourServices": "您的服務",
338 "settings.services.deletedInfo": "服務已刪除",
339 "settings.services.discoverServices": "服務列表",
340 "settings.services.headline": "您的服務",
341 "settings.services.noServicesAdded": "您還沒加入任何服務",
342 "settings.services.servicesRequestFailed": "Could not load your services",
343 "settings.services.tooltip.isDisabled": "已停用服務",
344 "settings.services.tooltip.isMuted": "All sounds are muted",
345 "settings.services.tooltip.notificationsDisabled": "已停用通知",
346 "settings.services.updatedInfo": "您的更改已經儲存",
347 "settings.supportFerdi.github": "Star on GitHub",
348 "settings.supportFerdi.headline": "Support Ferdi",
349 "settings.supportFerdi.openCollective": "Support our Open Collective",
350 "settings.supportFerdi.share": "Tell your Friends",
351 "settings.supportFerdi.title": "Do you like Ferdi? Spread the love!",
352 "settings.team.contentHeadline": "Ferdi for Teams",
353 "settings.team.copy": "Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
354 "settings.team.headline": "Team",
355 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
356 "settings.team.manageAction": "Manage your Team on getferdi.com",
357 "settings.team.upgradeAction": "Upgrade your Account",
358 "settings.user.form.accountType.company": "公司",
359 "settings.user.form.accountType.individual": "個人",
360 "settings.user.form.accountType.label": "帳戶類型",
361 "settings.user.form.accountType.non-profit": "非營利",
362 "settings.user.form.currentPassword": "舊密碼",
363 "settings.user.form.email": "電子郵件信箱",
364 "settings.user.form.firstname": "名子",
365 "settings.user.form.lastname": "姓氏",
366 "settings.user.form.newPassword": "新密碼",
367 "settings.workspace.add.form.name": "名子",
368 "settings.workspace.add.form.submitButton": "Create workspace",
369 "settings.workspace.form.buttonDelete": "Delete workspace",
370 "settings.workspace.form.buttonSave": "Save workspace",
371 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
372 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
373 "settings.workspace.form.name": "名子",
374 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
375 "settings.workspace.form.yourWorkspaces": "Your workspaces",
376 "settings.workspaces.deletedInfo": "Workspace has been deleted",
377 "settings.workspaces.headline": "Your workspaces",
378 "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.",
379 "settings.workspaces.tryReloadWorkspaces": "Try again",
380 "settings.workspaces.updatedInfo": "您的更改已經儲存",
381 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
382 "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.",
383 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
384 "sidebar.addNewService": "Add new service",
385 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
386 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
387 "sidebar.lockFerdi": "Lock Ferdi",
388 "sidebar.muteApp": "Disable notifications & audio",
389 "sidebar.openTodosDrawer": "Open Ferdi Todos",
390 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
391 "sidebar.settings": "Settings",
392 "sidebar.unmuteApp": "Enable notifications & audio",
393 "signup.email.label": "電子郵件信箱",
394 "signup.emailDuplicate": "此電子郵件信箱已被註冊",
395 "signup.firstname.label": "名子",
396 "signup.headline": "註冊",
397 "signup.lastname.label": "姓氏",
398 "signup.legal.info": "在建立帳戶同時,您同意:",
399 "signup.legal.privacy": "Privacy Statement",
400 "signup.legal.terms": "服務條款",
401 "signup.link.login": "您已有一個帳戶,請問是否要登入?",
402 "signup.password.label": "Password",
403 "signup.submit.label": "建立帳戶",
404 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
405 "subscription.cta.allOptions": "See all options",
406 "subscription.cta.choosePlan": "Choose your plan",
407 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
408 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
409 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
410 "subscriptionPopup.buttonCancel": "取消",
411 "subscriptionPopup.buttonDone": "完成",
412 "tabs.item.deleteService": "刪除",
413 "tabs.item.disableAudio": "Disable audio",
414 "tabs.item.disableNotifications": "停用通知",
415 "tabs.item.disableService": "停用服務",
416 "tabs.item.edit": "Edit",
417 "tabs.item.enableAudio": "Enable audio",
418 "tabs.item.enableNotification": "啟用通知",
419 "tabs.item.enableService": "啟用服務",
420 "tabs.item.reload": "Reload",
421 "validation.email": "{field} is not valid",
422 "validation.minLength": "{field} should be at least {length} characters long",
423 "validation.oneRequired": "At least one is required",
424 "validation.required": "{field} is required",
425 "validation.url": "{field} is not a valid URL",
426 "webControls.back": "Back",
427 "webControls.forward": "Forward",
428 "webControls.goHome": "Home",
429 "webControls.openInBrowser": "Open in Browser",
430 "webControls.reload": "Reload",
431 "welcome.loginButton": "登入",
432 "welcome.signupButton": "建立一個免費帳戶",
433 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
434 "workspaceDrawer.allServices": "All services",
435 "workspaceDrawer.headline": "Workspaces",
436 "workspaceDrawer.item.contextMenuEdit": "edit",
437 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
438 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace",
439 "workspaceDrawer.proFeatureBadge": "Premium feature",
440 "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account",
441 "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>",
442 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
443 "workspaces.switchingIndicator.switchingTo": "Switching to"
444}
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json
index f60644ab3..edcc67771 100644
--- a/src/i18n/locales/zh.json
+++ b/src/i18n/locales/zh.json
@@ -9,6 +9,22 @@
9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", 10 "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License",
11 "feature.delayApp.upgrade.actionShort": "Upgrade account", 11 "feature.delayApp.upgrade.actionShort": "Upgrade account",
12 "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free",
13 "feature.planSelection.cta.stayOnFree": "Stay on Free",
14 "feature.planSelection.cta.trial": "Start my free 14-days Trial",
15 "feature.planSelection.cta.upgradePersonal": "Choose Personal",
16 "feature.planSelection.cta.upgradePro": "Choose Professional",
17 "feature.planSelection.free.text": "Basic functionality",
18 "feature.planSelection.fullFeatureList": "Complete comparison of all plans",
19 "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
20 "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal",
21 "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
22 "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
23 "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
24 "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}",
25 "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.",
26 "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment",
27 "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.",
12 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 28 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
13 "feature.quickSwitch.search": "Search...", 29 "feature.quickSwitch.search": "Search...",
14 "feature.quickSwitch.title": "QuickSwitch", 30 "feature.quickSwitch.title": "QuickSwitch",
@@ -23,6 +39,13 @@
23 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", 39 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
24 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 40 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
25 "feature.todos.premium.upgrade": "Upgrade Account", 41 "feature.todos.premium.upgrade": "Upgrade Account",
42 "feature.trialStatusBar.cta": "Upgrade now",
43 "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.",
44 "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free",
45 "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal",
46 "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
47 "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan",
48 "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 49 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.franzProRequired": "Ferdi Professional Required", 50 "global.franzProRequired": "Ferdi Professional Required",
28 "global.notConnectedToTheInternet": "You are not connected to the internet.", 51 "global.notConnectedToTheInternet": "You are not connected to the internet.",
@@ -140,15 +163,20 @@
140 "password.submit.label": "Submit", 163 "password.submit.label": "Submit",
141 "password.successInfo": "Please check your email", 164 "password.successInfo": "Please check your email",
142 "premiumFeature.button.upgradeAccount": "Upgrade account", 165 "premiumFeature.button.upgradeAccount": "Upgrade account",
166 "pricing.features.accountSync": "Account Synchronisation",
143 "pricing.features.adFree": "Forever ad-free", 167 "pricing.features.adFree": "Forever ad-free",
144 "pricing.features.appDelays": "No Waiting Screens", 168 "pricing.features.appDelays": "No Waiting Screens",
145 "pricing.features.customWebsites": "Add Custom Websites", 169 "pricing.features.customWebsites": "Add Custom Websites",
170 "pricing.features.desktopNotifications": "Desktop Notifications",
146 "pricing.features.onPremise": "On-premise & other Hosted Services", 171 "pricing.features.onPremise": "On-premise & other Hosted Services",
172 "pricing.features.recipes": "Choose from more than 70 Services",
147 "pricing.features.serviceProxies": "Service Proxies", 173 "pricing.features.serviceProxies": "Service Proxies",
148 "pricing.features.spellchecker": "Spellchecker support", 174 "pricing.features.spellchecker": "Spellchecker support",
149 "pricing.features.teamManagement": "Team Management", 175 "pricing.features.teamManagement": "Team Management",
150 "pricing.features.thirdPartyServices": "Install 3rd party services", 176 "pricing.features.thirdPartyServices": "Install 3rd party services",
151 "pricing.features.unlimitedServices": "Add unlimited services", 177 "pricing.features.unlimitedServices": "Add unlimited services",
178 "pricing.features.upToSixServices": "Add up to 6 services",
179 "pricing.features.upToThreeServices": "Add up to 3 services",
152 "pricing.features.workspaces": "Workspaces", 180 "pricing.features.workspaces": "Workspaces",
153 "pricing.plan.free": "Ferdi Free", 181 "pricing.plan.free": "Ferdi Free",
154 "pricing.plan.legacy": "Ferdi Premium", 182 "pricing.plan.legacy": "Ferdi Premium",
@@ -160,13 +188,17 @@
160 "pricing.plan.pro-yearly": "Ferdi Professional Yearly", 188 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
161 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", 189 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
162 "pricing.trial.cta.skip": "Continue to Ferdi", 190 "pricing.trial.cta.skip": "Continue to Ferdi",
191 "pricing.trial.cta.start": "Start using Ferdi",
163 "pricing.trial.error": "Sorry, we could not activate your trial!", 192 "pricing.trial.error": "Sorry, we could not activate your trial!",
164 "pricing.trial.features.headline": "Ferdi Professional includes:", 193 "pricing.trial.features.headline": "Ferdi Professional includes:",
165 "pricing.trial.headline": "Ferdi Professional", 194 "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi",
166 "pricing.trial.subheadline": "Your personal welcome offer:", 195 "pricing.trial.intro.happyMessaging": "Happy messaging,",
196 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
197 "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.",
167 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 198 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
168 "pricing.trial.terms.headline": "No strings attached", 199 "pricing.trial.terms.headline": "No strings attached",
169 "pricing.trial.terms.noCreditCard": "No credit card required", 200 "pricing.trial.terms.noCreditCard": "No credit card required",
201 "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)",
170 "service.crashHandler.action": "Reload {name}", 202 "service.crashHandler.action": "Reload {name}",
171 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 203 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
172 "service.crashHandler.headline": "Oh no!", 204 "service.crashHandler.headline": "Oh no!",
@@ -265,7 +297,7 @@
265 "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.", 297 "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.",
266 "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.", 298 "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.",
267 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", 299 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
268 "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", 300 "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.",
269 "settings.app.subheadlineCache": "Cache", 301 "settings.app.subheadlineCache": "Cache",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", 302 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)",
271 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 303 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
@@ -356,8 +388,8 @@
356 "settings.team.headline": "Team", 388 "settings.team.headline": "Team",
357 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 389 "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
358 "settings.team.manageAction": "Manage your Team on getferdi.com", 390 "settings.team.manageAction": "Manage your Team on getferdi.com",
359 "settings.team.teamsUnavailible": "Teams are unavailible", 391 "settings.team.teamsUnavailable": "Teams are unavailable",
360 "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 392 "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.",
361 "settings.team.upgradeAction": "Upgrade your Account", 393 "settings.team.upgradeAction": "Upgrade your Account",
362 "settings.user.form.accountType.company": "Company", 394 "settings.user.form.accountType.company": "Company",
363 "settings.user.form.accountType.individual": "Individual", 395 "settings.user.form.accountType.individual": "Individual",
@@ -405,10 +437,15 @@
405 "signup.link.login": "Already have an account, sign in?", 437 "signup.link.login": "Already have an account, sign in?",
406 "signup.password.label": "Password", 438 "signup.password.label": "Password",
407 "signup.submit.label": "Create account", 439 "signup.submit.label": "Create account",
440 "subscription.bestValue": "Best value",
408 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", 441 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
409 "subscription.cta.allOptions": "See all options", 442 "subscription.cta.allOptions": "See all options",
410 "subscription.cta.choosePlan": "Choose your plan", 443 "subscription.cta.choosePlan": "Choose your plan",
411 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", 444 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
445 "subscription.interval.per": "per {interval}",
446 "subscription.interval.perMonth": "per month",
447 "subscription.interval.perMonthPerUser": "per month & user",
448 "subscription.planItem.upgradeAccount": "Upgrade Account",
412 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", 449 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
413 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", 450 "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!",
414 "subscriptionPopup.buttonCancel": "Cancel", 451 "subscriptionPopup.buttonCancel": "Cancel",
diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json
index 0885f6a20..c4c94bb32 100644
--- a/src/i18n/messages/src/components/auth/Pricing.json
+++ b/src/i18n/messages/src/components/auth/Pricing.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "pricing.trial.headline", 3 "id": "pricing.trial.headline.pro",
4 "defaultMessage": "!!!Franz Professional", 4 "defaultMessage": "!!!Hi {name}, welcome to Franz",
5 "file": "src/components/auth/Pricing.js", 5 "file": "src/components/auth/Pricing.js",
6 "start": { 6 "start": {
7 "line": 15, 7 "line": 15,
@@ -13,12 +13,12 @@
13 } 13 }
14 }, 14 },
15 { 15 {
16 "id": "pricing.trial.subheadline", 16 "id": "pricing.trial.intro.specialTreat",
17 "defaultMessage": "!!!Your personal welcome offer:", 17 "defaultMessage": "!!!We have a special treat for you.",
18 "file": "src/components/auth/Pricing.js", 18 "file": "src/components/auth/Pricing.js",
19 "start": { 19 "start": {
20 "line": 19, 20 "line": 19,
21 "column": 17 21 "column": 16
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 22, 24 "line": 22,
@@ -26,15 +26,41 @@
26 } 26 }
27 }, 27 },
28 { 28 {
29 "id": "pricing.trial.intro.tryPro",
30 "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.",
31 "file": "src/components/auth/Pricing.js",
32 "start": {
33 "line": 23,
34 "column": 10
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "pricing.trial.intro.happyMessaging",
43 "defaultMessage": "!!!Happy messaging,",
44 "file": "src/components/auth/Pricing.js",
45 "start": {
46 "line": 27,
47 "column": 18
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
29 "id": "pricing.trial.terms.headline", 55 "id": "pricing.trial.terms.headline",
30 "defaultMessage": "!!!No strings attached", 56 "defaultMessage": "!!!No strings attached",
31 "file": "src/components/auth/Pricing.js", 57 "file": "src/components/auth/Pricing.js",
32 "start": { 58 "start": {
33 "line": 23, 59 "line": 31,
34 "column": 29 60 "column": 29
35 }, 61 },
36 "end": { 62 "end": {
37 "line": 26, 63 "line": 34,
38 "column": 3 64 "column": 3
39 } 65 }
40 }, 66 },
@@ -43,11 +69,11 @@
43 "defaultMessage": "!!!No credit card required", 69 "defaultMessage": "!!!No credit card required",
44 "file": "src/components/auth/Pricing.js", 70 "file": "src/components/auth/Pricing.js",
45 "start": { 71 "start": {
46 "line": 27, 72 "line": 35,
47 "column": 16 73 "column": 16
48 }, 74 },
49 "end": { 75 "end": {
50 "line": 30, 76 "line": 38,
51 "column": 3 77 "column": 3
52 } 78 }
53 }, 79 },
@@ -56,11 +82,24 @@
56 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 82 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
57 "file": "src/components/auth/Pricing.js", 83 "file": "src/components/auth/Pricing.js",
58 "start": { 84 "start": {
59 "line": 31, 85 "line": 39,
60 "column": 21 86 "column": 21
61 }, 87 },
62 "end": { 88 "end": {
63 "line": 34, 89 "line": 42,
90 "column": 3
91 }
92 },
93 {
94 "id": "pricing.trial.terms.trialWorth",
95 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)",
96 "file": "src/components/auth/Pricing.js",
97 "start": {
98 "line": 43,
99 "column": 14
100 },
101 "end": {
102 "line": 46,
64 "column": 3 103 "column": 3
65 } 104 }
66 }, 105 },
@@ -69,24 +108,37 @@
69 "defaultMessage": "!!!Sorry, we could not activate your trial!", 108 "defaultMessage": "!!!Sorry, we could not activate your trial!",
70 "file": "src/components/auth/Pricing.js", 109 "file": "src/components/auth/Pricing.js",
71 "start": { 110 "start": {
72 "line": 35, 111 "line": 47,
73 "column": 19 112 "column": 19
74 }, 113 },
75 "end": { 114 "end": {
76 "line": 38, 115 "line": 50,
77 "column": 3 116 "column": 3
78 } 117 }
79 }, 118 },
80 { 119 {
81 "id": "pricing.trial.cta.accept", 120 "id": "pricing.trial.cta.accept",
82 "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", 121 "defaultMessage": "!!!Start my 14-day Franz Professional Trial",
83 "file": "src/components/auth/Pricing.js", 122 "file": "src/components/auth/Pricing.js",
84 "start": { 123 "start": {
85 "line": 39, 124 "line": 51,
86 "column": 13 125 "column": 13
87 }, 126 },
88 "end": { 127 "end": {
89 "line": 42, 128 "line": 54,
129 "column": 3
130 }
131 },
132 {
133 "id": "pricing.trial.cta.start",
134 "defaultMessage": "!!!Start using Franz",
135 "file": "src/components/auth/Pricing.js",
136 "start": {
137 "line": 55,
138 "column": 12
139 },
140 "end": {
141 "line": 58,
90 "column": 3 142 "column": 3
91 } 143 }
92 }, 144 },
@@ -95,11 +147,11 @@
95 "defaultMessage": "!!!Continue to Ferdi", 147 "defaultMessage": "!!!Continue to Ferdi",
96 "file": "src/components/auth/Pricing.js", 148 "file": "src/components/auth/Pricing.js",
97 "start": { 149 "start": {
98 "line": 43, 150 "line": 59,
99 "column": 11 151 "column": 11
100 }, 152 },
101 "end": { 153 "end": {
102 "line": 46, 154 "line": 62,
103 "column": 3 155 "column": 3
104 } 156 }
105 }, 157 },
@@ -108,11 +160,11 @@
108 "defaultMessage": "!!!Franz Professional includes:", 160 "defaultMessage": "!!!Franz Professional includes:",
109 "file": "src/components/auth/Pricing.js", 161 "file": "src/components/auth/Pricing.js",
110 "start": { 162 "start": {
111 "line": 47, 163 "line": 63,
112 "column": 20 164 "column": 20
113 }, 165 },
114 "end": { 166 "end": {
115 "line": 50, 167 "line": 66,
116 "column": 3 168 "column": 3
117 } 169 }
118 } 170 }
diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json
index 0625487b4..bca181d0f 100644
--- a/src/i18n/messages/src/components/layout/AppLayout.json
+++ b/src/i18n/messages/src/components/layout/AppLayout.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Your services have been updated.", 4 "defaultMessage": "!!!Your services have been updated.",
5 "file": "src/components/layout/AppLayout.js", 5 "file": "src/components/layout/AppLayout.js",
6 "start": { 6 "start": {
7 "line": 28, 7 "line": 30,
8 "column": 19 8 "column": 19
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 31, 11 "line": 33,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Reload services", 17 "defaultMessage": "!!!Reload services",
18 "file": "src/components/layout/AppLayout.js", 18 "file": "src/components/layout/AppLayout.js",
19 "start": { 19 "start": {
20 "line": 32, 20 "line": 34,
21 "column": 24 21 "column": 24
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 35, 24 "line": 37,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Could not load services and user information", 30 "defaultMessage": "!!!Could not load services and user information",
31 "file": "src/components/layout/AppLayout.js", 31 "file": "src/components/layout/AppLayout.js",
32 "start": { 32 "start": {
33 "line": 36, 33 "line": 38,
34 "column": 26 34 "column": 26
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 39, 37 "line": 41,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 43 "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
44 "file": "src/components/layout/AppLayout.js", 44 "file": "src/components/layout/AppLayout.js",
45 "start": { 45 "start": {
46 "line": 40, 46 "line": 42,
47 "column": 21 47 "column": 21
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 43, 50 "line": 45,
51 "column": 3 51 "column": 3
52 } 52 }
53 } 53 }
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
index b7309469e..154cdbe84 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": 14, 7 "line": 17,
8 "column": 21 8 "column": 21
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 17, 11 "line": 20,
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": 18, 20 "line": 21,
21 "column": 16 21 "column": 16
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 21, 24 "line": 24,
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": 22, 33 "line": 25,
34 "column": 18 34 "column": 18
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 25, 37 "line": 28,
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": 26, 46 "line": 29,
47 "column": 11 47 "column": 11
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 29, 50 "line": 32,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +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": 30, 59 "line": 33,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 33, 63 "line": 36,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Settings", 69 "defaultMessage": "!!!Settings",
70 "file": "src/components/settings/navigation/SettingsNavigation.js", 70 "file": "src/components/settings/navigation/SettingsNavigation.js",
71 "start": { 71 "start": {
72 "line": 34, 72 "line": 37,
73 "column": 12 73 "column": 12
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 37, 76 "line": 40,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Support Ferdi", 82 "defaultMessage": "!!!Support Ferdi",
83 "file": "src/components/settings/navigation/SettingsNavigation.js", 83 "file": "src/components/settings/navigation/SettingsNavigation.js",
84 "start": { 84 "start": {
85 "line": 38, 85 "line": 41,
86 "column": 16 86 "column": 16
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 41, 89 "line": 44,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Logout", 95 "defaultMessage": "!!!Logout",
96 "file": "src/components/settings/navigation/SettingsNavigation.js", 96 "file": "src/components/settings/navigation/SettingsNavigation.js",
97 "start": { 97 "start": {
98 "line": 42, 98 "line": 45,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 45, 102 "line": 48,
103 "column": 3 103 "column": 3
104 } 104 }
105 } 105 }
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
index 64693933c..bbf362087 100644
--- a/src/i18n/messages/src/components/settings/team/TeamDashboard.json
+++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
@@ -78,8 +78,8 @@
78 } 78 }
79 }, 79 },
80 { 80 {
81 "id": "settings.team.teamsUnavailible", 81 "id": "settings.team.teamsUnavailable",
82 "defaultMessage": "!!!Teams are unavailible", 82 "defaultMessage": "!!!Teams are unavailable",
83 "file": "src/components/settings/team/TeamDashboard.js", 83 "file": "src/components/settings/team/TeamDashboard.js",
84 "start": { 84 "start": {
85 "line": 41, 85 "line": 41,
@@ -91,8 +91,8 @@
91 } 91 }
92 }, 92 },
93 { 93 {
94 "id": "settings.team.teamsUnavailibleInfo", 94 "id": "settings.team.teamsUnavailableInfo",
95 "defaultMessage": "!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 95 "defaultMessage": "!!!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.",
96 "file": "src/components/settings/team/TeamDashboard.js", 96 "file": "src/components/settings/team/TeamDashboard.js",
97 "start": { 97 "start": {
98 "line": 45, 98 "line": 45,
diff --git a/src/i18n/messages/src/components/ui/FeatureList.json b/src/i18n/messages/src/components/ui/FeatureList.json
index 497e299a4..3201115b3 100644
--- a/src/i18n/messages/src/components/ui/FeatureList.json
+++ b/src/i18n/messages/src/components/ui/FeatureList.json
@@ -1,14 +1,79 @@
1[ 1[
2 { 2 {
3 "id": "pricing.features.recipes",
4 "defaultMessage": "!!!Choose from more than 70 Services",
5 "file": "src/components/ui/FeatureList.js",
6 "start": {
7 "line": 9,
8 "column": 20
9 },
10 "end": {
11 "line": 12,
12 "column": 3
13 }
14 },
15 {
16 "id": "pricing.features.accountSync",
17 "defaultMessage": "!!!Account Synchronisation",
18 "file": "src/components/ui/FeatureList.js",
19 "start": {
20 "line": 13,
21 "column": 15
22 },
23 "end": {
24 "line": 16,
25 "column": 3
26 }
27 },
28 {
29 "id": "pricing.features.desktopNotifications",
30 "defaultMessage": "!!!Desktop Notifications",
31 "file": "src/components/ui/FeatureList.js",
32 "start": {
33 "line": 17,
34 "column": 24
35 },
36 "end": {
37 "line": 20,
38 "column": 3
39 }
40 },
41 {
3 "id": "pricing.features.unlimitedServices", 42 "id": "pricing.features.unlimitedServices",
4 "defaultMessage": "!!!Add unlimited services", 43 "defaultMessage": "!!!Add unlimited services",
5 "file": "src/components/ui/FeatureList.js", 44 "file": "src/components/ui/FeatureList.js",
6 "start": { 45 "start": {
7 "line": 8, 46 "line": 21,
8 "column": 21 47 "column": 21
9 }, 48 },
10 "end": { 49 "end": {
11 "line": 11, 50 "line": 24,
51 "column": 3
52 }
53 },
54 {
55 "id": "pricing.features.upToThreeServices",
56 "defaultMessage": "!!!Add up to 3 services",
57 "file": "src/components/ui/FeatureList.js",
58 "start": {
59 "line": 25,
60 "column": 21
61 },
62 "end": {
63 "line": 28,
64 "column": 3
65 }
66 },
67 {
68 "id": "pricing.features.upToSixServices",
69 "defaultMessage": "!!!Add up to 6 services",
70 "file": "src/components/ui/FeatureList.js",
71 "start": {
72 "line": 29,
73 "column": 19
74 },
75 "end": {
76 "line": 32,
12 "column": 3 77 "column": 3
13 } 78 }
14 }, 79 },
@@ -17,11 +82,11 @@
17 "defaultMessage": "!!!Spellchecker support", 82 "defaultMessage": "!!!Spellchecker support",
18 "file": "src/components/ui/FeatureList.js", 83 "file": "src/components/ui/FeatureList.js",
19 "start": { 84 "start": {
20 "line": 12, 85 "line": 33,
21 "column": 16 86 "column": 16
22 }, 87 },
23 "end": { 88 "end": {
24 "line": 15, 89 "line": 36,
25 "column": 3 90 "column": 3
26 } 91 }
27 }, 92 },
@@ -30,11 +95,11 @@
30 "defaultMessage": "!!!Workspaces", 95 "defaultMessage": "!!!Workspaces",
31 "file": "src/components/ui/FeatureList.js", 96 "file": "src/components/ui/FeatureList.js",
32 "start": { 97 "start": {
33 "line": 16, 98 "line": 37,
34 "column": 14 99 "column": 14
35 }, 100 },
36 "end": { 101 "end": {
37 "line": 19, 102 "line": 40,
38 "column": 3 103 "column": 3
39 } 104 }
40 }, 105 },
@@ -43,11 +108,11 @@
43 "defaultMessage": "!!!Add Custom Websites", 108 "defaultMessage": "!!!Add Custom Websites",
44 "file": "src/components/ui/FeatureList.js", 109 "file": "src/components/ui/FeatureList.js",
45 "start": { 110 "start": {
46 "line": 20, 111 "line": 41,
47 "column": 18 112 "column": 18
48 }, 113 },
49 "end": { 114 "end": {
50 "line": 23, 115 "line": 44,
51 "column": 3 116 "column": 3
52 } 117 }
53 }, 118 },
@@ -56,11 +121,11 @@
56 "defaultMessage": "!!!On-premise & other Hosted Services", 121 "defaultMessage": "!!!On-premise & other Hosted Services",
57 "file": "src/components/ui/FeatureList.js", 122 "file": "src/components/ui/FeatureList.js",
58 "start": { 123 "start": {
59 "line": 24, 124 "line": 45,
60 "column": 13 125 "column": 13
61 }, 126 },
62 "end": { 127 "end": {
63 "line": 27, 128 "line": 48,
64 "column": 3 129 "column": 3
65 } 130 }
66 }, 131 },
@@ -69,11 +134,11 @@
69 "defaultMessage": "!!!Install 3rd party services", 134 "defaultMessage": "!!!Install 3rd party services",
70 "file": "src/components/ui/FeatureList.js", 135 "file": "src/components/ui/FeatureList.js",
71 "start": { 136 "start": {
72 "line": 28, 137 "line": 49,
73 "column": 22 138 "column": 22
74 }, 139 },
75 "end": { 140 "end": {
76 "line": 31, 141 "line": 52,
77 "column": 3 142 "column": 3
78 } 143 }
79 }, 144 },
@@ -82,11 +147,11 @@
82 "defaultMessage": "!!!Service Proxies", 147 "defaultMessage": "!!!Service Proxies",
83 "file": "src/components/ui/FeatureList.js", 148 "file": "src/components/ui/FeatureList.js",
84 "start": { 149 "start": {
85 "line": 32, 150 "line": 53,
86 "column": 18 151 "column": 18
87 }, 152 },
88 "end": { 153 "end": {
89 "line": 35, 154 "line": 56,
90 "column": 3 155 "column": 3
91 } 156 }
92 }, 157 },
@@ -95,11 +160,11 @@
95 "defaultMessage": "!!!Team Management", 160 "defaultMessage": "!!!Team Management",
96 "file": "src/components/ui/FeatureList.js", 161 "file": "src/components/ui/FeatureList.js",
97 "start": { 162 "start": {
98 "line": 36, 163 "line": 57,
99 "column": 18 164 "column": 18
100 }, 165 },
101 "end": { 166 "end": {
102 "line": 39, 167 "line": 60,
103 "column": 3 168 "column": 3
104 } 169 }
105 }, 170 },
@@ -108,11 +173,11 @@
108 "defaultMessage": "!!!No Waiting Screens", 173 "defaultMessage": "!!!No Waiting Screens",
109 "file": "src/components/ui/FeatureList.js", 174 "file": "src/components/ui/FeatureList.js",
110 "start": { 175 "start": {
111 "line": 40, 176 "line": 61,
112 "column": 13 177 "column": 13
113 }, 178 },
114 "end": { 179 "end": {
115 "line": 43, 180 "line": 64,
116 "column": 3 181 "column": 3
117 } 182 }
118 }, 183 },
@@ -121,11 +186,11 @@
121 "defaultMessage": "!!!Forever ad-free", 186 "defaultMessage": "!!!Forever ad-free",
122 "file": "src/components/ui/FeatureList.js", 187 "file": "src/components/ui/FeatureList.js",
123 "start": { 188 "start": {
124 "line": 44, 189 "line": 65,
125 "column": 10 190 "column": 10
126 }, 191 },
127 "end": { 192 "end": {
128 "line": 47, 193 "line": 68,
129 "column": 3 194 "column": 3
130 } 195 }
131 } 196 }
diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json
index 77fabf236..f1d6886f5 100644
--- a/src/i18n/messages/src/features/delayApp/Component.json
+++ b/src/i18n/messages/src/features/delayApp/Component.json
@@ -27,7 +27,7 @@
27 }, 27 },
28 { 28 {
29 "id": "feature.delayApp.upgrade.action", 29 "id": "feature.delayApp.upgrade.action",
30 "defaultMessage": "!!!Get a Franz Supporter License", 30 "defaultMessage": "!!!Upgrade Franz",
31 "file": "src/features/delayApp/Component.js", 31 "file": "src/features/delayApp/Component.js",
32 "start": { 32 "start": {
33 "line": 22, 33 "line": 22,
diff --git a/src/i18n/messages/src/features/planSelection/components/PlanItem.json b/src/i18n/messages/src/features/planSelection/components/PlanItem.json
new file mode 100644
index 000000000..5a94f32ee
--- /dev/null
+++ b/src/i18n/messages/src/features/planSelection/components/PlanItem.json
@@ -0,0 +1,41 @@
1[
2 {
3 "id": "subscription.interval.perMonth",
4 "defaultMessage": "!!!per month",
5 "file": "src/features/planSelection/components/PlanItem.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "subscription.interval.perMonthPerUser",
17 "defaultMessage": "!!!per month & user",
18 "file": "src/features/planSelection/components/PlanItem.js",
19 "start": {
20 "line": 19,
21 "column": 19
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "subscription.bestValue",
30 "defaultMessage": "!!!Best value",
31 "file": "src/features/planSelection/components/PlanItem.js",
32 "start": {
33 "line": 23,
34 "column": 13
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 }
41] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json
new file mode 100644
index 000000000..ed354146e
--- /dev/null
+++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json
@@ -0,0 +1,158 @@
1[
2 {
3 "id": "feature.planSelection.fullscreen.welcome",
4 "defaultMessage": "!!!Are you ready to choose, {name}",
5 "file": "src/features/planSelection/components/PlanSelection.js",
6 "start": {
7 "line": 17,
8 "column": 11
9 },
10 "end": {
11 "line": 20,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.planSelection.fullscreen.subheadline",
17 "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.",
18 "file": "src/features/planSelection/components/PlanSelection.js",
19 "start": {
20 "line": 21,
21 "column": 15
22 },
23 "end": {
24 "line": 24,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.planSelection.free.text",
30 "defaultMessage": "!!!Basic functionality",
31 "file": "src/features/planSelection/components/PlanSelection.js",
32 "start": {
33 "line": 25,
34 "column": 12
35 },
36 "end": {
37 "line": 28,
38 "column": 3
39 }
40 },
41 {
42 "id": "feature.planSelection.personal.text",
43 "defaultMessage": "!!!More services, no waiting - ideal for personal use.",
44 "file": "src/features/planSelection/components/PlanSelection.js",
45 "start": {
46 "line": 29,
47 "column": 16
48 },
49 "end": {
50 "line": 32,
51 "column": 3
52 }
53 },
54 {
55 "id": "feature.planSelection.pro.text",
56 "defaultMessage": "!!!Unlimited services and professional features for you - and your team.",
57 "file": "src/features/planSelection/components/PlanSelection.js",
58 "start": {
59 "line": 33,
60 "column": 20
61 },
62 "end": {
63 "line": 36,
64 "column": 3
65 }
66 },
67 {
68 "id": "feature.planSelection.cta.stayOnFree",
69 "defaultMessage": "!!!Stay on Free",
70 "file": "src/features/planSelection/components/PlanSelection.js",
71 "start": {
72 "line": 37,
73 "column": 17
74 },
75 "end": {
76 "line": 40,
77 "column": 3
78 }
79 },
80 {
81 "id": "feature.planSelection.cta.ctaDowngradeFree",
82 "defaultMessage": "!!!Downgrade to Free",
83 "file": "src/features/planSelection/components/PlanSelection.js",
84 "start": {
85 "line": 41,
86 "column": 20
87 },
88 "end": {
89 "line": 44,
90 "column": 3
91 }
92 },
93 {
94 "id": "feature.planSelection.cta.trial",
95 "defaultMessage": "!!!Start my free 14-days Trial",
96 "file": "src/features/planSelection/components/PlanSelection.js",
97 "start": {
98 "line": 45,
99 "column": 15
100 },
101 "end": {
102 "line": 48,
103 "column": 3
104 }
105 },
106 {
107 "id": "feature.planSelection.cta.upgradePersonal",
108 "defaultMessage": "!!!Choose Personal",
109 "file": "src/features/planSelection/components/PlanSelection.js",
110 "start": {
111 "line": 49,
112 "column": 23
113 },
114 "end": {
115 "line": 52,
116 "column": 3
117 }
118 },
119 {
120 "id": "feature.planSelection.cta.upgradePro",
121 "defaultMessage": "!!!Choose Professional",
122 "file": "src/features/planSelection/components/PlanSelection.js",
123 "start": {
124 "line": 53,
125 "column": 18
126 },
127 "end": {
128 "line": 56,
129 "column": 3
130 }
131 },
132 {
133 "id": "feature.planSelection.fullFeatureList",
134 "defaultMessage": "!!!Complete comparison of all plans",
135 "file": "src/features/planSelection/components/PlanSelection.js",
136 "start": {
137 "line": 57,
138 "column": 19
139 },
140 "end": {
141 "line": 60,
142 "column": 3
143 }
144 },
145 {
146 "id": "feature.planSelection.pricesBasedOnAnnualPayment",
147 "defaultMessage": "!!!All prices based on yearly payment",
148 "file": "src/features/planSelection/components/PlanSelection.js",
149 "start": {
150 "line": 61,
151 "column": 30
152 },
153 "end": {
154 "line": 64,
155 "column": 3
156 }
157 }
158] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json b/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json
new file mode 100644
index 000000000..015304a2e
--- /dev/null
+++ b/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "subscription.interval.per",
4 "defaultMessage": "!!!per {interval}",
5 "file": "src/features/planSelection/components/PlanTeaser.js",
6 "start": {
7 "line": 16,
8 "column": 7
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "subscription.planItem.upgradeAccount",
17 "defaultMessage": "!!!Upgrade Account",
18 "file": "src/features/planSelection/components/PlanTeaser.js",
19 "start": {
20 "line": 20,
21 "column": 7
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json
new file mode 100644
index 000000000..04b2144b4
--- /dev/null
+++ b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "feature.planSelection.fullscreen.dialog.title",
4 "defaultMessage": "!!!Downgrade your Franz Plan",
5 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
6 "start": {
7 "line": 16,
8 "column": 15
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.planSelection.fullscreen.dialog.message",
17 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
18 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
19 "start": {
20 "line": 20,
21 "column": 17
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.planSelection.fullscreen.dialog.cta.downgrade",
30 "defaultMessage": "!!!Downgrade to Free",
31 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
32 "start": {
33 "line": 24,
34 "column": 22
35 },
36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "feature.planSelection.fullscreen.dialog.cta.upgrade",
43 "defaultMessage": "!!!Choose Personal",
44 "file": "src/features/planSelection/containers/PlanSelectionScreen.js",
45 "start": {
46 "line": 28,
47 "column": 20
48 },
49 "end": {
50 "line": 31,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json b/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json
new file mode 100644
index 000000000..bf211a016
--- /dev/null
+++ b/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json
@@ -0,0 +1,41 @@
1[
2 {
3 "id": "feature.trialStatusBar.restTime",
4 "defaultMessage": "!!!Your Free Franz {plan} Trial ends in {time}.",
5 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
6 "start": {
7 "line": 13,
8 "column": 12
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.trialStatusBar.expired",
17 "defaultMessage": "!!!Your free Franz {plan} Trial has expired, please upgrade your account.",
18 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
19 "start": {
20 "line": 17,
21 "column": 11
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.trialStatusBar.cta",
30 "defaultMessage": "!!!Upgrade now",
31 "file": "src/features/trialStatusBar/components/TrialStatusBar.js",
32 "start": {
33 "line": 21,
34 "column": 7
35 },
36 "end": {
37 "line": 24,
38 "column": 3
39 }
40 }
41] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json b/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json
new file mode 100644
index 000000000..306cd0fee
--- /dev/null
+++ b/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "feature.trialStatusBar.fullscreen.dialog.title",
4 "defaultMessage": "!!!Downgrade your Franz Plan",
5 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
6 "start": {
7 "line": 16,
8 "column": 15
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.trialStatusBar.fullscreen.dialog.message",
17 "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.",
18 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
19 "start": {
20 "line": 20,
21 "column": 17
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.trialStatusBar.fullscreen.dialog.cta.downgrade",
30 "defaultMessage": "!!!Downgrade to Free",
31 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
32 "start": {
33 "line": 24,
34 "column": 22
35 },
36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "feature.trialStatusBar.fullscreen.dialog.cta.upgrade",
43 "defaultMessage": "!!!Choose Personal",
44 "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js",
45 "start": {
46 "line": 28,
47 "column": 20
48 },
49 "end": {
50 "line": 31,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
index 4111ba760..87b8942ce 100644
--- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Your workspaces", 4 "defaultMessage": "!!!Your workspaces",
5 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 5 "file": "src/features/workspaces/components/WorkspacesDashboard.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": "!!!You haven't added any workspaces yet.", 17 "defaultMessage": "!!!You haven't added any workspaces yet.",
18 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 18 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
19 "start": { 19 "start": {
20 "line": 23, 20 "line": 24,
21 "column": 19 21 "column": 19
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 26, 24 "line": 27,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Could not load your workspaces", 30 "defaultMessage": "!!!Could not load your workspaces",
31 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 31 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
32 "start": { 32 "start": {
33 "line": 27, 33 "line": 28,
34 "column": 27 34 "column": 27
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 30, 37 "line": 31,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Try again", 43 "defaultMessage": "!!!Try again",
44 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 44 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
45 "start": { 45 "start": {
46 "line": 31, 46 "line": 32,
47 "column": 23 47 "column": 23
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 34, 50 "line": 35,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Your changes have been saved", 56 "defaultMessage": "!!!Your changes have been saved",
57 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 57 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
58 "start": { 58 "start": {
59 "line": 35, 59 "line": 36,
60 "column": 15 60 "column": 15
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 38, 63 "line": 39,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Workspace has been deleted", 69 "defaultMessage": "!!!Workspace has been deleted",
70 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 70 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
71 "start": { 71 "start": {
72 "line": 39, 72 "line": 40,
73 "column": 15 73 "column": 15
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 42, 76 "line": 43,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Info about workspace feature", 82 "defaultMessage": "!!!Info about workspace feature",
83 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 83 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
84 "start": { 84 "start": {
85 "line": 43, 85 "line": 44,
86 "column": 24 86 "column": 24
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 46, 89 "line": 47,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", 95 "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces",
96 "file": "src/features/workspaces/components/WorkspacesDashboard.js", 96 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
97 "start": { 97 "start": {
98 "line": 47, 98 "line": 48,
99 "column": 28 99 "column": 28
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 50, 102 "line": 51,
103 "column": 3 103 "column": 3
104 } 104 }
105 } 105 }
diff --git a/src/i18n/messages/src/helpers/plan-helpers.json b/src/i18n/messages/src/helpers/plan-helpers.json
index df8ee19e3..3f3e7e85d 100644
--- a/src/i18n/messages/src/helpers/plan-helpers.json
+++ b/src/i18n/messages/src/helpers/plan-helpers.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "pricing.plan.pro", 3 "id": "pricing.plan.pro",
4 "defaultMessage": "!!!Franz Professional", 4 "defaultMessage": "!!!Professional",
5 "file": "src/helpers/plan-helpers.js", 5 "file": "src/helpers/plan-helpers.js",
6 "start": { 6 "start": {
7 "line": 5, 7 "line": 5,
@@ -14,7 +14,7 @@
14 }, 14 },
15 { 15 {
16 "id": "pricing.plan.personal", 16 "id": "pricing.plan.personal",
17 "defaultMessage": "!!!Franz Personal", 17 "defaultMessage": "!!!Personal",
18 "file": "src/helpers/plan-helpers.js", 18 "file": "src/helpers/plan-helpers.js",
19 "start": { 19 "start": {
20 "line": 9, 20 "line": 9,
@@ -27,7 +27,7 @@
27 }, 27 },
28 { 28 {
29 "id": "pricing.plan.free", 29 "id": "pricing.plan.free",
30 "defaultMessage": "!!!Franz Free", 30 "defaultMessage": "!!!Free",
31 "file": "src/helpers/plan-helpers.js", 31 "file": "src/helpers/plan-helpers.js",
32 "start": { 32 "start": {
33 "line": 13, 33 "line": 13,
@@ -40,7 +40,7 @@
40 }, 40 },
41 { 41 {
42 "id": "pricing.plan.legacy", 42 "id": "pricing.plan.legacy",
43 "defaultMessage": "!!!Franz Premium", 43 "defaultMessage": "!!!Premium",
44 "file": "src/helpers/plan-helpers.js", 44 "file": "src/helpers/plan-helpers.js",
45 "start": { 45 "start": {
46 "line": 17, 46 "line": 17,
diff --git a/src/index.js b/src/index.js
index 4d7215d5e..87aa6357b 100644
--- a/src/index.js
+++ b/src/index.js
@@ -9,12 +9,11 @@ import fs from 'fs-extra';
9import path from 'path'; 9import path from 'path';
10import windowStateKeeper from 'electron-window-state'; 10import windowStateKeeper from 'electron-window-state';
11 11
12// Set app directory before loading user modules 12if (process.platform === 'win32') {
13if (process.env.FERDI_APPDATA_DIR || process.env.PORTABLE_EXECUTABLE_DIR) { 13 app.setPath('appData', process.env.LOCALAPPDATA);
14 const appDataPath = process.env.FERDI_APPDATA_DIR || process.env.PORTABLE_EXECUTABLE_DIR; 14 app.setPath('userData', path.join(process.env.LOCALAPPDATA, app.getName()));
15 app.setPath('appData', appDataPath);
16 app.setPath('userData', path.join(app.getPath('appData'), app.getName()));
17} 15}
16
18if (isDevMode) { 17if (isDevMode) {
19 app.setPath('userData', path.join(app.getPath('appData'), `${app.getName()}Dev`)); 18 app.setPath('userData', path.join(app.getPath('appData'), `${app.getName()}Dev`));
20} 19}
@@ -69,8 +68,15 @@ if (isWindows) {
69 app.setAppUserModelId(appId); 68 app.setAppUserModelId(appId);
70} 69}
71 70
71// Initialize Settings
72const settings = new Settings('app', DEFAULT_APP_SETTINGS);
73const proxySettings = new Settings('proxy');
74
75// add `liftSingleInstanceLock` to settings.json to override the single instance lock
76const liftSingleInstanceLock = settings.get('liftSingleInstanceLock') || false;
77
72// Force single window 78// Force single window
73const gotTheLock = app.requestSingleInstanceLock(); 79const gotTheLock = liftSingleInstanceLock ? true : app.requestSingleInstanceLock();
74if (!gotTheLock) { 80if (!gotTheLock) {
75 app.quit(); 81 app.quit();
76} else { 82} else {
@@ -117,10 +123,6 @@ if (isLinux && ['Pantheon', 'Unity:Unity7'].indexOf(process.env.XDG_CURRENT_DESK
117 process.env.XDG_CURRENT_DESKTOP = 'Unity'; 123 process.env.XDG_CURRENT_DESKTOP = 'Unity';
118} 124}
119 125
120// Initialize Settings
121const settings = new Settings('app', DEFAULT_APP_SETTINGS);
122const proxySettings = new Settings('proxy');
123
124// Disable GPU acceleration 126// Disable GPU acceleration
125if (!settings.get('enableGPUAcceleration')) { 127if (!settings.get('enableGPUAcceleration')) {
126 debug('Disable GPU Acceleration'); 128 debug('Disable GPU Acceleration');
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index f223283f9..d7398a126 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -730,7 +730,9 @@ export default class FranzMenu {
730 // need to clone object so we don't modify computed (cached) object 730 // need to clone object so we don't modify computed (cached) object
731 const serviceTpl = Object.assign([], this.serviceTpl()); 731 const serviceTpl = Object.assign([], this.serviceTpl());
732 732
733 if (window.ferdi === undefined) { 733 // Don't initialize when window.franz is undefined or when we are on a payment window route
734 if (window.ferdi === undefined || this.stores.router.location.pathname.startsWith('/payment/')) {
735 console.log('skipping menu init');
734 return; 736 return;
735 } 737 }
736 738
diff --git a/src/lib/TouchBar.js b/src/lib/TouchBar.js
index 1de46d2a3..32f546644 100644
--- a/src/lib/TouchBar.js
+++ b/src/lib/TouchBar.js
@@ -24,6 +24,10 @@ export default class FranzTouchBar {
24 _build() { 24 _build() {
25 const currentWindow = remote.getCurrentWindow(); 25 const currentWindow = remote.getCurrentWindow();
26 26
27 if (this.stores.router.location.pathname.startsWith('/payment/')) {
28 return;
29 }
30
27 if (this.stores.user.isLoggedIn) { 31 if (this.stores.user.isLoggedIn) {
28 const { TouchBar } = remote; 32 const { TouchBar } = remote;
29 const { TouchBarButton, TouchBarSpacer } = TouchBar; 33 const { TouchBarButton, TouchBarSpacer } = TouchBar;
diff --git a/src/server b/src/server
Subproject a2b75e6d312304770d49254e8cb3f076efce326 Subproject b5973cdc4cdd60e61d2fba25a317bb4d216a0d1
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 40d98cf42..c6724c20f 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -26,7 +26,9 @@ import { sleep } from '../helpers/async-helpers';
26 26
27const debug = require('debug')('Ferdi:AppStore'); 27const debug = require('debug')('Ferdi:AppStore');
28 28
29const { app, systemPreferences, screen } = remote; 29const {
30 app, systemPreferences, screen, powerMonitor,
31} = remote;
30 32
31const mainWindow = remote.getCurrentWindow(); 33const mainWindow = remote.getCurrentWindow();
32 34
@@ -35,6 +37,8 @@ const autoLauncher = new AutoLaunch({
35 name: 'Ferdi', 37 name: 'Ferdi',
36}); 38});
37 39
40const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions';
41
38export default class AppStore extends Store { 42export default class AppStore extends Store {
39 updateStatusTypes = { 43 updateStatusTypes = {
40 CHECKING: 'CHECKING', 44 CHECKING: 'CHECKING',
@@ -56,6 +60,8 @@ export default class AppStore extends Store {
56 60
57 @observable authRequestFailed = false; 61 @observable authRequestFailed = false;
58 62
63 @observable timeSuspensionStart;
64
59 @observable timeOfflineStart; 65 @observable timeOfflineStart;
60 66
61 @observable updateStatus = null; 67 @observable updateStatus = null;
@@ -76,6 +82,8 @@ export default class AppStore extends Store {
76 82
77 dictionaries = []; 83 dictionaries = [];
78 84
85 fetchDataInterval = null;
86
79 constructor(...args) { 87 constructor(...args) {
80 super(...args); 88 super(...args);
81 89
@@ -97,6 +105,7 @@ export default class AppStore extends Store {
97 this._setLocale.bind(this), 105 this._setLocale.bind(this),
98 this._muteAppHandler.bind(this), 106 this._muteAppHandler.bind(this),
99 this._handleFullScreen.bind(this), 107 this._handleFullScreen.bind(this),
108 this._handleLogout.bind(this),
100 ]); 109 ]);
101 } 110 }
102 111
@@ -124,6 +133,12 @@ export default class AppStore extends Store {
124 this._systemDND(); 133 this._systemDND();
125 setInterval(() => this._systemDND(), ms('5s')); 134 setInterval(() => this._systemDND(), ms('5s'));
126 135
136 this.fetchDataInterval = setInterval(() => {
137 this.stores.user.getUserInfoRequest.invalidate({ immediately: true });
138 this.stores.features.featuresRequest.invalidate({ immediately: true });
139 this.stores.news.latestNewsRequest.invalidate({ immediately: true });
140 }, ms('10m'));
141
127 // Check for updates once every 4 hours 142 // Check for updates once every 4 hours
128 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); 143 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL);
129 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) 144 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues)
@@ -175,6 +190,36 @@ export default class AppStore extends Store {
175 190
176 debug('Window is visible/focused', isVisible); 191 debug('Window is visible/focused', isVisible);
177 }); 192 });
193
194 powerMonitor.on('suspend', () => {
195 debug('System suspended starting timer');
196
197 this.timeSuspensionStart = moment();
198 });
199
200 powerMonitor.on('resume', () => {
201 debug('System resumed, last suspended on', this.timeSuspensionStart.toString());
202
203 if (this.timeSuspensionStart.add(10, 'm').isBefore(moment())) {
204 debug('Reloading services, user info and features');
205
206 setTimeout(() => {
207 window.location.reload();
208 }, ms('2s'));
209 }
210 });
211
212 // macOS catalina notifications hack
213 // notifications got stuck after upgrade but forcing a notification
214 // via `new Notification` triggered the permission request
215 if (isMac && !localStorage.getItem(CATALINA_NOTIFICATION_HACK_KEY)) {
216 // eslint-disable-next-line no-new
217 new window.Notification('Welcome to Franz 5', {
218 body: 'Have a wonderful day & happy messaging.',
219 });
220
221 localStorage.setItem(CATALINA_NOTIFICATION_HACK_KEY, true);
222 }
178 } 223 }
179 224
180 @computed get cacheSize() { 225 @computed get cacheSize() {
@@ -383,6 +428,12 @@ export default class AppStore extends Store {
383 } 428 }
384 } 429 }
385 430
431 _handleLogout() {
432 if (!this.stores.user.isLoggedIn) {
433 clearInterval(this.fetchDataInterval);
434 }
435 }
436
386 // Helpers 437 // Helpers
387 _appStartsCounter() { 438 _appStartsCounter() {
388 this.actions.settings.update({ 439 this.actions.settings.update({
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index 3d9542245..ab5d762c7 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -21,6 +21,8 @@ import serviceLimit from '../features/serviceLimit';
21import communityRecipes from '../features/communityRecipes'; 21import communityRecipes from '../features/communityRecipes';
22import todos from '../features/todos'; 22import todos from '../features/todos';
23import accentColor from '../features/accentColor'; 23import accentColor from '../features/accentColor';
24import planSelection from '../features/planSelection';
25import trialStatusBar from '../features/trialStatusBar';
24 26
25import { DEFAULT_FEATURES_CONFIG } from '../config'; 27import { DEFAULT_FEATURES_CONFIG } from '../config';
26 28
@@ -67,6 +69,7 @@ export default class FeaturesStore extends Store {
67 if (this.stores.user.isLoggedIn) { 69 if (this.stores.user.isLoggedIn) {
68 this.featuresRequest.invalidate({ immediately: true }); 70 this.featuresRequest.invalidate({ immediately: true });
69 } else { 71 } else {
72 this.defaultFeaturesRequest.execute();
70 this.defaultFeaturesRequest.invalidate({ immediately: true }); 73 this.defaultFeaturesRequest.invalidate({ immediately: true });
71 } 74 }
72 } 75 }
@@ -85,5 +88,7 @@ export default class FeaturesStore extends Store {
85 communityRecipes(this.stores, this.actions); 88 communityRecipes(this.stores, this.actions);
86 todos(this.stores, this.actions); 89 todos(this.stores, this.actions);
87 accentColor(this.stores, this.actions); 90 accentColor(this.stores, this.actions);
91 planSelection(this.stores, this.actions);
92 trialStatusBar(this.stores, this.actions);
88 } 93 }
89} 94}
diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js
index 8579812ad..69e6eb9c3 100644
--- a/src/stores/PaymentStore.js
+++ b/src/stores/PaymentStore.js
@@ -1,9 +1,12 @@
1import { action, observable, computed } from 'mobx'; 1import { action, observable, computed } from 'mobx';
2import { remote } from 'electron';
2 3
3import Store from './lib/Store'; 4import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest'; 5import CachedRequest from './lib/CachedRequest';
5import Request from './lib/Request'; 6import Request from './lib/Request';
6 7
8const { BrowserWindow } = remote;
9
7export default class PaymentStore extends Store { 10export default class PaymentStore extends Store {
8 @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); 11 @observable plansRequest = new CachedRequest(this.api.payment, 'plans');
9 12
@@ -13,6 +16,7 @@ export default class PaymentStore extends Store {
13 super(...args); 16 super(...args);
14 17
15 this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this)); 18 this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this));
19 this.actions.payment.upgradeAccount.listen(this._upgradeAccount.bind(this));
16 } 20 }
17 21
18 @computed get plan() { 22 @computed get plan() {
@@ -27,4 +31,38 @@ export default class PaymentStore extends Store {
27 31
28 return request; 32 return request;
29 } 33 }
34
35 @action _upgradeAccount({ planId, onCloseWindow = () => null }) {
36 let hostedPageURL = this.stores.features.features.subscribeURL;
37
38 const parsedUrl = new URL(hostedPageURL);
39 const params = new URLSearchParams(parsedUrl.search.slice(1));
40
41 params.set('plan', planId);
42
43 hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`);
44
45 const win = new BrowserWindow({
46 parent: remote.getCurrentWindow(),
47 modal: true,
48 title: '🔒 Upgrade Your Franz Account',
49 width: 800,
50 height: window.innerHeight - 100,
51 maxWidth: 800,
52 minWidth: 600,
53 autoHideMenuBar: true,
54 webPreferences: {
55 nodeIntegration: true,
56 webviewTag: true,
57 },
58 });
59 win.loadURL(`file://${__dirname}/../index.html#/payment/${encodeURIComponent(hostedPageURL)}`);
60
61 win.on('closed', () => {
62 this.stores.user.getUserInfoRequest.invalidate({ immediately: true });
63 this.stores.features.featuresRequest.invalidate({ immediately: true });
64
65 onCloseWindow();
66 });
67 }
30} 68}
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 185a6f0ae..934a8a6e0 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -1,4 +1,4 @@
1import { shell } from 'electron'; 1import { shell, remote } from 'electron';
2import { 2import {
3 action, 3 action,
4 reaction, 4 reaction,
@@ -23,6 +23,8 @@ import { KEEP_WS_LOADED_USID } from '../config';
23 23
24const debug = require('debug')('Ferdi:ServiceStore'); 24const debug = require('debug')('Ferdi:ServiceStore');
25 25
26const { app } = remote;
27
26export default class ServicesStore extends Store { 28export default class ServicesStore extends Store {
27 @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); 29 @observable allServicesRequest = new CachedRequest(this.api.services, 'all');
28 30
@@ -818,7 +820,9 @@ export default class ServicesStore extends Store {
818 820
819 if (service.webview) { 821 if (service.webview) {
820 debug('Initialize recipe', service.recipe.id, service.name); 822 debug('Initialize recipe', service.recipe.id, service.name);
821 service.webview.send('initialize-recipe', service.shareWithWebview, service.recipe); 823 service.webview.send('initialize-recipe', Object.assign({
824 franzVersion: app.getVersion(),
825 }, service.shareWithWebview), service.recipe);
822 } 826 }
823 } 827 }
824 828
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 61b7d4adf..d6a2e5fde 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -56,6 +56,8 @@ export default class UserStore extends Store {
56 56
57 @observable isImportLegacyServicesCompleted = false; 57 @observable isImportLegacyServicesCompleted = false;
58 58
59 @observable isLoggingOut = false;
60
59 @observable id; 61 @observable id;
60 62
61 @observable authToken = localStorage.getItem('authToken') || null; 63 @observable authToken = localStorage.getItem('authToken') || null;
@@ -76,6 +78,8 @@ export default class UserStore extends Store {
76 78
77 @observable logoutReason = null; 79 @observable logoutReason = null;
78 80
81 fetchUserInfoInterval = null;
82
79 constructor(...args) { 83 constructor(...args) {
80 super(...args); 84 super(...args);
81 85
@@ -160,7 +164,7 @@ export default class UserStore extends Store {
160 } 164 }
161 165
162 @computed get isPremiumOverride() { 166 @computed get isPremiumOverride() {
163 return ((!this.team || !this.team.plan) && this.isPremium) || (this.team.state === 'expired' && this.isPremium); 167 return ((!this.team || !this.team.plan) && this.isPremium) || (this.team && this.team.state === 'expired' && this.isPremium);
164 } 168 }
165 169
166 @computed get isPersonal() { 170 @computed get isPersonal() {
@@ -199,7 +203,7 @@ export default class UserStore extends Store {
199 } 203 }
200 204
201 @action async _signup({ 205 @action async _signup({
202 firstname, lastname, email, password, accountType, company, 206 firstname, lastname, email, password, accountType, company, plan, currency,
203 }) { 207 }) {
204 const authToken = await this.signupRequest.execute({ 208 const authToken = await this.signupRequest.execute({
205 firstname, 209 firstname,
@@ -209,6 +213,8 @@ export default class UserStore extends Store {
209 accountType, 213 accountType,
210 company, 214 company,
211 locale: this.stores.app.locale, 215 locale: this.stores.app.locale,
216 plan,
217 currency,
212 }); 218 });
213 219
214 this.hasCompletedSignup = true; 220 this.hasCompletedSignup = true;
diff --git a/src/stores/index.js b/src/stores/index.js
index 10dd56665..4eeef7982 100644
--- a/src/stores/index.js
+++ b/src/stores/index.js
@@ -15,6 +15,7 @@ import { announcementsStore } from '../features/announcements';
15import { serviceLimitStore } from '../features/serviceLimit'; 15import { serviceLimitStore } from '../features/serviceLimit';
16import { communityRecipesStore } from '../features/communityRecipes'; 16import { communityRecipesStore } from '../features/communityRecipes';
17import { todosStore } from '../features/todos'; 17import { todosStore } from '../features/todos';
18import { planSelectionStore } from '../features/planSelection';
18 19
19export default (api, actions, router) => { 20export default (api, actions, router) => {
20 const stores = {}; 21 const stores = {};
@@ -37,6 +38,7 @@ export default (api, actions, router) => {
37 serviceLimit: serviceLimitStore, 38 serviceLimit: serviceLimitStore,
38 communityRecipes: communityRecipesStore, 39 communityRecipes: communityRecipesStore,
39 todos: todosStore, 40 todos: todosStore,
41 planSelection: planSelectionStore,
40 }); 42 });
41 // Initialize all stores 43 // Initialize all stores
42 Object.keys(stores).forEach((name) => { 44 Object.keys(stores).forEach((name) => {
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index a7de4b247..c09d69f6c 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -39,7 +39,7 @@ html { overflow: hidden; }
39 color: $theme-brand-primary; 39 color: $theme-brand-primary;
40 } 40 }
41 41
42 .update-availible { 42 .update-available {
43 align-items: center; 43 align-items: center;
44 background: $theme-brand-danger; 44 background: $theme-brand-danger;
45 border-radius: 20px; 45 border-radius: 20px;
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index 753288b8d..324175d0b 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -373,7 +373,7 @@
373 .account__subscription-button { margin-left: auto; } 373 .account__subscription-button { margin-left: auto; }
374 .franz-form__button { white-space: nowrap; } 374 .franz-form__button { white-space: nowrap; }
375 div { height: auto; } 375 div { height: auto; }
376 [data-type="franz-button"] div { height: 100% } 376 [data-type="franz-button"] div { height: 20px }
377 377
378 .invoices { 378 .invoices {
379 width: 100%; 379 width: 100%;
diff --git a/src/styles/subscription-popup.scss b/src/styles/subscription-popup.scss
index fb4795d6c..14e05e65d 100644
--- a/src/styles/subscription-popup.scss
+++ b/src/styles/subscription-popup.scss
@@ -2,7 +2,10 @@
2 height: 100%; 2 height: 100%;
3 3
4 &__content { height: calc(100% - 60px); } 4 &__content { height: calc(100% - 60px); }
5 &__webview { height: 100%; } 5 &__webview {
6 height: 100%;
7 background: #FFF;
8 }
6 9
7 &__toolbar { 10 &__toolbar {
8 background: $theme-gray-lightest; 11 background: $theme-gray-lightest;
diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js
index 877e45e35..74d05fc2d 100644
--- a/src/webview/lib/RecipeWebview.js
+++ b/src/webview/lib/RecipeWebview.js
@@ -1,7 +1,8 @@
1// @flow
2const { ipcRenderer } = require('electron'); 1const { ipcRenderer } = require('electron');
3const fs = require('fs-extra'); 2const fs = require('fs-extra');
4 3
4const debug = require('debug')('Franz:Plugin:RecipeWebview');
5
5class RecipeWebview { 6class RecipeWebview {
6 constructor() { 7 constructor() {
7 this.countCache = { 8 this.countCache = {
@@ -11,6 +12,8 @@ class RecipeWebview {
11 12
12 ipcRenderer.on('poll', () => { 13 ipcRenderer.on('poll', () => {
13 this.loopFunc(); 14 this.loopFunc();
15
16 debug('Poll event');
14 }); 17 });
15 } 18 }
16 19
@@ -50,8 +53,11 @@ class RecipeWebview {
50 indirect: indirectInt > 0 ? indirectInt : 0, 53 indirect: indirectInt > 0 ? indirectInt : 0,
51 }; 54 };
52 55
56
53 ipcRenderer.sendToHost('messages', count); 57 ipcRenderer.sendToHost('messages', count);
54 Object.assign(this.countCache, count); 58 Object.assign(this.countCache, count);
59
60 debug('Sending badge count to host', count);
55 } 61 }
56 62
57 /** 63 /**
@@ -67,6 +73,8 @@ class RecipeWebview {
67 styles.innerHTML = data.toString(); 73 styles.innerHTML = data.toString();
68 74
69 document.querySelector('head').appendChild(styles); 75 document.querySelector('head').appendChild(styles);
76
77 debug('Append styles', styles);
70 }); 78 });
71 } 79 }
72 80
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index ddfd0e139..2bf8f757a 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -242,7 +242,9 @@ window.open = (url, frameName, features) => {
242 return ipcRenderer.sendToHost('new-window', url); 242 return ipcRenderer.sendToHost('new-window', url);
243 } 243 }
244 244
245 return originalWindowOpen(url, frameName, features); 245 if (url) {
246 return originalWindowOpen(url, frameName, features);
247 }
246}; 248};
247 249
248if (isDevMode) { 250if (isDevMode) {