diff options
author | 2019-10-24 15:58:20 +0200 | |
---|---|---|
committer | 2019-10-24 15:58:20 +0200 | |
commit | acbd4ac3e3930a2ea6ef32fa66fb7b4074896873 (patch) | |
tree | 50c8ecb3d08e997106e48d1de5b904a2dba30991 | |
parent | Merge branch 'develop' (diff) | |
parent | Merge pull request #155 from getferdi/l10n_develop (diff) | |
download | ferdium-app-acbd4ac3e3930a2ea6ef32fa66fb7b4074896873.tar.gz ferdium-app-acbd4ac3e3930a2ea6ef32fa66fb7b4074896873.tar.zst ferdium-app-acbd4ac3e3930a2ea6ef32fa66fb7b4074896873.zip |
Merge branch 'develop'v5.4.0-beta.3
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 @@ | |||
1 | build/ | 1 | build/ |
2 | out/ | 2 | out/ |
3 | packages/*/lib | 3 | packages/*/lib |
4 | src/server | ||
5 | recipes/ \ 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 |
@@ -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 | |||
62 | Please 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 | |||
66 | The 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 | ||
72 | Please 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 | ||
95 | It is important you execute the last command to get the required submodules (recipes, server). | ||
96 | |||
80 | ### Install dependencies | 97 | ### Install dependencies |
81 | 98 | ||
82 | Run the following command to install all dependencies, and link sibling modules with Franz. | 99 | Run 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 | ||
88 | If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. | 105 | If 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 | ||
92 | Run these two commands **simultaneously** in different console tabs. | 109 | ```bash |
110 | $ npm run rebuild | ||
111 | ``` | ||
112 | |||
113 | ### Start development app | ||
114 | |||
115 | Run 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 | ||
99 | Be aware that the development database will be reset regularly. | 122 | Be 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 | ||
107 | Deliverables will be available in the `out` folder. | 130 | Deliverables 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 | ||
116 | When 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. | 141 | When 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 | ||
160 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! | 186 | This 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 |
68 | export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string(); | 68 | export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string(); |
69 | export const colorModalBackground = colorContentBackground; | 69 | export const colorModalBackground = legacyStyles.darkThemeGrayDark; |
70 | 70 | ||
71 | // Services | 71 | // Services |
72 | export const services = merge({}, defaultStyles.services, { | 72 | export 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 | ||
151 | export 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 @@ | |||
1 | import color from 'color'; | 1 | import color from 'color'; |
2 | import { cloneDeep } from 'lodash'; | 2 | import { cloneDeep } from 'lodash'; |
3 | 3 | ||
4 | import { darkgreen } from 'color-name'; | ||
4 | import * as legacyStyles from '../legacy'; | 5 | import * as legacyStyles from '../legacy'; |
5 | 6 | ||
6 | export interface IStyleTypes { | 7 | export interface IStyleTypes { |
@@ -224,7 +225,7 @@ export const signup = { | |||
224 | // Todos | 225 | // Todos |
225 | export const todos = { | 226 | export 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 | ||
244 | export 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'; | |||
14 | import announcements from '../features/announcements/actions'; | 14 | import announcements from '../features/announcements/actions'; |
15 | import workspaces from '../features/workspaces/actions'; | 15 | import workspaces from '../features/workspaces/actions'; |
16 | import todos from '../features/todos/actions'; | 16 | import todos from '../features/todos/actions'; |
17 | import planSelection from '../features/planSelection/actions'; | ||
18 | import trialStatusBar from '../features/trialStatusBar/actions'; | ||
17 | 19 | ||
18 | const actions = Object.assign({}, { | 20 | const 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 | ||
73 | export default @observer @inject('actions') class Login extends Component { | 73 | export 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 | ||
14 | const messages = defineMessages({ | 14 | const 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 | ||
98 | export default @injectSheet(styles) @observer class Signup extends Component { | 143 | export 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 | ||
77 | export default @observer @inject('actions') class Signup extends Component { | 77 | export 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 | ||
25 | export default @observer @inject('actions') class Login extends Component { | 25 | export 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'; | |||
19 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; | 19 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; |
20 | import TrialActivationInfoBar from '../TrialActivationInfoBar'; | 20 | import TrialActivationInfoBar from '../TrialActivationInfoBar'; |
21 | import Todos from '../../features/todos/containers/TodosScreen'; | 21 | import Todos from '../../features/todos/containers/TodosScreen'; |
22 | import PlanSelection from '../../features/planSelection/containers/PlanSelectionScreen'; | ||
23 | import TrialStatusBar from '../../features/trialStatusBar/containers/TrialStatusBarScreen'; | ||
22 | 24 | ||
23 | function createMarkup(HTMLString) { | 25 | function 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'; | |||
3 | import { defineMessages, intlShape } from 'react-intl'; | 3 | import { defineMessages, intlShape } from 'react-intl'; |
4 | import { inject, observer } from 'mobx-react'; | 4 | import { inject, observer } from 'mobx-react'; |
5 | import { ProBadge } from '@meetfranz/ui'; | 5 | import { ProBadge } from '@meetfranz/ui'; |
6 | import { RouterStore } from 'mobx-react-router'; | ||
6 | 7 | ||
8 | import { LOCAL_SERVER, LIVE_API } from '../../../config'; | ||
7 | import Link from '../../ui/Link'; | 9 | import Link from '../../ui/Link'; |
8 | import { workspaceStore } from '../../../features/workspaces'; | 10 | import { workspaceStore } from '../../../features/workspaces'; |
9 | import UIStore from '../../../stores/UIStore'; | 11 | import UIStore from '../../../stores/UIStore'; |
12 | import SettingsStore from '../../../stores/SettingsStore'; | ||
10 | import UserStore from '../../../stores/UserStore'; | 13 | import UserStore from '../../../stores/UserStore'; |
11 | import { serviceLimitStore } from '../../../features/serviceLimit'; | 14 | import { serviceLimitStore } from '../../../features/serviceLimit'; |
12 | 15 | ||
@@ -45,11 +48,18 @@ const messages = defineMessages({ | |||
45 | }, | 48 | }, |
46 | }); | 49 | }); |
47 | 50 | ||
48 | export default @inject('stores') @observer class SettingsNavigation extends Component { | 51 | export 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 | ||
31 | const styles = () => ({ | 31 | const styles = () => ({ |
32 | activateTrialButton: { | 32 | activateTrialButton: { |
33 | margin: [40, 0, 50], | 33 | margin: [40, 'auto', 50], |
34 | display: 'flex', | ||
34 | }, | 35 | }, |
35 | }); | 36 | }); |
36 | 37 | ||
37 | export default @observer @injectSheet(styles) class SubscriptionForm extends Component { | 38 | export 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 | ||
44 | const styles = theme => ({ | 44 | const 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'; | |||
3 | import { defineMessages, intlShape } from 'react-intl'; | 3 | import { defineMessages, intlShape } from 'react-intl'; |
4 | 4 | ||
5 | import { FeatureItem } from './FeatureItem'; | 5 | import { FeatureItem } from './FeatureItem'; |
6 | import { PLANS } from '../../config'; | ||
6 | 7 | ||
7 | const messages = defineMessages({ | 8 | const 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'; | |||
9 | import UserStore from '../../../stores/UserStore'; | 9 | import UserStore from '../../../stores/UserStore'; |
10 | 10 | ||
11 | import styles from './styles'; | 11 | import styles from './styles'; |
12 | import FeatureStore from '../../../stores/FeaturesStore'; | 12 | import FeaturesStore from '../../../stores/FeaturesStore'; |
13 | 13 | ||
14 | const messages = defineMessages({ | 14 | const 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 | ||
127 | export const PLANS = { | 127 | export 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 | ||
134 | export const PLANS_MAPPING = { | 134 | export 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 | ||
6 | import AuthLayout from '../../components/auth/AuthLayout'; | 6 | import AuthLayout from '../../components/auth/AuthLayout'; |
7 | import AppStore from '../../stores/AppStore'; | 7 | import AppStore from '../../stores/AppStore'; |
8 | import UserStore from '../../stores/UserStore'; | ||
8 | import GlobalErrorStore from '../../stores/GlobalErrorStore'; | 9 | import GlobalErrorStore from '../../stores/GlobalErrorStore'; |
9 | import AppLoader from '../../components/ui/AppLoader'; | 10 | import 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 | ||
5 | import Signup from '../../components/auth/Signup'; | 5 | import Signup from '../../components/auth/Signup'; |
6 | import UserStore from '../../stores/UserStore'; | 6 | import UserStore from '../../stores/UserStore'; |
7 | import FeaturesStore from '../../stores/FeaturesStore'; | ||
7 | 8 | ||
8 | import { globalError as globalErrorPropType } from '../../prop-types'; | 9 | import { 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'; | |||
24 | import { workspaceActions } from '../../features/workspaces/actions'; | 24 | import { workspaceActions } from '../../features/workspaces/actions'; |
25 | import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; | 25 | import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; |
26 | import { workspaceStore } from '../../features/workspaces'; | 26 | import { workspaceStore } from '../../features/workspaces'; |
27 | import WorkspacesStore from '../../features/workspaces/store'; | ||
27 | 28 | ||
28 | export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { | 29 | export 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'; | |||
5 | import PaymentStore from '../../stores/PaymentStore'; | 5 | import PaymentStore from '../../stores/PaymentStore'; |
6 | import UserStore from '../../stores/UserStore'; | 6 | import UserStore from '../../stores/UserStore'; |
7 | import AppStore from '../../stores/AppStore'; | 7 | import AppStore from '../../stores/AppStore'; |
8 | import FeaturesStore from '../../stores/FeaturesStore'; | ||
8 | 9 | ||
9 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; | 10 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; |
10 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 11 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
@@ -12,8 +13,9 @@ import { WEBSITE } from '../../environment'; | |||
12 | 13 | ||
13 | export default @inject('stores', 'actions') @observer class AccountScreen extends Component { | 14 | export 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 | |||
72 | AccountScreen.wrappedComponent.propTypes = { | 79 | AccountScreen.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 @@ | |||
1 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import { remote } from 'electron'; | ||
2 | import PropTypes from 'prop-types'; | 3 | import PropTypes from 'prop-types'; |
3 | import { inject, observer } from 'mobx-react'; | 4 | import { inject, observer } from 'mobx-react'; |
4 | 5 | ||
@@ -7,11 +8,21 @@ import PaymentStore from '../../stores/PaymentStore'; | |||
7 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; | 8 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; |
8 | import TrialForm from '../../components/subscription/TrialForm'; | 9 | import TrialForm from '../../components/subscription/TrialForm'; |
9 | 10 | ||
11 | const { BrowserWindow } = remote; | ||
12 | |||
10 | export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { | 13 | export 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 @@ | |||
1 | import { ipcMain, app } from 'electron'; | 1 | import { ipcMain, app } from 'electron'; |
2 | import path from 'path'; | ||
3 | import net from 'net'; | 2 | import net from 'net'; |
4 | import startServer from '../../server/start'; | 3 | import 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'; | |||
3 | import DelayAppComponent from './Component'; | 3 | import DelayAppComponent from './Component'; |
4 | 4 | ||
5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; | 5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; |
6 | import { getUserWorkspacesRequest } from '../workspaces/api'; | ||
6 | 7 | ||
7 | const debug = require('debug')('Ferdi:feature:delayApp'); | 8 | const 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 @@ | |||
1 | import PropTypes from 'prop-types'; | ||
2 | import { createActionsFromDefinitions } from '../../actions/lib/actions'; | ||
3 | |||
4 | export const planSelectionActions = createActionsFromDefinitions({ | ||
5 | downgradeAccount: {}, | ||
6 | hideOverlay: {}, | ||
7 | }, PropTypes.checkPropTypes); | ||
8 | |||
9 | export 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 @@ | |||
1 | import { sendAuthRequest } from '../../api/utils/auth'; | ||
2 | import { API, API_VERSION } from '../../environment'; | ||
3 | import Request from '../../stores/lib/Request'; | ||
4 | |||
5 | const debug = require('debug')('Franz:feature:planSelection:api'); | ||
6 | |||
7 | export 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 | |||
22 | export const downgradeUserRequest = new Request(planSelectionApi, 'downgrade'); | ||
23 | |||
24 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | import classnames from 'classnames'; | ||
7 | import color from 'color'; | ||
8 | |||
9 | import { H2 } from '@meetfranz/ui'; | ||
10 | |||
11 | import { Button } from '@meetfranz/forms'; | ||
12 | import { mdiArrowRight } from '@mdi/js'; | ||
13 | |||
14 | const 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 | |||
29 | const 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 | |||
110 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import injectSheet from 'react-jss'; | ||
5 | import { defineMessages, intlShape } from 'react-intl'; | ||
6 | import { H1, H2, Icon } from '@meetfranz/ui'; | ||
7 | import color from 'color'; | ||
8 | |||
9 | import { mdiRocket, mdiArrowRight } from '@mdi/js'; | ||
10 | import PlanItem from './PlanItem'; | ||
11 | import { i18nPlanName } from '../../../helpers/plan-helpers'; | ||
12 | import { PLANS } from '../../../config'; | ||
13 | import { FeatureList } from '../../../components/ui/FeatureList'; | ||
14 | import Appear from '../../../components/ui/effects/Appear'; | ||
15 | |||
16 | const 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 | |||
67 | const 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 | ||
170 | class 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 | |||
279 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import { observer, inject } from 'mobx-react'; | ||
3 | import PropTypes from 'prop-types'; | ||
4 | import { remote } from 'electron'; | ||
5 | import { defineMessages, intlShape } from 'react-intl'; | ||
6 | |||
7 | import FeaturesStore from '../../../stores/FeaturesStore'; | ||
8 | import UserStore from '../../../stores/UserStore'; | ||
9 | import PlanSelection from '../components/PlanSelection'; | ||
10 | import ErrorBoundary from '../../../components/util/ErrorBoundary'; | ||
11 | import { planSelectionStore } from '..'; | ||
12 | |||
13 | const { dialog, app } = remote; | ||
14 | |||
15 | const 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 | ||
35 | class 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 | |||
104 | export default PlanSelectionScreen; | ||
105 | |||
106 | PlanSelectionScreen.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 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import PlanSelectionStore from './store'; | ||
3 | |||
4 | const debug = require('debug')('Franz:feature:planSelection'); | ||
5 | |||
6 | export const planSelectionStore = new PlanSelectionStore(); | ||
7 | |||
8 | export 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 @@ | |||
1 | import { | ||
2 | action, | ||
3 | observable, | ||
4 | computed, | ||
5 | } from 'mobx'; | ||
6 | |||
7 | import { planSelectionActions } from './actions'; | ||
8 | import { FeatureStore } from '../utils/FeatureStore'; | ||
9 | import { createActionBindings } from '../utils/ActionBinding'; | ||
10 | import { downgradeUserRequest } from './api'; | ||
11 | |||
12 | const debug = require('debug')('Franz:feature:planSelection:store'); | ||
13 | |||
14 | export 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'; | |||
2 | import ms from 'ms'; | 2 | import ms from 'ms'; |
3 | 3 | ||
4 | import { state as delayAppState } from '../delayApp'; | 4 | import { state as delayAppState } from '../delayApp'; |
5 | import { planSelectionStore } from '../planSelection'; | ||
5 | 6 | ||
6 | export { default as Component } from './Component'; | 7 | export { 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 @@ | |||
1 | import PropTypes from 'prop-types'; | ||
2 | import { createActionsFromDefinitions } from '../../actions/lib/actions'; | ||
3 | |||
4 | export const trialStatusBarActions = createActionsFromDefinitions({ | ||
5 | upgradeAccount: { | ||
6 | planId: PropTypes.string.isRequired, | ||
7 | onCloseWindow: PropTypes.func.isRequired, | ||
8 | }, | ||
9 | downgradeAccount: {}, | ||
10 | hideOverlay: {}, | ||
11 | }, PropTypes.checkPropTypes); | ||
12 | |||
13 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import injectSheet from 'react-jss'; | ||
5 | |||
6 | const 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 | ||
25 | class 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 | |||
45 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import injectSheet from 'react-jss'; | ||
5 | import { defineMessages, intlShape } from 'react-intl'; | ||
6 | import { Icon } from '@meetfranz/ui'; | ||
7 | import { mdiArrowRight, mdiWindowClose } from '@mdi/js'; | ||
8 | import classnames from 'classnames'; | ||
9 | |||
10 | import ProgressBar from './ProgressBar'; | ||
11 | |||
12 | const 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 | |||
27 | const 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 | ||
60 | class 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 | |||
135 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import { observer, inject } from 'mobx-react'; | ||
3 | import PropTypes from 'prop-types'; | ||
4 | import ms from 'ms'; | ||
5 | import { intlShape } from 'react-intl'; | ||
6 | |||
7 | import FeaturesStore from '../../../stores/FeaturesStore'; | ||
8 | import UserStore from '../../../stores/UserStore'; | ||
9 | import TrialStatusBar from '../components/TrialStatusBar'; | ||
10 | import ErrorBoundary from '../../../components/util/ErrorBoundary'; | ||
11 | import { trialStatusBarStore } from '..'; | ||
12 | import { i18nPlanName } from '../../../helpers/plan-helpers'; | ||
13 | |||
14 | @inject('stores', 'actions') @observer | ||
15 | class 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 | |||
97 | export default TrialStatusBarScreen; | ||
98 | |||
99 | TrialStatusBarScreen.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 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import TrialStatusBarStore from './store'; | ||
3 | |||
4 | const debug = require('debug')('Franz:feature:trialStatusBar'); | ||
5 | |||
6 | export const GA_CATEGORY_TRIAL_STATUS_BAR = 'trialStatusBar'; | ||
7 | |||
8 | export const trialStatusBarStore = new TrialStatusBarStore(); | ||
9 | |||
10 | export 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 @@ | |||
1 | import { | ||
2 | action, | ||
3 | observable, | ||
4 | computed, | ||
5 | } from 'mobx'; | ||
6 | import moment from 'moment'; | ||
7 | |||
8 | import { trialStatusBarActions } from './actions'; | ||
9 | import { FeatureStore } from '../utils/FeatureStore'; | ||
10 | import { createActionBindings } from '../utils/ActionBinding'; | ||
11 | |||
12 | const debug = require('debug')('Franz:feature:trialStatusBar:store'); | ||
13 | |||
14 | export 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'; | |||
7 | import { Button } from '@meetfranz/forms/lib'; | 7 | import { Button } from '@meetfranz/forms/lib'; |
8 | import ReactTooltip from 'react-tooltip'; | 8 | import ReactTooltip from 'react-tooltip'; |
9 | 9 | ||
10 | import { mdiPlusBox, mdiSettings } from '@mdi/js'; | 10 | import { mdiPlusBox, mdiSettings, mdiStar } from '@mdi/js'; |
11 | import WorkspaceDrawerItem from './WorkspaceDrawerItem'; | 11 | import WorkspaceDrawerItem from './WorkspaceDrawerItem'; |
12 | import { workspaceActions } from '../actions'; | 12 | import { workspaceActions } from '../actions'; |
13 | import { workspaceStore } from '../index'; | 13 | import { 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'; | |||
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | import { Infobox, Badge } from '@meetfranz/ui'; | 6 | import { Infobox, Badge } from '@meetfranz/ui'; |
7 | 7 | ||
8 | import { mdiCheckboxMarkedCircleOutline } from '@mdi/js'; | ||
8 | import Loader from '../../../components/ui/Loader'; | 9 | import Loader from '../../../components/ui/Loader'; |
9 | import WorkspaceItem from './WorkspaceItem'; | 10 | import WorkspaceItem from './WorkspaceItem'; |
10 | import CreateWorkspaceForm from './CreateWorkspaceForm'; | 11 | import 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'; | |||
4 | const messages = defineMessages({ | 4 | const 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'; | |||
9 | import path from 'path'; | 9 | import path from 'path'; |
10 | import windowStateKeeper from 'electron-window-state'; | 10 | import windowStateKeeper from 'electron-window-state'; |
11 | 11 | ||
12 | // Set app directory before loading user modules | 12 | if (process.platform === 'win32') { |
13 | if (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 | |||
18 | if (isDevMode) { | 17 | if (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 | ||
72 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); | ||
73 | const proxySettings = new Settings('proxy'); | ||
74 | |||
75 | // add `liftSingleInstanceLock` to settings.json to override the single instance lock | ||
76 | const liftSingleInstanceLock = settings.get('liftSingleInstanceLock') || false; | ||
77 | |||
72 | // Force single window | 78 | // Force single window |
73 | const gotTheLock = app.requestSingleInstanceLock(); | 79 | const gotTheLock = liftSingleInstanceLock ? true : app.requestSingleInstanceLock(); |
74 | if (!gotTheLock) { | 80 | if (!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 | ||
121 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); | ||
122 | const proxySettings = new Settings('proxy'); | ||
123 | |||
124 | // Disable GPU acceleration | 126 | // Disable GPU acceleration |
125 | if (!settings.get('enableGPUAcceleration')) { | 127 | if (!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 | ||
27 | const debug = require('debug')('Ferdi:AppStore'); | 27 | const debug = require('debug')('Ferdi:AppStore'); |
28 | 28 | ||
29 | const { app, systemPreferences, screen } = remote; | 29 | const { |
30 | app, systemPreferences, screen, powerMonitor, | ||
31 | } = remote; | ||
30 | 32 | ||
31 | const mainWindow = remote.getCurrentWindow(); | 33 | const mainWindow = remote.getCurrentWindow(); |
32 | 34 | ||
@@ -35,6 +37,8 @@ const autoLauncher = new AutoLaunch({ | |||
35 | name: 'Ferdi', | 37 | name: 'Ferdi', |
36 | }); | 38 | }); |
37 | 39 | ||
40 | const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions'; | ||
41 | |||
38 | export default class AppStore extends Store { | 42 | export 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'; | |||
21 | import communityRecipes from '../features/communityRecipes'; | 21 | import communityRecipes from '../features/communityRecipes'; |
22 | import todos from '../features/todos'; | 22 | import todos from '../features/todos'; |
23 | import accentColor from '../features/accentColor'; | 23 | import accentColor from '../features/accentColor'; |
24 | import planSelection from '../features/planSelection'; | ||
25 | import trialStatusBar from '../features/trialStatusBar'; | ||
24 | 26 | ||
25 | import { DEFAULT_FEATURES_CONFIG } from '../config'; | 27 | import { 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 @@ | |||
1 | import { action, observable, computed } from 'mobx'; | 1 | import { action, observable, computed } from 'mobx'; |
2 | import { remote } from 'electron'; | ||
2 | 3 | ||
3 | import Store from './lib/Store'; | 4 | import Store from './lib/Store'; |
4 | import CachedRequest from './lib/CachedRequest'; | 5 | import CachedRequest from './lib/CachedRequest'; |
5 | import Request from './lib/Request'; | 6 | import Request from './lib/Request'; |
6 | 7 | ||
8 | const { BrowserWindow } = remote; | ||
9 | |||
7 | export default class PaymentStore extends Store { | 10 | export 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 @@ | |||
1 | import { shell } from 'electron'; | 1 | import { shell, remote } from 'electron'; |
2 | import { | 2 | import { |
3 | action, | 3 | action, |
4 | reaction, | 4 | reaction, |
@@ -23,6 +23,8 @@ import { KEEP_WS_LOADED_USID } from '../config'; | |||
23 | 23 | ||
24 | const debug = require('debug')('Ferdi:ServiceStore'); | 24 | const debug = require('debug')('Ferdi:ServiceStore'); |
25 | 25 | ||
26 | const { app } = remote; | ||
27 | |||
26 | export default class ServicesStore extends Store { | 28 | export 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'; | |||
15 | import { serviceLimitStore } from '../features/serviceLimit'; | 15 | import { serviceLimitStore } from '../features/serviceLimit'; |
16 | import { communityRecipesStore } from '../features/communityRecipes'; | 16 | import { communityRecipesStore } from '../features/communityRecipes'; |
17 | import { todosStore } from '../features/todos'; | 17 | import { todosStore } from '../features/todos'; |
18 | import { planSelectionStore } from '../features/planSelection'; | ||
18 | 19 | ||
19 | export default (api, actions, router) => { | 20 | export 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 | ||
2 | const { ipcRenderer } = require('electron'); | 1 | const { ipcRenderer } = require('electron'); |
3 | const fs = require('fs-extra'); | 2 | const fs = require('fs-extra'); |
4 | 3 | ||
4 | const debug = require('debug')('Franz:Plugin:RecipeWebview'); | ||
5 | |||
5 | class RecipeWebview { | 6 | class 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 | ||
248 | if (isDevMode) { | 250 | if (isDevMode) { |