aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.all-contributorsrc135
-rw-r--r--.github/FEATURE_PROPOSAL_TEMPLATE.md2
-rw-r--r--.github/FUNDING.yml3
-rw-r--r--.github/ISSUE_TEMPLATE.md4
-rw-r--r--.travis.yml61
-rw-r--r--.vscode/launch.json12
-rw-r--r--CHANGELOG.md63
-rw-r--r--CODE_OF_CONDUCT.md4
-rw-r--r--CONTRIBUTING.md8
-rw-r--r--README.md88
-rw-r--r--appveyor.yml13
-rw-r--r--branding/README.md13
-rw-r--r--branding/beard.pngbin0 -> 19806 bytes
-rw-r--r--branding/gradient.pngbin0 -> 582221 bytes
-rw-r--r--branding/logo.pngbin0 -> 122554 bytes
-rw-r--r--branding/logo.psdbin0 -> 806654 bytes
-rw-r--r--build-helpers/images/dmgInstaller.tiffbin34272 -> 111748 bytes
-rw-r--r--build-helpers/images/icon.icnsbin1057357 -> 214073 bytes
-rw-r--r--build-helpers/images/icon.icobin325490 -> 20327 bytes
-rw-r--r--build-helpers/images/icon.pngbin126364 -> 110275 bytes
-rw-r--r--build-helpers/images/icons/1024x1024.pngbin126364 -> 126795 bytes
-rw-r--r--build-helpers/images/icons/128x128.pngbin5538 -> 10996 bytes
-rw-r--r--build-helpers/images/icons/16x16.pngbin682 -> 2268 bytes
-rw-r--r--build-helpers/images/icons/24x24.pngbin1143 -> 2781 bytes
-rw-r--r--build-helpers/images/icons/256x256.pngbin13267 -> 22431 bytes
-rw-r--r--build-helpers/images/icons/32x32.pngbin1526 -> 3348 bytes
-rw-r--r--build-helpers/images/icons/48x48.pngbin2262 -> 4542 bytes
-rw-r--r--build-helpers/images/icons/512x512.pngbin38356 -> 50954 bytes
-rw-r--r--build-helpers/images/icons/64x64.pngbin2885 -> 5654 bytes
-rw-r--r--build-helpers/images/icons/96x96.pngbin4422 -> 8276 bytes
-rw-r--r--build-helpers/images/win-app-ico.icobin32038 -> 4286 bytes
-rw-r--r--build-helpers/images/win-installer-loading-splash.gifbin36630 -> 221086 bytes
-rw-r--r--docs/example-feature/api.js2
-rw-r--r--docs/example-feature/index.js2
-rw-r--r--docs/example-feature/store.js2
-rw-r--r--electron-builder.yml10
-rw-r--r--package-lock.json333
-rw-r--r--package.json27
-rw-r--r--packages/forms/package.json4
-rw-r--r--packages/forms/src/button/index.tsx4
-rw-r--r--packages/theme/package.json2
-rw-r--r--packages/theme/src/themes/default/index.ts2
-rw-r--r--packages/theme/src/themes/legacy/index.ts2
-rw-r--r--packages/ui/package.json2
-rw-r--r--screenshots/Ferdi-Todo.pngbin0 -> 319543 bytes
-rw-r--r--src/I18n.js4
-rw-r--r--src/api/apiBase.js32
-rw-r--r--src/api/server/LocalApi.js2
-rw-r--r--src/api/server/ServerApi.js57
-rw-r--r--src/app.js13
-rw-r--r--src/assets/images/adlk.svg68
-rw-r--r--src/assets/images/logo.svg39
-rw-r--r--src/assets/images/sm.pngbin751417 -> 1575061 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-active.pngbin396 -> 1836 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-active@2x.pngbin1291 -> 2528 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-unread-active.pngbin424 -> 1879 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-unread-active@2x.pngbin1359 -> 2634 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-unread.pngbin424 -> 1879 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray-unread@2x.pngbin1359 -> 2634 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray.pngbin396 -> 1836 bytes
-rw-r--r--src/assets/images/tray/darwin-dark/tray@2x.pngbin1291 -> 2528 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-active.pngbin396 -> 1836 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-active@2x.pngbin1291 -> 2528 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-unread-active.pngbin424 -> 1879 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-unread-active@2x.pngbin1359 -> 2634 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-unread.pngbin1264 -> 1817 bytes
-rw-r--r--src/assets/images/tray/darwin/tray-unread@2x.pngbin2026 -> 2457 bytes
-rw-r--r--src/assets/images/tray/darwin/tray.pngbin1230 -> 1781 bytes
-rw-r--r--src/assets/images/tray/darwin/tray@2x.pngbin1545 -> 2375 bytes
-rw-r--r--src/assets/images/tray/linux/tray-unread.pngbin2786 -> 3839 bytes
-rw-r--r--src/assets/images/tray/linux/tray-unread@2x.pngbin6062 -> 6295 bytes
-rw-r--r--src/assets/images/tray/linux/tray.pngbin2847 -> 3753 bytes
-rw-r--r--src/assets/images/tray/linux/tray@2x.pngbin6318 -> 6143 bytes
-rw-r--r--src/assets/images/tray/win32/tray-unread.icobin39006 -> 7387 bytes
-rw-r--r--src/assets/images/tray/win32/tray.icobin33292 -> 4694 bytes
-rw-r--r--src/components/AppUpdateInfoBar.js2
-rw-r--r--src/components/auth/AuthLayout.js4
-rw-r--r--src/components/auth/Import.js4
-rw-r--r--src/components/auth/Locked.js115
-rw-r--r--src/components/auth/Login.js26
-rw-r--r--src/components/auth/Pricing.js2
-rw-r--r--src/components/auth/Signup.js9
-rw-r--r--src/components/auth/Welcome.js15
-rw-r--r--src/components/layout/AppLayout.js24
-rw-r--r--src/components/layout/Sidebar.js137
-rw-r--r--src/components/services/content/ServiceView.js21
-rw-r--r--src/components/services/content/Services.js23
-rw-r--r--src/components/settings/account/AccountDashboard.js2
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js5
-rw-r--r--src/components/settings/services/EditServiceForm.js8
-rw-r--r--src/components/settings/settings/EditSettingsForm.js118
-rw-r--r--src/components/settings/team/TeamDashboard.js4
-rw-r--r--src/components/ui/ActivateTrialButton/index.js19
-rw-r--r--src/components/ui/AppLoader/index.js2
-rw-r--r--src/components/ui/Button.js2
-rw-r--r--src/components/ui/FullscreenLoader/styles.js1
-rw-r--r--src/components/ui/Input.js2
-rw-r--r--src/components/ui/Link.js4
-rw-r--r--src/components/ui/Loader.js2
-rw-r--r--src/components/ui/PremiumFeatureContainer/index.js8
-rw-r--r--src/components/ui/UpgradeButton/index.js7
-rw-r--r--src/config.js12
-rw-r--r--src/containers/auth/LockedScreen.js72
-rw-r--r--src/containers/layout/AppLayoutContainer.js1
-rw-r--r--src/containers/settings/AccountScreen.js9
-rw-r--r--src/containers/settings/EditSettingsScreen.js67
-rw-r--r--src/containers/settings/RecipesScreen.js3
-rw-r--r--src/dev-app-update.yml4
-rw-r--r--src/electron/Settings.js2
-rw-r--r--src/electron/deepLinking.js2
-rw-r--r--src/electron/ipc-api/autoUpdate.js2
-rw-r--r--src/electron/ipc-api/download.js2
-rw-r--r--src/environment.js3
-rw-r--r--src/features/announcements/api.js6
-rw-r--r--src/features/announcements/components/AnnouncementScreen.js7
-rw-r--r--src/features/announcements/index.js2
-rw-r--r--src/features/announcements/store.js6
-rw-r--r--src/features/basicAuth/index.js4
-rw-r--r--src/features/basicAuth/mainIpcHandler.js2
-rw-r--r--src/features/communityRecipes/index.js2
-rw-r--r--src/features/communityRecipes/store.js2
-rw-r--r--src/features/delayApp/Component.js9
-rw-r--r--src/features/delayApp/index.js7
-rw-r--r--src/features/serviceLimit/components/LimitReachedInfobox.js3
-rw-r--r--src/features/serviceLimit/index.js2
-rw-r--r--src/features/serviceLimit/store.js9
-rw-r--r--src/features/serviceProxy/index.js14
-rwxr-xr-xsrc/features/settingsWS/index.js2
-rwxr-xr-xsrc/features/settingsWS/store.js2
-rw-r--r--src/features/shareFranz/Component.js14
-rw-r--r--src/features/shareFranz/index.js14
-rw-r--r--src/features/spellchecker/index.js20
-rw-r--r--src/features/todos/components/TodosWebview.js12
-rw-r--r--src/features/todos/containers/TodosScreen.js2
-rw-r--r--src/features/todos/index.js2
-rw-r--r--src/features/todos/preload.js2
-rw-r--r--src/features/todos/store.js2
-rw-r--r--src/features/workspaces/api.js12
-rw-r--r--src/features/workspaces/components/CreateWorkspaceForm.js4
-rw-r--r--src/features/workspaces/components/EditWorkspaceForm.js28
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js9
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js2
-rw-r--r--src/features/workspaces/containers/EditWorkspaceScreen.js4
-rw-r--r--src/features/workspaces/index.js2
-rw-r--r--src/features/workspaces/models/Workspace.js14
-rw-r--r--src/features/workspaces/store.js23
-rw-r--r--src/helpers/recipe-helpers.js2
-rw-r--r--src/helpers/service-helpers.js2
-rw-r--r--src/helpers/url-helpers.js2
-rw-r--r--src/helpers/validation-helpers.js10
-rw-r--r--src/i18n/globalMessages.js2
-rw-r--r--src/i18n/locales/ca.json54
-rw-r--r--src/i18n/locales/cs.json48
-rw-r--r--src/i18n/locales/de.json54
-rw-r--r--src/i18n/locales/defaultMessages.json953
-rw-r--r--src/i18n/locales/el.json54
-rw-r--r--src/i18n/locales/en-US.json150
-rw-r--r--src/i18n/locales/fr.json52
-rw-r--r--src/i18n/locales/ga.json60
-rw-r--r--src/i18n/locales/hr.json30
-rw-r--r--src/i18n/locales/hu.json48
-rw-r--r--src/i18n/locales/id.json42
-rw-r--r--src/i18n/locales/ja.json30
-rw-r--r--src/i18n/locales/ka.json32
-rw-r--r--src/i18n/locales/nb-NO.json44
-rw-r--r--src/i18n/locales/nl-BE.json52
-rw-r--r--src/i18n/locales/nl.json20
-rw-r--r--src/i18n/locales/pt.json48
-rw-r--r--src/i18n/locales/ru.json50
-rw-r--r--src/i18n/locales/sk.json30
-rw-r--r--src/i18n/locales/sr.json24
-rw-r--r--src/i18n/locales/tr.json28
-rw-r--r--src/i18n/locales/ua.json38
-rw-r--r--src/i18n/locales/uk.json38
-rw-r--r--src/i18n/locales/zh-Hant.json24
-rw-r--r--src/i18n/locales/zh-TW.json32
-rw-r--r--src/i18n/messages/src/components/AppUpdateInfoBar.json2
-rw-r--r--src/i18n/messages/src/components/auth/Import.json4
-rw-r--r--src/i18n/messages/src/components/auth/Locked.json67
-rw-r--r--src/i18n/messages/src/components/auth/Login.json42
-rw-r--r--src/i18n/messages/src/components/auth/Pricing.json2
-rw-r--r--src/i18n/messages/src/components/auth/Signup.json2
-rw-r--r--src/i18n/messages/src/components/layout/AppLayout.json23
-rw-r--r--src/i18n/messages/src/components/layout/Sidebar.json13
-rw-r--r--src/i18n/messages/src/components/services/content/Services.json28
-rw-r--r--src/i18n/messages/src/components/settings/account/AccountDashboard.json2
-rw-r--r--src/i18n/messages/src/components/settings/services/EditServiceForm.json6
-rw-r--r--src/i18n/messages/src/components/settings/settings/EditSettingsForm.json130
-rw-r--r--src/i18n/messages/src/components/settings/team/TeamDashboard.json4
-rw-r--r--src/i18n/messages/src/components/ui/ActivateTrialButton/index.json28
-rw-r--r--src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json4
-rw-r--r--src/i18n/messages/src/components/ui/UpgradeButton/index.json4
-rw-r--r--src/i18n/messages/src/containers/settings/EditSettingsScreen.json129
-rw-r--r--src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json6
-rw-r--r--src/i18n/messages/src/features/delayApp/Component.json22
-rw-r--r--src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json8
-rw-r--r--src/i18n/messages/src/features/shareFranz/Component.json32
-rw-r--r--src/i18n/messages/src/features/todos/components/TodosWebview.json12
-rw-r--r--src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json8
-rw-r--r--src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json54
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json32
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json2
-rw-r--r--src/i18n/messages/src/i18n/globalMessages.json2
-rw-r--r--src/i18n/messages/src/lib/Menu.json304
-rw-r--r--src/index.html2
-rw-r--r--src/index.js20
-rw-r--r--src/lib/Menu.js111
-rw-r--r--src/lib/Tray.js6
-rw-r--r--src/lib/analytics.js55
-rw-r--r--src/models/Recipe.js2
-rw-r--r--src/models/Service.js8
-rw-r--r--src/models/User.js6
-rw-r--r--src/stores/AppStore.js24
-rw-r--r--src/stores/GlobalErrorStore.js5
-rw-r--r--src/stores/PaymentStore.js3
-rw-r--r--src/stores/RecipePreviewsStore.js10
-rw-r--r--src/stores/RecipesStore.js2
-rw-r--r--src/stores/RequestStore.js2
-rw-r--r--src/stores/ServicesStore.js72
-rw-r--r--src/stores/SettingsStore.js43
-rw-r--r--src/stores/UserStore.js39
-rw-r--r--src/styles/auth.scss2
-rw-r--r--src/styles/colors.scss1
-rw-r--r--src/theme/default/legacy.js2
-rw-r--r--src/webview/contextMenu.js2
-rw-r--r--src/webview/darkmode.js2
-rw-r--r--src/webview/notifications.js2
-rw-r--r--src/webview/recipe.js2
-rw-r--r--src/webview/spellchecker.js2
-rw-r--r--uidev/src/stories/infobox.stories.tsx2
230 files changed, 3502 insertions, 1953 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 000000000..4e252f7df
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,135 @@
1{
2 "projectName": "ferdi",
3 "projectOwner": "kytwb",
4 "repoType": "github",
5 "repoHost": "https://github.com",
6 "files": [
7 "README.md"
8 ],
9 "imageSize": 100,
10 "commit": true,
11 "commitConvention": "none",
12 "contributors": [
13 {
14 "login": "vantezzen",
15 "name": "Bennett",
16 "avatar_url": "https://avatars2.githubusercontent.com/u/10333196?v=4",
17 "profile": "https://vantezzen.io",
18 "contributions": [
19 "code",
20 "design",
21 "doc",
22 "ideas",
23 "translation"
24 ]
25 },
26 {
27 "login": "adlk",
28 "name": "Stefan Malzner",
29 "avatar_url": "https://avatars1.githubusercontent.com/u/3265004?v=4",
30 "profile": "http://www.adlk.io",
31 "contributions": [
32 "code",
33 "content",
34 "design",
35 "doc",
36 "ideas",
37 "infra",
38 "projectManagement",
39 "test",
40 "translation"
41 ]
42 },
43 {
44 "login": "kytwb",
45 "name": "Amine Mouafik",
46 "avatar_url": "https://avatars0.githubusercontent.com/u/412895?v=4",
47 "profile": "https://twitter.com/kytwb",
48 "contributions": [
49 "question",
50 "code",
51 "doc",
52 "ideas",
53 "maintenance",
54 "platform",
55 "projectManagement",
56 "review"
57 ]
58 },
59 {
60 "login": "ZeroCool940711",
61 "name": "ZeroCool",
62 "avatar_url": "https://avatars3.githubusercontent.com/u/5977640?v=4",
63 "profile": "http://seriesgt.com",
64 "contributions": [
65 "code",
66 "ideas"
67 ]
68 },
69 {
70 "login": "rseitbekov",
71 "name": "rseitbekov",
72 "avatar_url": "https://avatars2.githubusercontent.com/u/35684439?v=4",
73 "profile": "https://github.com/rseitbekov",
74 "contributions": [
75 "code"
76 ]
77 },
78 {
79 "login": "bittner",
80 "name": "Peter Bittner",
81 "avatar_url": "https://avatars2.githubusercontent.com/u/665072?v=4",
82 "profile": "https://djangogigs.com/developers/peter-bittner/",
83 "contributions": [
84 "ideas"
85 ]
86 },
87 {
88 "login": "justus-saul",
89 "name": "Justus Saul",
90 "avatar_url": "https://avatars1.githubusercontent.com/u/5861826?v=4",
91 "profile": "https://github.com/justus-saul",
92 "contributions": [
93 "bug",
94 "ideas"
95 ]
96 },
97 {
98 "login": "igreil",
99 "name": "igreil",
100 "avatar_url": "https://avatars0.githubusercontent.com/u/17239151?v=4",
101 "profile": "https://github.com/igreil",
102 "contributions": [
103 "ideas"
104 ]
105 },
106 {
107 "login": "marcolopes",
108 "name": "Marco Lopes",
109 "avatar_url": "https://avatars1.githubusercontent.com/u/431889?v=4",
110 "profile": "http://marcolopes.eu",
111 "contributions": [
112 "ideas"
113 ]
114 },
115 {
116 "login": "dayzlun",
117 "name": "dayzlun",
118 "avatar_url": "https://avatars3.githubusercontent.com/u/17259690?v=4",
119 "profile": "https://github.com/dayzlun",
120 "contributions": [
121 "bug"
122 ]
123 },
124 {
125 "login": "tobigue",
126 "name": "Tobias Günther",
127 "avatar_url": "https://avatars2.githubusercontent.com/u/1560152?v=4",
128 "profile": "https://twitter.com/tobigue_",
129 "contributions": [
130 "ideas"
131 ]
132 }
133 ],
134 "contributorsPerLine": 7
135}
diff --git a/.github/FEATURE_PROPOSAL_TEMPLATE.md b/.github/FEATURE_PROPOSAL_TEMPLATE.md
index 164844c54..e8cdd41ed 100644
--- a/.github/FEATURE_PROPOSAL_TEMPLATE.md
+++ b/.github/FEATURE_PROPOSAL_TEMPLATE.md
@@ -6,7 +6,7 @@
6### Motivation and Context 6### Motivation and Context
7<!--- 7<!---
8* Why is this change required? 8* Why is this change required?
9* How is this improving the Franz experience? 9* How is this improving the Ferdi experience?
10* What problem does it solve? 10* What problem does it solve?
11--> 11-->
12 12
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..ea93748ed
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,3 @@
1# These are supported funding model platforms
2
3github: [adlk, vantezzen, kytwb]
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 9cb983771..c0ce853ae 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,6 +1,6 @@
1<!--- Provide a general summary of the issue in the Title above --> 1<!--- Provide a general summary of the issue in the Title above -->
2 2
3<!-- This repository is only for the Franz client. Please use this form ( https://bitly.com/franz-service-request ) for service requests or check out the guide ( https://github.com/meetfranz/plugins ) to create your own service integration. --> 3<!-- This repository is only for the Ferdi client. Please use this form ( https://bitly.com/franz-service-request ) for service requests or check out the guide ( https://github.com/meetfranz/plugins ) to create your own service integration. -->
4 4
5<!--- If you want to propose a feature, use this template: https://raw.githubusercontent.com/meetfranz/franz/master/.github/FEATURE_PROPOSAL_TEMPLATE.md --> 5<!--- If you want to propose a feature, use this template: https://raw.githubusercontent.com/meetfranz/franz/master/.github/FEATURE_PROPOSAL_TEMPLATE.md -->
6 6
@@ -32,5 +32,5 @@
32 32
33### Your Environment 33### Your Environment
34<!--- Include as many relevant details about the environment you experienced the bug in --> 34<!--- Include as many relevant details about the environment you experienced the bug in -->
35* Franz Version used: 35* Ferdi Version used:
36* Operating System and version: 36* Operating System and version:
diff --git a/.travis.yml b/.travis.yml
index 23b9fe631..4cc941eff 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,57 +1,46 @@
1matrix: 1matrix:
2 include: 2 include:
3 - os: linux 3 - os: linux
4 dist: xenial 4 dist: xenial
5 addons: 5 addons:
6 apt: 6 apt:
7 packages: 7 packages:
8 - libx11-dev 8 - libx11-dev
9 - libxext-dev 9 - libxext-dev
10 - libxss-dev 10 - libxss-dev
11 - libxkbfile-dev 11 - libxkbfile-dev
12 - os: osx 12 - os: osx
13 osx_image: xcode8.3 13 osx_image: xcode8.3
14
15language: node_js 14language: node_js
16
17install: 15install:
18- echo do nothing 16 - echo do nothing
19
20before_script: 17before_script:
21- npx lerna bootstrap 18 - npx lerna bootstrap
22- npm install node-sass -g 19 - npm install node-sass -g
23
24script: 20script:
25- npm run test 21 - npm run test
26- travis_wait 30 npm run build 22 - travis_wait 30 npm run build
27
28cache: npm 23cache: npm
29
30notifications:
31 email: false
32 slack:
33 secure: GMiD9uhGUNkJbasOMvfUmQx/SKG8wd/MC4IPtiZZnlLkiN6eJQnV3p9OeMaiSCcq19gQ65z898h55PXwFX5pFqmGMQF0zdA3VXlVh7wrUU/Z8cYxCBaZTIOgNwtrteT9V9easV/5BuUGLHVgAFYEhS5tJDu2GU4UKdm6mko4YyxKHdsCsvkRpv+zpFF1a+G2ZUwWHDhTZsBJbx7SW7xzPKYI+vq+bNnbyC6p0kpeTehf29A8CoIgQlDctzk4aOHkj35WHIiKS5yzr/nb8oY/B6vCdfFHCrCkZxQrxPEagyYTfEusWwQRJ4rvwt8dgBO1A3ckO+AC1MEAYRYHgQMI5K86tcQ7/su5iOhu9NDbZ/BfriaTDlrurKMWPhZ/RVnFUT4tn7XVVcMxz6/FYFDYIDSHEn5E20a7qV1ixF7XKoJU6eOfo3qZ7euxiZIbDbHBH+Y2ZmzUGfrQ7DFlefMEM/6Laa0jNGOSvfc6mvk1x63bVTT5KfYEX4ztXnBY77haG4/h5bIHyNDzLsZ5vxXbvmHZb6ToMVn9UT6HS0sZQ/B4bghJbdZuOrPFlz8UNRpwoBS4HpLUndhYCo0ppxd3yCd5gqEhIJzEiJNoMq+LA9/iheLbWlJVdjP2WRQ2/m9VCSxnivTdNhnp6lSATiXAgq2WN2LGhTSGtXgqtcYGXhk=
34
35deploy: 24deploy:
36 provider: s3 25 provider: s3
37 access_key_id: AKIAIVRBS4YFL4ZBLCLA 26 access_key_id: AKIAQ5BBD2PS3SMVP3EZ
38 secret_access_key: 27 secret_access_key:
39 secure: LZ38b5DmVisSBfpuPN8IVNCe3C+hJYX88jV+/ifzlB6/h1VUU/w5B3xHNBoOC2P53D2htMtL7K1/JLxzKGmUsnOJe5boF0QmBPTXUVosurxwMPEuLotQucgqcOoFnJkq+BUziBy+uWsZnk6ECbI5hFHQJAM9iNjOcgrfK08NLYvtdwYKYXwhwSrN4dxBKkfRINgAqHCp6bMuH2Imgy9iM+Iy5ydMPUsKDRHj1ByJrhcb1nJTjWImH08IU970fEl0P2+bCV6nUTzc9x9mwaJAF6uaH9L44lLptHIhGgqAZGzwQ7z6ANJj3CJRWFbqW2/9/0+4YKhyBbE9TPIvWIXmVeoPm0nWLDfVDN2RwTGtv+oSgPS+UhcFTVanekKfrzMTVdi1jQ8LIL7Ur3DcXNhwTPuc7PjLPPuwTS2AQRkPMyyWLRAz40/YUepASRdqoVMYI+CZiwu2AZIoUr1HO1eXj/0rqC8t/mhUSOXTxNGRCP9SQTJ/FSaI5dZh3oY7bkz7uxDNbPvChcs7hPFqqhPUFIkX36DaDqjze6IqtZ6pDz7XTqzUET/Jgny9vGBypvGj5fJpYZJytqEs0SsPGQGaxSmAWjcPWQX56Tr98iwVvzAJ0hl7lJHVaEzuxoYmD0ijg2zysoZ7GPBXJg2n9W+QaS0KVuda1r+sQ6C2wY8yvi8= 28 secure: E57KoS2chEeYbW3LNXDpXIUAHWRV0IXSu6QxondJqXTK+Nh486+RaOx2Ln8xwjsN57rgE1nJkRrWzOzTGXjU1AEWWk4BLXeKrd/1nAK0akw7BYB7+IOPX15+n+PxO057oHyhzpf36iPhmXc3xz6mI8qvF6g5XIHGlTTs/+W6Va+OuhlXlotT5i4bRhsszpn7Mjd0fc5pVergFTu279eQtPkKEGfAyX1pAZJ5OObbsUckpFYTw2UG26qvAGZhzN6NdzNItKjDLzTw6WN1AJ6PZUu78xQRCbHJ0D+2BZSw+yvVx4UxC+ifJuouyzSlsRgRoOI4zNHDzOqDbiZ0gxbq7Eh0M+mFqMMq9U4FTZw7EjUuF3+929fLiyrdC+MD5+S98O3xZMdNl8C1rBUunWo/0nLMLROElZ/Zq9C7+Hfzz3HsN6+YHcvkKCBibHUmQB970090NspVy4fFCjze3XyJGDVgYMSB7dJ+zjawkZ3irEsA9g1h9V9GXiwHQ5Anuek1PtLHlwfNg9rOZDJQyaaZ96D6F1jYPw+JSDhiSvQgjeLbCPVdkp/UPWu8Aiks6p9oqMheKmd6J647H+/wrjU2GDbZiBOv0bSlPnaoBnapM3yVUSX8nkfVBpbewvIC+U9duzq7rZTVEwRWS3AIh1Z6aLYpGss9iZHE7vxJUKWVpyk=
40 bucket: franz-travis 29 bucket: ferdi-travis
41 region: eu-central-1 30 region: ap-southeast-1
42 local_dir: out 31 local_dir: out
43 upload-dir: "$TRAVIS_BUILD_NUMBER" 32 upload-dir: "$TRAVIS_BUILD_NUMBER"
44 skip_cleanup: true 33 skip_cleanup: true
45 acl: public_read 34 acl: public_read
46 on: 35 on:
47 all_branches: true 36 tags: true
48 37
49env: 38env:
50 global: 39 global:
51 - secure: fddJzSmNYVX024jnhnFXEuAK1spEYi3y3RZdWaBtjQnzoObAxkcRW263JNpXQy+b7egnp2hSy8FvlQU+L967911F5Y70Pe3An4oI72hnS3DL4Njp2Dw5PwviwMA+X2ddWhzK4+k/JU6r8jBv1FGQ6ZjwSeaO/t8UKOsE8wDBFLRhnHqoR7QbM7zmKjzh/1oofunGbHsPOHmN4f7jBwSuSFTZltEENcQg3ZP++0NHU8UJdlpfqZOkro8v4AJMngAHeHlNtjwaAHdVv+6+kkwc4E/0Cy6YNyyBkbzipyngNY3GwnwzmNzvsfICD1TGklksjBlMQq7ld7eCiaYRNvyHVEmXJ17qlq7HhxkYgNy32hPRwb5Cv6o4M4tv8qS8UUk4W1RvBJ5fcmfZGQwGXPyQ/m85RJtrNfbYtr84jYcprTnSeji/9PuZv0f87dxELYm3DYmNUa1cgJqEdLUsEd0bMwUYNLnCSfu4ea2zxwir6LSBtJJCbGKxX87s5IOTrHkrWDe+PWd52v+UjQks7MBRlJnntTWo69Yy+ayXV1TnGVOHA5znHvPOvFlAF+y8tLGd4AGvehK1SAkf0+idmc9Q9xKk0QypT3ibjJui4D50p7sSajkzz3P2pUqOS/9HmjMfPMPN+Nl+48GU0CvB2aBGhdmp9vu54VaFzUaAGNGj4WI= 40 - secure: fddJzSmNYVX024jnhnFXEuAK1spEYi3y3RZdWaBtjQnzoObAxkcRW263JNpXQy+b7egnp2hSy8FvlQU+L967911F5Y70Pe3An4oI72hnS3DL4Njp2Dw5PwviwMA+X2ddWhzK4+k/JU6r8jBv1FGQ6ZjwSeaO/t8UKOsE8wDBFLRhnHqoR7QbM7zmKjzh/1oofunGbHsPOHmN4f7jBwSuSFTZltEENcQg3ZP++0NHU8UJdlpfqZOkro8v4AJMngAHeHlNtjwaAHdVv+6+kkwc4E/0Cy6YNyyBkbzipyngNY3GwnwzmNzvsfICD1TGklksjBlMQq7ld7eCiaYRNvyHVEmXJ17qlq7HhxkYgNy32hPRwb5Cv6o4M4tv8qS8UUk4W1RvBJ5fcmfZGQwGXPyQ/m85RJtrNfbYtr84jYcprTnSeji/9PuZv0f87dxELYm3DYmNUa1cgJqEdLUsEd0bMwUYNLnCSfu4ea2zxwir6LSBtJJCbGKxX87s5IOTrHkrWDe+PWd52v+UjQks7MBRlJnntTWo69Yy+ayXV1TnGVOHA5znHvPOvFlAF+y8tLGd4AGvehK1SAkf0+idmc9Q9xKk0QypT3ibjJui4D50p7sSajkzz3P2pUqOS/9HmjMfPMPN+Nl+48GU0CvB2aBGhdmp9vu54VaFzUaAGNGj4WI=
52 - secure: AjJvKhQ1jIloxogMdtOzJqovPQUBSA0lfHcRsmGdP8HIRKSRi9tKxCCgicTMpMWfvY7qtdexXBbl2/zl6cOhjfTYeAhNwwCg+dw7OVcE8LUn4E+gYZCYIKbNmmkVKsSckQd4h2IcyvqdqLwzjrEzdF95MoUI8WqdLwvQJLkoIaXju6ZT76FslGSUVXk58ZN7p2nr3kW8V7KclIzn/yyyYXE4bjBmS4djuvCReeSfSViCuX5CGT8avBb/IF/M5S7hcQVybmmalysOrranzSx0o9PPUIT9hHqqRpXW6iss2qVj+kCaFiC3ftlApVgizBoGcNAMA8N7hX8kkEjJSpiy7Vswuev9mVN9X94VwVZGyNvdYD8cKKxqTsfFDZDgefnuSYUhymKSBgM4yScYF6IPNJWFWJTugtVeMJ8ivqZhwJuD20nt6x7gGB1FS6m7axxRWeyp7h0FqWU9l6ZfmwHcRziVKNTk9BB4XIqco9M2wjV/YH321IGVwtVR5y6zty10+xk38TthCOidgBurFlMKbFKH5g9K5+84dhsCW0avMlJ0+QkgId0uAVyho+09Wx4cKqXLfobpznkUX+S0Um6G/NbAaUAU+SqBsm+X9CKFsPd/YJoxLdF7eBCG/3Fy4roKg3J4mBYeXe3wVnGft8Eeg0aNpOArMSStMY337UpdV80= 41 - secure: AjJvKhQ1jIloxogMdtOzJqovPQUBSA0lfHcRsmGdP8HIRKSRi9tKxCCgicTMpMWfvY7qtdexXBbl2/zl6cOhjfTYeAhNwwCg+dw7OVcE8LUn4E+gYZCYIKbNmmkVKsSckQd4h2IcyvqdqLwzjrEzdF95MoUI8WqdLwvQJLkoIaXju6ZT76FslGSUVXk58ZN7p2nr3kW8V7KclIzn/yyyYXE4bjBmS4djuvCReeSfSViCuX5CGT8avBb/IF/M5S7hcQVybmmalysOrranzSx0o9PPUIT9hHqqRpXW6iss2qVj+kCaFiC3ftlApVgizBoGcNAMA8N7hX8kkEjJSpiy7Vswuev9mVN9X94VwVZGyNvdYD8cKKxqTsfFDZDgefnuSYUhymKSBgM4yScYF6IPNJWFWJTugtVeMJ8ivqZhwJuD20nt6x7gGB1FS6m7axxRWeyp7h0FqWU9l6ZfmwHcRziVKNTk9BB4XIqco9M2wjV/YH321IGVwtVR5y6zty10+xk38TthCOidgBurFlMKbFKH5g9K5+84dhsCW0avMlJ0+QkgId0uAVyho+09Wx4cKqXLfobpznkUX+S0Um6G/NbAaUAU+SqBsm+X9CKFsPd/YJoxLdF7eBCG/3Fy4roKg3J4mBYeXe3wVnGft8Eeg0aNpOArMSStMY337UpdV80=
53 - secure: WNQBUyNvjTwMFm6pPzNXZYRvgLCTgEm93vLX/0amtr6gT6N8ZsTLL5+Ht3+v51MUOsjEe6tCM4cLSh4wSuwWcSEsUjK0jiqknlpgKKl6xLeo+1t8u6BKSgTpipWqrSD24TbvMrFUyeQrqCGRdZc3Ax/F1ERD81SXcsrg2evCL8g8zsYjxSMXc44drKrvYi68s/5ALrI+oH3t2PYsGuuP1ipj5CbaizUHEa5d8TukHRl96lxoEKCQ4Sa8UXRPNQsdb3TdkVmIEPIoioWU6AMPweBWR6Ky994aKwp0wWn1adWP49v8skMYWbirENniSxShtztF/NYqPQFyoyh0WD/C/ZJPh04HlMxnmQPUROq+LxBFz8WBY1eHDmz6GxH1lDYzneTtlRa5K8izvs2+ROhpVmmKeOgWHaL1ZRMy8Cn3V88kadF7i1K9NnqB6ZPyynJJctj7o0af6Os9/ZPqWfqIOWWeXgfXVzj17xJADfh6Z9epW95hdKZjnIf9IqGAI8aYTqhVL8DKTJ+PSGhJIOEX+ERm+0U9gMlwllwjHCDhBe42zCGuLaWZ239yD1eacM0Ko7yUM+xobiiF0FlB8VI/nBOpGdeUKNLeUfikLHILWd04AVRCNaQU67GMOHekfWdGR8tEh9I/5Y6GJR0IQL5eGmDUjSN0u/Ovss4jSEBOaXo= 42 - secure: WNQBUyNvjTwMFm6pPzNXZYRvgLCTgEm93vLX/0amtr6gT6N8ZsTLL5+Ht3+v51MUOsjEe6tCM4cLSh4wSuwWcSEsUjK0jiqknlpgKKl6xLeo+1t8u6BKSgTpipWqrSD24TbvMrFUyeQrqCGRdZc3Ax/F1ERD81SXcsrg2evCL8g8zsYjxSMXc44drKrvYi68s/5ALrI+oH3t2PYsGuuP1ipj5CbaizUHEa5d8TukHRl96lxoEKCQ4Sa8UXRPNQsdb3TdkVmIEPIoioWU6AMPweBWR6Ky994aKwp0wWn1adWP49v8skMYWbirENniSxShtztF/NYqPQFyoyh0WD/C/ZJPh04HlMxnmQPUROq+LxBFz8WBY1eHDmz6GxH1lDYzneTtlRa5K8izvs2+ROhpVmmKeOgWHaL1ZRMy8Cn3V88kadF7i1K9NnqB6ZPyynJJctj7o0af6Os9/ZPqWfqIOWWeXgfXVzj17xJADfh6Z9epW95hdKZjnIf9IqGAI8aYTqhVL8DKTJ+PSGhJIOEX+ERm+0U9gMlwllwjHCDhBe42zCGuLaWZ239yD1eacM0Ko7yUM+xobiiF0FlB8VI/nBOpGdeUKNLeUfikLHILWd04AVRCNaQU67GMOHekfWdGR8tEh9I/5Y6GJR0IQL5eGmDUjSN0u/Ovss4jSEBOaXo=
54 43
55branches: 44branches:
56 except: 45 except:
57 - i18n 46 - i18n
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 17d506895..f6c7458bf 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -4,7 +4,7 @@
4 { 4 {
5 "type": "node", 5 "type": "node",
6 "request": "launch", 6 "request": "launch",
7 "name": "Franz - Test API", 7 "name": "Ferdi - Test API",
8 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 8 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
9 "program": "${workspaceFolder}/build/index.js", 9 "program": "${workspaceFolder}/build/index.js",
10 "protocol": "inspector", 10 "protocol": "inspector",
@@ -16,7 +16,7 @@
16 { 16 {
17 "type": "node", 17 "type": "node",
18 "request": "launch", 18 "request": "launch",
19 "name": "Franz – Live API", 19 "name": "Ferdi – Live API",
20 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 20 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
21 "program": "${workspaceFolder}/build/index.js", 21 "program": "${workspaceFolder}/build/index.js",
22 "protocol": "inspector", 22 "protocol": "inspector",
@@ -28,7 +28,7 @@
28 { 28 {
29 "type": "node", 29 "type": "node",
30 "request": "launch", 30 "request": "launch",
31 "name": "Franz – Local API", 31 "name": "Ferdi – Local API",
32 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 32 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
33 "program": "${workspaceFolder}/build/index.js", 33 "program": "${workspaceFolder}/build/index.js",
34 "protocol": "inspector", 34 "protocol": "inspector",
@@ -40,7 +40,7 @@
40 { 40 {
41 "type": "node", 41 "type": "node",
42 "request": "launch", 42 "request": "launch",
43 "name": "(Win Sim) Franz - Test API", 43 "name": "(Win Sim) Ferdi - Test API",
44 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 44 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
45 "program": "${workspaceFolder}/build/index.js", 45 "program": "${workspaceFolder}/build/index.js",
46 "protocol": "inspector", 46 "protocol": "inspector",
@@ -53,7 +53,7 @@
53 { 53 {
54 "type": "node", 54 "type": "node",
55 "request": "launch", 55 "request": "launch",
56 "name": "(Win Sim) Franz – Live API", 56 "name": "(Win Sim) Ferdi – Live API",
57 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 57 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
58 "program": "${workspaceFolder}/build/index.js", 58 "program": "${workspaceFolder}/build/index.js",
59 "protocol": "inspector", 59 "protocol": "inspector",
@@ -66,7 +66,7 @@
66 { 66 {
67 "type": "node", 67 "type": "node",
68 "request": "launch", 68 "request": "launch",
69 "name": "(Win Sim) Franz – Local API", 69 "name": "(Win Sim) Ferdi – Local API",
70 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", 70 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
71 "program": "${workspaceFolder}/build/index.js", 71 "program": "${workspaceFolder}/build/index.js",
72 "protocol": "inspector", 72 "protocol": "inspector",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0cc0e4f52..7f8cb5729 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,41 +1,32 @@
1# [5.3.3](https://github.com/meetfranz/franz/compare/v5.3.1...v5.3.3) (2019-09-17) 1# [5.3.2](https://github.com/meetfranz/franz/compare/v5.3.1...v5.3.2) (2019-09-13)
2Merged Franz v5.3.2 into Ferdi
2 3
3### Features 4## [5.3.1](https://github.com/kytwb/ferdi/compare/v5.3.0...v5.3.1) (2019-09-09)
4* **Todos:** Highlight Franz Todos icon in sidebar when the Franz Todos panel is opened ([7431ba3](https://github.com/meetfranz/franz/commit/7431ba3)) 5Merge Franz v5.3.1 into Ferdi.
5 6
7- Enable todos for all users
8- Fix WhatsApp recipe not working (#19 and #21)
6 9
7### Bug Fixes 10### Bug Fixes
8 11
9* **Spellchecker:** Fix disabling spellchecker after app start ([4035043](https://github.com/meetfranz/franz/commit/4035043)) 12* **Windows:** Fix app size in fullscreen ([e210701](https://github.com/kytwb/ferdi/commit/e210701))
10* **Windows:** Fix window menu to get overwritten by Todos menu ([aa33ac7](https://github.com/meetfranz/franz/commit/aa33ac7)) 13* **Windows:** Fix app to be cropped at the bottom on Windows ([42f97b4](https://github.com/kytwb/ferdi/commit/42f97b4))
11
12
13### General
14
15* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
16
17
18# [5.3.2](https://github.com/meetfranz/franz/compare/v5.3.1...v5.3.2) (2019-09-12)
19 14
20 15
21### Features 16### Features
22 17
23* **Todos:** Move Franz Todos to sidebar ([7ffcf8c](https://github.com/meetfranz/franz/commit/7ffcf8c)) 18* **Todos:** Add option to disable todos ([5d03b91](https://github.com/kytwb/ferdi/commit/5d03b91))
24* **Workspaces:** Add setting to keep all services in workspaces in background (avoid reload) ([@Wouter0100](https://github.com/Wouter0100)) ([ddab3a8](https://github.com/meetfranz/franz/commit/ddab3a8))
25
26
27### Bug Fixes
28
29* **Settings:** Don't toggle Franz Todos on general settings changes ([@vantezzen](https://github.com/vantezzen)) ([a99371b](https://github.com/meetfranz/franz/commit/a99371b))
30
31
32### General
33
34* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
35 19
36 20
21## [5.3.0](https://github.com/kytwb/ferdi/compare/v5.2.1-beta.1...v5.3.0) (2019-09-06)
22- Removes pages begging you to donate after registration
23- Makes all users Premium by default
24- [Add option to change server to a custom](https://github.com/kytwb/ferdi#servers) [ferdi-server](https://github.com/vantezzen/ferdi-server)
25- Remove "Franz is better together" popup
26- Makes RocketChat self-hosted generally available
27- Comes with a custom branding proper to Ferdi
37 28
38# [5.3.1](https://github.com/meetfranz/franz/compare/v5.3.0...v5.3.1) (2019-09-06) 29## [5.2.1-beta.1](https://github.com/meetfranz/franz/compare/v5.2.0...v5.2.1-beta.1) (2019-07-30)
39 30
40### Features 31### Features
41 32
@@ -164,7 +155,7 @@
164* **App:** Add security checks for external URLs ([6e5531a](https://github.com/meetfranz/franz/commit/6e5531a)) 155* **App:** Add security checks for external URLs ([6e5531a](https://github.com/meetfranz/franz/commit/6e5531a))
165* **Linux:** Add auto updater for Linux AppImage builds ([d641b4e](https://github.com/meetfranz/franz/commit/d641b4e)) 156* **Linux:** Add auto updater for Linux AppImage builds ([d641b4e](https://github.com/meetfranz/franz/commit/d641b4e))
166* **Spell check:** Add British English as spell check language ([#1306](https://github.com/meetfranz/franz/issues/1306)) ([67fa325](https://github.com/meetfranz/franz/commit/67fa325)) 157* **Spell check:** Add British English as spell check language ([#1306](https://github.com/meetfranz/franz/issues/1306)) ([67fa325](https://github.com/meetfranz/franz/commit/67fa325))
167* **Windows:** Add option to quit Franz from Taskbar icon ([952fc8b](https://github.com/meetfranz/franz/commit/952fc8b)) 158* **Windows:** Add option to quit Ferdi from Taskbar icon ([952fc8b](https://github.com/meetfranz/franz/commit/952fc8b))
168 159
169### Bug Fixes 160### Bug Fixes
170 161
@@ -173,7 +164,7 @@
173* **Service:** Fix service zoom (cmd/ctrl+ & cmd/ctrl-) ([91a0f59](https://github.com/meetfranz/franz/commit/91a0f59)) 164* **Service:** Fix service zoom (cmd/ctrl+ & cmd/ctrl-) ([91a0f59](https://github.com/meetfranz/franz/commit/91a0f59))
174* **Service:** Fix shortcut for (un)muting notifications & audio ([1df3342](https://github.com/meetfranz/franz/commit/1df3342)) 165* **Service:** Fix shortcut for (un)muting notifications & audio ([1df3342](https://github.com/meetfranz/franz/commit/1df3342))
175* **Windows:** Fix copy & paste in service context menus ([e66fcaa](https://github.com/meetfranz/franz/commit/e66fcaa)), closes [#1316](https://github.com/meetfranz/franz/issues/1316) 166* **Windows:** Fix copy & paste in service context menus ([e66fcaa](https://github.com/meetfranz/franz/commit/e66fcaa)), closes [#1316](https://github.com/meetfranz/franz/issues/1316)
176* **Windows:** Fix losing window when "Keep Franz in background" is enabled ([78a3722](https://github.com/meetfranz/franz/commit/78a3722)) 167* **Windows:** Fix losing window when "Keep Ferdi in background" is enabled ([78a3722](https://github.com/meetfranz/franz/commit/78a3722))
177 168
178### General 169### General
179 170
@@ -190,7 +181,7 @@
190### Features 181### Features
191 182
192* **Spellchecker:** Add automatic spellcheck language detection ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171)) 183* **Spellchecker:** Add automatic spellcheck language detection ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171))
193* **Windows:** Add option to quit Franz from Taskbar ([8808601](https://github.com/meetfranz/franz/commit/8808601)) 184* **Windows:** Add option to quit Ferdi from Taskbar ([8808601](https://github.com/meetfranz/franz/commit/8808601))
194 185
195### Bug Fixes 186### Bug Fixes
196 187
@@ -272,7 +263,7 @@
272 263
273### Features 264### Features
274 265
275* **Windows:** Add taskbar action to reset Franz window ([08fa75a](https://github.com/meetfranz/franz/commit/08fa75a)) 266* **Windows:** Add taskbar action to reset Ferdi window ([08fa75a](https://github.com/meetfranz/franz/commit/08fa75a))
276* **Context Menu:** Add "Go Back" and "Go Forward" ([5c18595](https://github.com/meetfranz/franz/commit/5c18595)) 267* **Context Menu:** Add "Go Back" and "Go Forward" ([5c18595](https://github.com/meetfranz/franz/commit/5c18595))
277* **Context Menu:** Add Lookup, Search Google for ([5d5aa0c](https://github.com/meetfranz/franz/commit/5d5aa0c)) 268* **Context Menu:** Add Lookup, Search Google for ([5d5aa0c](https://github.com/meetfranz/franz/commit/5d5aa0c))
278* **App:** Add `--devtools` command line arg to automatically open Dev Tools ([84fc3a0](https://github.com/meetfranz/franz/commit/84fc3a0)) 269* **App:** Add `--devtools` command line arg to automatically open Dev Tools ([84fc3a0](https://github.com/meetfranz/franz/commit/84fc3a0))
@@ -367,7 +358,7 @@
367 358
368* **App:** Fix memory leak in recipe polling loop ([c99848f](https://github.com/meetfranz/franz/commit/c99848f)) 359* **App:** Fix memory leak in recipe polling loop ([c99848f](https://github.com/meetfranz/franz/commit/c99848f))
369* **App:** Fix validation for side-by-side teamId & customURL ([bd51150](https://github.com/meetfranz/franz/commit/bd51150)) 360* **App:** Fix validation for side-by-side teamId & customURL ([bd51150](https://github.com/meetfranz/franz/commit/bd51150))
370* **App:** Reload Franz instead of all services one by one on sleep resume ([4e5f7af](https://github.com/meetfranz/franz/commit/4e5f7af)) 361* **App:** Reload Ferdi instead of all services one by one on sleep resume ([4e5f7af](https://github.com/meetfranz/franz/commit/4e5f7af))
371* **App:** Fix toggle buttons shown during import ([1220e2c](https://github.com/meetfranz/franz/commit/1220e2c)) 362* **App:** Fix toggle buttons shown during import ([1220e2c](https://github.com/meetfranz/franz/commit/1220e2c))
372fix(App): Bugfix Fix memory leak in recipe polling loop 363fix(App): Bugfix Fix memory leak in recipe polling loop
373* **App:** Fix invite screen [object Object] values ([81c4e99](https://github.com/meetfranz/franz/commit/81c4e99)) 364* **App:** Fix invite screen [object Object] values ([81c4e99](https://github.com/meetfranz/franz/commit/81c4e99))
@@ -458,7 +449,7 @@ fix(App): Bugfix Fix memory leak in recipe polling loop
458 449
459### Features 450### Features
460 451
461* **Menu:** Add "About Franz" Menu item to Windows/Linux ([a21b770](https://github.com/meetfranz/franz/commit/a21b770)) 452* **Menu:** Add "About Ferdi" Menu item to Windows/Linux ([a21b770](https://github.com/meetfranz/franz/commit/a21b770))
462* **Menu:** Add menu item to toggle (service) dev tools ([e8da383](https://github.com/meetfranz/franz/commit/e8da383)) 453* **Menu:** Add menu item to toggle (service) dev tools ([e8da383](https://github.com/meetfranz/franz/commit/e8da383))
463* **Translation:** Add italian translation ([ab348cc](https://github.com/meetfranz/franz/commit/ab348cc)) ([dnlup](https://github.com/dnlup)) 454* **Translation:** Add italian translation ([ab348cc](https://github.com/meetfranz/franz/commit/ab348cc)) ([dnlup](https://github.com/dnlup))
464 455
@@ -466,8 +457,8 @@ fix(App): Bugfix Fix memory leak in recipe polling loop
466### Bug Fixes 457### Bug Fixes
467 458
468* **App:** Add checks to service url validation to prevent app freeze ([db8515f](https://github.com/meetfranz/franz/commit/db8515f)) 459* **App:** Add checks to service url validation to prevent app freeze ([db8515f](https://github.com/meetfranz/franz/commit/db8515f))
469* **macOS:** Fix disable launch Franz on start ([34bba09](https://github.com/meetfranz/franz/commit/34bba09)) 460* **macOS:** Fix disable launch Ferdi on start ([34bba09](https://github.com/meetfranz/franz/commit/34bba09))
470* **Windows:** Launch Franz on start when selected ([34bba09](https://github.com/meetfranz/franz/commit/34bba09)) 461* **Windows:** Launch Ferdi on start when selected ([34bba09](https://github.com/meetfranz/franz/commit/34bba09))
471* **Onboarding:** Fix issue with import of on-premise services ([7c7d27d](https://github.com/meetfranz/franz/commit/7c7d27d)) 462* **Onboarding:** Fix issue with import of on-premise services ([7c7d27d](https://github.com/meetfranz/franz/commit/7c7d27d))
472* **Shortcuts:** Flip shortcut to navigate to next/previous service ([37d5923](https://github.com/meetfranz/franz/commit/37d5923)) 463* **Shortcuts:** Flip shortcut to navigate to next/previous service ([37d5923](https://github.com/meetfranz/franz/commit/37d5923))
473* **Windows:** Open Window when app is pinned to taskbar and minimized to system tray ([777814a](https://github.com/meetfranz/franz/commit/777814a)) 464* **Windows:** Open Window when app is pinned to taskbar and minimized to system tray ([777814a](https://github.com/meetfranz/franz/commit/777814a))
@@ -497,10 +488,10 @@ e58f558)) ([GustavoKatel](https://github.com/GustavoKatel))
497 488
498### Bug Fixes 489### Bug Fixes
499 490
500* **App:** Force Franz to use single window ([2ae409e](https://github.com/meetfranz/franz/commit/2ae409e)) 491* **App:** Force Ferdi to use single window ([2ae409e](https://github.com/meetfranz/franz/commit/2ae409e))
501* **Onboarding:** Fix enable/disable service import toggle ([23174f9](https://github.com/meetfranz/franz/commit/23174f9)) 492* **Onboarding:** Fix enable/disable service import toggle ([23174f9](https://github.com/meetfranz/franz/commit/23174f9))
502* **Onboarding:** Fix service import ([99d1c01](https://github.com/meetfranz/franz/commit/99d1c01)) 493* **Onboarding:** Fix service import ([99d1c01](https://github.com/meetfranz/franz/commit/99d1c01))
503* **Payment:** Fix payment window when name contains special character ([a854614](https://github.com/meetfranz/franz/commit/a854614)) 494* **Payment:** Fix payment window when name contains special character ([a854614](https://github.com/meetfranz/franz/commit/a854614))
504* **macOS:** Add macOS dark theme system tray icon ([55805f1](https://github.com/meetfranz/franz/commit/55805f1)) 495* **macOS:** Add macOS dark theme system tray icon ([55805f1](https://github.com/meetfranz/franz/commit/55805f1))
505* **Windows:** Fix enable/disable autostart on login ([eca7f3b](https://github.com/meetfranz/franz/commit/eca7f3b)) 496* **Windows:** Fix enable/disable autostart on login ([eca7f3b](https://github.com/meetfranz/franz/commit/eca7f3b))
506* **Windows:** Fix multiple system tray icons when opening/closing Franz ([5b9b0c7](https://github.com/meetfranz/franz/commit/5b9b0c7)) 497* **Windows:** Fix multiple system tray icons when opening/closing Ferdi ([5b9b0c7](https://github.com/meetfranz/franz/commit/5b9b0c7))
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index e457e187e..0b41fc123 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,11 +1,11 @@
1# Contributor Code of Conduct 1# Contributor Code of Conduct
2 2
3As contributors and maintainers of the Franz project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities. 3As contributors and maintainers of the Ferdi project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.
4 4
5Communication through GitHub, Slack, email or any other channel must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. 5Communication through GitHub, Slack, email or any other channel must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
6 6
7We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the project to do the same. 7We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the project to do the same.
8 8
9If any member of the community violates this code of conduct, the maintainers of the Franz project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate. 9If any member of the community violates this code of conduct, the maintainers of the Ferdi project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.
10 10
11If you are subject to or witness unacceptable behavior, or have any other concerns, please open an issue or send an email to [Stefan](stefan@adlk.io). 11If you are subject to or witness unacceptable behavior, or have any other concerns, please open an issue or send an email to [Stefan](stefan@adlk.io).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 57146bd43..010777a05 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
1# Contributing to Franz 5 1# Contributing to Ferdi 5
2 2
3:tada: First off, thanks for taking the time and your effort to make Franz better! :tada: 3:tada: First off, thanks for taking the time and your effort to make Ferdi better! :tada:
4 4
5#### Table of contents 5#### Table of contents
6<!-- TOC depthFrom:2 depthTo:2 withLinks:1 updateOnSave:1 orderedList:0 --> 6<!-- TOC depthFrom:2 depthTo:2 withLinks:1 updateOnSave:1 orderedList:0 -->
@@ -14,10 +14,10 @@
14 14
15## Code of Conduct 15## Code of Conduct
16 16
17This project and everyone participating in it is governed by the [Franz Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [stefan@adlk.io](mailto:stefan@adlk.io). 17This project and everyone participating in it is governed by the [Ferdi Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [stefan@adlk.io](mailto:stefan@adlk.io).
18 18
19## What should I know before I get started? 19## What should I know before I get started?
20With Franz 5, we have completely separated the client and the services. If you have any issues with a service recipe, please do not open an issue at this repository. Instead head over to the [Franz Recipe Repository](https://github.com/meetfranz/plugins) and open a new issue there. 20With Ferdi 5, we have completely separated the client and the services. If you have any issues with a service recipe, please do not open an issue at this repository. Instead head over to the [Ferdi Recipe Repository](https://github.com/meetfranz/plugins) and open a new issue there.
21 21
22If you need help with development, want to discuss a new feature or improvement please talk to us either on [Slack](http://slack.franz.im) or open a new issue with the [feature proposal template](.github/FEATURE_PROPOSAL_TEMPLATE.md). 22If you need help with development, want to discuss a new feature or improvement please talk to us either on [Slack](http://slack.franz.im) or open a new issue with the [feature proposal template](.github/FEATURE_PROPOSAL_TEMPLATE.md).
23 23
diff --git a/README.md b/README.md
index 5397189c6..50bc214fd 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,40 @@
1<img src="./build-helpers/images/icon.png" alt="" width="150"/> 1<p align="center">
2 <img src="./build-helpers/images/icon.png" alt="" width="200"/>
3</p>
2 4
3# Franz 5 5# Ferdi
4[![Build status Windows](https://ci.appveyor.com/api/projects/status/9yman4ye19x4274o/branch/master?svg=true)](https://ci.appveyor.com/project/adlk/franz/branch/master)
5 [![Build Status Mac & Linux](https://travis-ci.com/meetfranz/franz.svg?branch=master)](https://travis-ci.com/meetfranz/franz) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://meetfranz.com/payment.html)
6 6
7Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more. 7[![Build Status Windows](https://ci.appveyor.com/api/projects/status/2ckfbmoxp36fye5b?svg=true)](https://ci.appveyor.com/project/kytwb/ferdi)
8 [![Build Status Mac & Linux](https://travis-ci.org/kytwb/ferdi.svg?branch=master)](https://travis-ci.org/kytwb/ferdi)
8 9
9## [Download Franz](https://www.meetfranz.com) 10🤴🏽 Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted features.
10👉 www.meetfranz.com 11
12## Download Ferdi
13
14You can find the installers in the [latest release](https://github.com/kytwb/ferdi/releases) assets.
11 15
12### Or use homebrew (macOS only) 16### Or use homebrew (macOS only)
13 17
14`$ brew cask install franz` 18`$ brew cask install ferdi`
15 19
16(Don't know homebrew? [brew.sh](https://brew.sh/)) 20(Don't know homebrew? [brew.sh](https://brew.sh/))
17 21
22## Features
23- [x] Removes the counter-productive fullscreen app delay inviting users to upgrade
24- [x] Removes pages begging you to donate after registration
25- [x] Makes all users Premium by default ([#15](https://github.com/kytwb/ferdi/issues/15))
26- [x] [Add option to change server to a custom](https://github.com/kytwb/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/vantezzen/ferdi-server)
27- [x] Add "Private Notification"-Mode, that hides message content from notifications ([franz#879](https://github.com/meetfranz/franz/issues/879))
28- [x] Add Password Lock feature to keep your messages protected ([#41](https://github.com/kytwb/ferdi/issues/41) and [franz#810](https://github.com/meetfranz/franz/issues/810), [franz#950](https://github.com/meetfranz/franz/issues/950), [franz#1430](https://github.com/meetfranz/franz/issues/1430))
29- [x] Add an option to keep individual workspaces always loaded ([#37](https://github.com/kytwb/ferdi/issues/37))
30- [x] Add an option to auto-hide the menubar ([#7](https://github.com/kytwb/ferdi/issues/7), [franz#833](https://github.com/meetfranz/franz/issues/833))
31- [x] Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/kytwb/ferdi/issues/39))
32- [x] Add "npm run prepare-code" command for development to lint and beautify code
33- [x] Remove "Franz is better together" popup
34- [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/kytwb/ferdi/wiki/Custom-Todo)
35- [x] Makes RocketChat self-hosted generally available ([#6](https://github.com/kytwb/ferdi/issues/6))
36- [x] Comes with a custom branding proper to Ferdi
37
18## Development 38## Development
19 39
20### Preparations 40### Preparations
@@ -22,6 +42,9 @@ Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many mor
22#### Install Linux OS dependencies 42#### Install Linux OS dependencies
23[Guide: Linux distribution specific dependencies](docs/linux.md) 43[Guide: Linux distribution specific dependencies](docs/linux.md)
24 44
45#### Use right NodeJS version
46Please 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)
47
25#### Fix native modules to match current electron node version 48#### Fix native modules to match current electron node version
26```bash 49```bash
27$ npm run rebuild 50$ npm run rebuild
@@ -35,7 +58,7 @@ $ npx lerna bootstrap
35 58
36If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. 59If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`.
37 60
38### Run Franz Development App 61### Run Ferdi Development App
39Run these two commands __simultaneously__ in different console tabs. 62Run these two commands __simultaneously__ in different console tabs.
40 63
41```bash 64```bash
@@ -49,15 +72,38 @@ Be aware that the development database will be reset regularly.
49$ npm run build 72$ npm run build
50``` 73```
51 74
52## How can I support the project? 75Deliverables will be available in the ./out folder.
53If you have found a bug that hasn't been reported yet or want to request a new feature, please open a new issue. 76
54 77## Contributors ✨
55## I need help? 78
56Join the Franz community on [Slack](http://slack.franz.im) and get in touch with us. 79Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
57 80<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
58## Create your own plugins/recipes 81<!-- prettier-ignore -->
59You can find all the Information at the [Plugins repository](https://github.com/meetfranz/plugins). 82<table>
60For questions feel free to ask in the [community Slack](http://slack.franz.im) 83 <tr>
61 84 <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="100px;" alt="Bennett"/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=vantezzen" title="Code">💻</a> <a href="#design-vantezzen" title="Design">🎨</a> <a href="https://github.com/kytwb/ferdi/commits?author=vantezzen" title="Documentation">📖</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">🤔</a> <a href="#translation-vantezzen" title="Translation">🌍</a></td>
62## License 85 <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="100px;" alt="Stefan Malzner"/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Code">💻</a> <a href="#content-adlk" title="Content">🖋</a> <a href="#design-adlk" title="Design">🎨</a> <a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Documentation">📖</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#projectManagement-adlk" title="Project Management">📆</a> <a href="https://github.com/kytwb/ferdi/commits?author=adlk" title="Tests">⚠️</a> <a href="#translation-adlk" title="Translation">🌍</a></td>
63Franz 5 is open-source licensed under the Apache-2.0 License. 86 <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="100px;" alt="Amine Mouafik"/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="#question-kytwb" title="Answering Questions">💬</a> <a href="https://github.com/kytwb/ferdi/commits?author=kytwb" title="Code">💻</a> <a href="https://github.com/kytwb/ferdi/commits?author=kytwb" title="Documentation">📖</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-kytwb" title="Maintenance">🚧</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">📦</a> <a href="#projectManagement-kytwb" title="Project Management">📆</a> <a href="#review-kytwb" title="Reviewed Pull Requests">👀</a></td>
87 <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="100px;" alt="ZeroCool"/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=ZeroCool940711" title="Code">💻</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">🤔</a></td>
88 <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="100px;" alt="rseitbekov"/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/commits?author=rseitbekov" title="Code">💻</a></td>
89 <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="100px;" alt="Peter Bittner"/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">🤔</a></td>
90 <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="100px;" alt="Justus Saul"/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">🐛</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">🤔</a></td>
91 </tr>
92 <tr>
93 <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="100px;" alt="igreil"/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">🤔</a></td>
94 <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="100px;" alt="Marco Lopes"/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">🤔</a></td>
95 <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="100px;" alt="dayzlun"/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/kytwb/ferdi/issues?q=author%3Adayzlun" title="Bug reports">🐛</a></td>
96 <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="100px;" alt="Tobias Günther"/><br /><sub><b>Tobias Günther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">🤔</a></td>
97 </tr>
98</table>
99
100<!-- ALL-CONTRIBUTORS-LIST:END -->
101
102<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
103<!-- prettier-ignore-start -->
104<!-- markdownlint-disable -->
105<!-- markdownlint-enable -->
106<!-- prettier-ignore-end -->
107<!-- ALL-CONTRIBUTORS-LIST:END -->
108
109This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/appveyor.yml b/appveyor.yml
index 8e2a8a6f6..f8822d0a5 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,10 +1,4 @@
1environment: 1environment:
2 GH_TOKEN:
3 secure: LiO1Z/i16UV5YyElROSUykQqpJowSMK86I7Nw4G/NMa0q5yNA7EsUqEiJUL+OG01
4 CSC_LINK:
5 secure: NEYFWgUIAB//y2GR4AJOaegwuNjkxyNsdDf5A40dYovebTUsnIB5k4GCbU3I6JKW9iwH2ldU7Z+QawfyFerNgw==
6 CSC_KEY_PASSWORD:
7 secure: t8ypNTPKTmvRfd3hHA4aMOtC5KOFqOw3AsKhpU7140Q=
8 APPVEYOR_CACHE_SKIP_RESTORE: true 2 APPVEYOR_CACHE_SKIP_RESTORE: true
9 3
10version: 5.0.1.{build} 4version: 5.0.1.{build}
@@ -14,7 +8,7 @@ install:
14 - npx lerna bootstrap 8 - npx lerna bootstrap
15 9
16cache: 10cache:
17 - '%APPDATA%\npm-cache' 11 - '%APPDATA%\npm-cache'
18 12
19before_build: 13before_build:
20 - npm run lint 14 - npm run lint
@@ -23,11 +17,6 @@ before_build:
23build_script: 17build_script:
24 - npm run build 18 - npm run build
25 19
26notifications:
27 - provider: Slack
28 incoming_webhook:
29 secure: 2NnhP/L7Jk9PDE0JvdNnYVBnmDHFRWHmTQBQ1492ZQ7TpD2xQ/cXi3+G1Spr8zN5O8H+MQi4oMn3Ih2w0e8ZkHgQw138jvK/OfZO+FlF/mI=
30
31artifacts: 20artifacts:
32 - path: out\*.exe 21 - path: out\*.exe
33 - path: out\*.yml 22 - path: out\*.yml
diff --git a/branding/README.md b/branding/README.md
new file mode 100644
index 000000000..0abb2b016
--- /dev/null
+++ b/branding/README.md
@@ -0,0 +1,13 @@
1# Ferdi branding
2Ferdi uses a custom branding, inspired by Franz's.
3
4## Logo
5<img src="logo.png" alt="Logo" width="200"/>
6
7## Beard
8<img src="beard.png" alt="Ferdi's Beard" width="200"/>
9
10## Gradient
11<img src="gradient.png" alt="Gradient" width="200"/>
12
13Ferdi's Gradient is rotated by 45°. It goes from `#CE9FFC` in the top left to `#7367F0` in the bottom right. \ No newline at end of file
diff --git a/branding/beard.png b/branding/beard.png
new file mode 100644
index 000000000..3c1f92842
--- /dev/null
+++ b/branding/beard.png
Binary files differ
diff --git a/branding/gradient.png b/branding/gradient.png
new file mode 100644
index 000000000..06d117541
--- /dev/null
+++ b/branding/gradient.png
Binary files differ
diff --git a/branding/logo.png b/branding/logo.png
new file mode 100644
index 000000000..3f0643121
--- /dev/null
+++ b/branding/logo.png
Binary files differ
diff --git a/branding/logo.psd b/branding/logo.psd
new file mode 100644
index 000000000..baec1c0aa
--- /dev/null
+++ b/branding/logo.psd
Binary files differ
diff --git a/build-helpers/images/dmgInstaller.tiff b/build-helpers/images/dmgInstaller.tiff
index faff9f245..f09096221 100644
--- a/build-helpers/images/dmgInstaller.tiff
+++ b/build-helpers/images/dmgInstaller.tiff
Binary files differ
diff --git a/build-helpers/images/icon.icns b/build-helpers/images/icon.icns
index 15120c210..e3a0b93e2 100644
--- a/build-helpers/images/icon.icns
+++ b/build-helpers/images/icon.icns
Binary files differ
diff --git a/build-helpers/images/icon.ico b/build-helpers/images/icon.ico
index db626c20b..b7667d97f 100644
--- a/build-helpers/images/icon.ico
+++ b/build-helpers/images/icon.ico
Binary files differ
diff --git a/build-helpers/images/icon.png b/build-helpers/images/icon.png
index 9c39f06e0..2b8d83b56 100644
--- a/build-helpers/images/icon.png
+++ b/build-helpers/images/icon.png
Binary files differ
diff --git a/build-helpers/images/icons/1024x1024.png b/build-helpers/images/icons/1024x1024.png
index 9c39f06e0..a89df7d40 100644
--- a/build-helpers/images/icons/1024x1024.png
+++ b/build-helpers/images/icons/1024x1024.png
Binary files differ
diff --git a/build-helpers/images/icons/128x128.png b/build-helpers/images/icons/128x128.png
index 8eb811283..248905851 100644
--- a/build-helpers/images/icons/128x128.png
+++ b/build-helpers/images/icons/128x128.png
Binary files differ
diff --git a/build-helpers/images/icons/16x16.png b/build-helpers/images/icons/16x16.png
index 2523dd8a7..353dc1590 100644
--- a/build-helpers/images/icons/16x16.png
+++ b/build-helpers/images/icons/16x16.png
Binary files differ
diff --git a/build-helpers/images/icons/24x24.png b/build-helpers/images/icons/24x24.png
index 9cb17a0b1..135dd0988 100644
--- a/build-helpers/images/icons/24x24.png
+++ b/build-helpers/images/icons/24x24.png
Binary files differ
diff --git a/build-helpers/images/icons/256x256.png b/build-helpers/images/icons/256x256.png
index 5742147b8..a2f83bf63 100644
--- a/build-helpers/images/icons/256x256.png
+++ b/build-helpers/images/icons/256x256.png
Binary files differ
diff --git a/build-helpers/images/icons/32x32.png b/build-helpers/images/icons/32x32.png
index 09b88a805..f6f5cf406 100644
--- a/build-helpers/images/icons/32x32.png
+++ b/build-helpers/images/icons/32x32.png
Binary files differ
diff --git a/build-helpers/images/icons/48x48.png b/build-helpers/images/icons/48x48.png
index c9d2f331c..7999ef39f 100644
--- a/build-helpers/images/icons/48x48.png
+++ b/build-helpers/images/icons/48x48.png
Binary files differ
diff --git a/build-helpers/images/icons/512x512.png b/build-helpers/images/icons/512x512.png
index 9d5f1c658..d219c64ae 100644
--- a/build-helpers/images/icons/512x512.png
+++ b/build-helpers/images/icons/512x512.png
Binary files differ
diff --git a/build-helpers/images/icons/64x64.png b/build-helpers/images/icons/64x64.png
index 7842217ed..94960c0e2 100644
--- a/build-helpers/images/icons/64x64.png
+++ b/build-helpers/images/icons/64x64.png
Binary files differ
diff --git a/build-helpers/images/icons/96x96.png b/build-helpers/images/icons/96x96.png
index bbae07f45..4dee83800 100644
--- a/build-helpers/images/icons/96x96.png
+++ b/build-helpers/images/icons/96x96.png
Binary files differ
diff --git a/build-helpers/images/win-app-ico.ico b/build-helpers/images/win-app-ico.ico
index 339ba79ca..658826324 100644
--- a/build-helpers/images/win-app-ico.ico
+++ b/build-helpers/images/win-app-ico.ico
Binary files differ
diff --git a/build-helpers/images/win-installer-loading-splash.gif b/build-helpers/images/win-installer-loading-splash.gif
index 02598281f..2f1c9d827 100644
--- a/build-helpers/images/win-installer-loading-splash.gif
+++ b/build-helpers/images/win-installer-loading-splash.gif
Binary files differ
diff --git a/docs/example-feature/api.js b/docs/example-feature/api.js
index 65207e877..d9c769c91 100644
--- a/docs/example-feature/api.js
+++ b/docs/example-feature/api.js
@@ -1,5 +1,5 @@
1export default { 1export default {
2 async getName() { 2 async getName() {
3 return Promise.resolve('Franz'); 3 return Promise.resolve('Ferdi');
4 }, 4 },
5}; 5};
diff --git a/docs/example-feature/index.js b/docs/example-feature/index.js
index af859af26..84ee84b5e 100644
--- a/docs/example-feature/index.js
+++ b/docs/example-feature/index.js
@@ -3,7 +3,7 @@ import { ExampleFeatureStore } from './store';
3import state, { resetState } from './state'; 3import state, { resetState } from './state';
4import api from './api'; 4import api from './api';
5 5
6const debug = require('debug')('Franz:feature:EXAMPLE_FEATURE'); 6const debug = require('debug')('Ferdi:feature:EXAMPLE_FEATURE');
7 7
8let store = null; 8let store = null;
9 9
diff --git a/docs/example-feature/store.js b/docs/example-feature/store.js
index d8acfdca3..de27eae86 100644
--- a/docs/example-feature/store.js
+++ b/docs/example-feature/store.js
@@ -2,7 +2,7 @@ import { action, observable, reaction } from 'mobx';
2import Store from '../../src/stores/lib/Store'; 2import Store from '../../src/stores/lib/Store';
3import Request from '../../src/stores/lib/Request'; 3import Request from '../../src/stores/lib/Request';
4 4
5const debug = require('debug')('Franz:feature:EXAMPLE_FEATURE:store'); 5const debug = require('debug')('Ferdi:feature:EXAMPLE_FEATURE:store');
6 6
7export class ExampleFeatureStore extends Store { 7export class ExampleFeatureStore extends Store {
8 @observable getNameRequest = new Request(this.api, 'getName'); 8 @observable getNameRequest = new Request(this.api, 'getName');
diff --git a/electron-builder.yml b/electron-builder.yml
index 97aafa207..a0818d55c 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -2,7 +2,7 @@ directories:
2 app: ./build 2 app: ./build
3 output: ./out 3 output: ./out
4 4
5appId: "com.meetfranz.franz" 5appId: "com.kytwb.ferdi"
6 6
7compression: maximum 7compression: maximum
8 8
@@ -27,9 +27,9 @@ win:
27linux: 27linux:
28 icon: ./build-helpers/images/icons 28 icon: ./build-helpers/images/icons
29 category: Network;InstantMessaging; 29 category: Network;InstantMessaging;
30 executableName: franz 30 executableName: ferdi
31 synopsis: "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more." 31 synopsis: "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more."
32 description: "Franz is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Franz currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts, GroupMe, Skype and many more. You can download Franz for free for Mac & Windows." 32 description: "Ferdi is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Ferdi currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts, GroupMe, Skype and many more. You can download Ferdi for free for Mac & Windows."
33 target: 33 target:
34 - target: AppImage 34 - target: AppImage
35 - target: deb 35 - target: deb
@@ -40,8 +40,8 @@ nsis:
40 oneClick: true 40 oneClick: true
41 41
42protocols: 42protocols:
43 name: Franz 43 name: Ferdi
44 schemes: [franz] 44 schemes: [ferdi]
45 45
46asarUnpack: 46asarUnpack:
47 - ./dictionaries 47 - ./dictionaries
diff --git a/package-lock.json b/package-lock.json
index 048425eb6..4ce2893a3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
1{ 1{
2 "name": "franz", 2 "name": "ferdi",
3 "version": "5.2.1-beta.1", 3 "version": "5.3.0",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
@@ -2184,7 +2184,8 @@
2184 }, 2184 },
2185 "@meetfranz/theme": { 2185 "@meetfranz/theme": {
2186 "version": "1.0.14", 2186 "version": "1.0.14",
2187 "bundled": true, 2187 "resolved": "https://registry.npmjs.org/@meetfranz/theme/-/theme-1.0.14.tgz",
2188 "integrity": "sha512-iWP+3ifiNum98sHKiNdUJK+R0p4Z7TT8OenA1N2BnSC6CFob+dLhzAK+o5lxcyEcKZKYDwd7JKRZj93wqpBPpg==",
2188 "requires": { 2189 "requires": {
2189 "color": "^3.1.0" 2190 "color": "^3.1.0"
2190 } 2191 }
@@ -2212,7 +2213,8 @@
2212 }, 2213 },
2213 "@meetfranz/theme": { 2214 "@meetfranz/theme": {
2214 "version": "1.0.14", 2215 "version": "1.0.14",
2215 "bundled": true, 2216 "resolved": "https://registry.npmjs.org/@meetfranz/theme/-/theme-1.0.14.tgz",
2217 "integrity": "sha512-iWP+3ifiNum98sHKiNdUJK+R0p4Z7TT8OenA1N2BnSC6CFob+dLhzAK+o5lxcyEcKZKYDwd7JKRZj93wqpBPpg==",
2216 "requires": { 2218 "requires": {
2217 "color": "^3.1.0" 2219 "color": "^3.1.0"
2218 } 2220 }
@@ -2787,6 +2789,127 @@
2787 "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", 2789 "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
2788 "dev": true 2790 "dev": true
2789 }, 2791 },
2792 "all-contributors-cli": {
2793 "version": "6.9.0",
2794 "resolved": "https://registry.npmjs.org/all-contributors-cli/-/all-contributors-cli-6.9.0.tgz",
2795 "integrity": "sha512-zIzES49OCnhaf7Q7KxyVhe6wYDvrvMKbWZh+hHJigN1VYEW8EQjbpXYf3IEaqB4gC/TDs/CYcINzstgnwlN/Lg==",
2796 "dev": true,
2797 "requires": {
2798 "@babel/runtime": "^7.2.0",
2799 "async": "^3.0.1",
2800 "chalk": "^2.3.0",
2801 "didyoumean": "^1.2.1",
2802 "inquirer": "^6.2.1",
2803 "json-fixer": "^1.3.1-0",
2804 "lodash": "^4.11.2",
2805 "pify": "^4.0.1",
2806 "request": "^2.72.0",
2807 "yargs": "^14.0.0"
2808 },
2809 "dependencies": {
2810 "ansi-regex": {
2811 "version": "4.1.0",
2812 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2813 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2814 "dev": true
2815 },
2816 "async": {
2817 "version": "3.1.0",
2818 "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz",
2819 "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==",
2820 "dev": true
2821 },
2822 "cliui": {
2823 "version": "5.0.0",
2824 "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
2825 "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
2826 "dev": true,
2827 "requires": {
2828 "string-width": "^3.1.0",
2829 "strip-ansi": "^5.2.0",
2830 "wrap-ansi": "^5.1.0"
2831 }
2832 },
2833 "get-caller-file": {
2834 "version": "2.0.5",
2835 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
2836 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
2837 "dev": true
2838 },
2839 "pify": {
2840 "version": "4.0.1",
2841 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
2842 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
2843 "dev": true
2844 },
2845 "require-main-filename": {
2846 "version": "2.0.0",
2847 "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
2848 "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
2849 "dev": true
2850 },
2851 "string-width": {
2852 "version": "3.1.0",
2853 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2854 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2855 "dev": true,
2856 "requires": {
2857 "emoji-regex": "^7.0.1",
2858 "is-fullwidth-code-point": "^2.0.0",
2859 "strip-ansi": "^5.1.0"
2860 }
2861 },
2862 "strip-ansi": {
2863 "version": "5.2.0",
2864 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2865 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2866 "dev": true,
2867 "requires": {
2868 "ansi-regex": "^4.1.0"
2869 }
2870 },
2871 "wrap-ansi": {
2872 "version": "5.1.0",
2873 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
2874 "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
2875 "dev": true,
2876 "requires": {
2877 "ansi-styles": "^3.2.0",
2878 "string-width": "^3.0.0",
2879 "strip-ansi": "^5.0.0"
2880 }
2881 },
2882 "yargs": {
2883 "version": "14.0.0",
2884 "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz",
2885 "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==",
2886 "dev": true,
2887 "requires": {
2888 "cliui": "^5.0.0",
2889 "decamelize": "^1.2.0",
2890 "find-up": "^3.0.0",
2891 "get-caller-file": "^2.0.1",
2892 "require-directory": "^2.1.1",
2893 "require-main-filename": "^2.0.0",
2894 "set-blocking": "^2.0.0",
2895 "string-width": "^3.0.0",
2896 "which-module": "^2.0.0",
2897 "y18n": "^4.0.0",
2898 "yargs-parser": "^13.1.1"
2899 }
2900 },
2901 "yargs-parser": {
2902 "version": "13.1.1",
2903 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
2904 "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
2905 "dev": true,
2906 "requires": {
2907 "camelcase": "^5.0.0",
2908 "decamelize": "^1.2.0"
2909 }
2910 }
2911 }
2912 },
2790 "amdefine": { 2913 "amdefine": {
2791 "version": "1.0.1", 2914 "version": "1.0.1",
2792 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 2915 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
@@ -6060,6 +6183,12 @@
6060 "wrappy": "1" 6183 "wrappy": "1"
6061 } 6184 }
6062 }, 6185 },
6186 "didyoumean": {
6187 "version": "1.2.1",
6188 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz",
6189 "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=",
6190 "dev": true
6191 },
6063 "diff": { 6192 "diff": {
6064 "version": "3.5.0", 6193 "version": "3.5.0",
6065 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 6194 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@@ -7913,10 +8042,13 @@
7913 } 8042 }
7914 }, 8043 },
7915 "eslint-utils": { 8044 "eslint-utils": {
7916 "version": "1.3.1", 8045 "version": "1.4.2",
7917 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", 8046 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
7918 "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", 8047 "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
7919 "dev": true 8048 "dev": true,
8049 "requires": {
8050 "eslint-visitor-keys": "^1.0.0"
8051 }
7920 }, 8052 },
7921 "eslint-visitor-keys": { 8053 "eslint-visitor-keys": {
7922 "version": "1.0.0", 8054 "version": "1.0.0",
@@ -9037,22 +9169,22 @@
9037 "dependencies": { 9169 "dependencies": {
9038 "abbrev": { 9170 "abbrev": {
9039 "version": "1.1.1", 9171 "version": "1.1.1",
9040 "resolved": false, 9172 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
9041 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 9173 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
9042 }, 9174 },
9043 "ansi-regex": { 9175 "ansi-regex": {
9044 "version": "2.1.1", 9176 "version": "2.1.1",
9045 "resolved": false, 9177 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
9046 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 9178 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
9047 }, 9179 },
9048 "aproba": { 9180 "aproba": {
9049 "version": "1.2.0", 9181 "version": "1.2.0",
9050 "resolved": false, 9182 "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
9051 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 9183 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
9052 }, 9184 },
9053 "are-we-there-yet": { 9185 "are-we-there-yet": {
9054 "version": "1.1.5", 9186 "version": "1.1.5",
9055 "resolved": false, 9187 "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
9056 "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 9188 "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
9057 "requires": { 9189 "requires": {
9058 "delegates": "^1.0.0" 9190 "delegates": "^1.0.0"
@@ -9060,12 +9192,12 @@
9060 }, 9192 },
9061 "balanced-match": { 9193 "balanced-match": {
9062 "version": "1.0.0", 9194 "version": "1.0.0",
9063 "resolved": false, 9195 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
9064 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 9196 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
9065 }, 9197 },
9066 "brace-expansion": { 9198 "brace-expansion": {
9067 "version": "1.1.11", 9199 "version": "1.1.11",
9068 "resolved": false, 9200 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
9069 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 9201 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
9070 "requires": { 9202 "requires": {
9071 "balanced-match": "^1.0.0", 9203 "balanced-match": "^1.0.0",
@@ -9074,27 +9206,27 @@
9074 }, 9206 },
9075 "chownr": { 9207 "chownr": {
9076 "version": "1.1.1", 9208 "version": "1.1.1",
9077 "resolved": false, 9209 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
9078 "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" 9210 "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
9079 }, 9211 },
9080 "code-point-at": { 9212 "code-point-at": {
9081 "version": "1.1.0", 9213 "version": "1.1.0",
9082 "resolved": false, 9214 "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
9083 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 9215 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
9084 }, 9216 },
9085 "concat-map": { 9217 "concat-map": {
9086 "version": "0.0.1", 9218 "version": "0.0.1",
9087 "resolved": false, 9219 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
9088 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 9220 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
9089 }, 9221 },
9090 "console-control-strings": { 9222 "console-control-strings": {
9091 "version": "1.1.0", 9223 "version": "1.1.0",
9092 "resolved": false, 9224 "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
9093 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 9225 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
9094 }, 9226 },
9095 "core-util-is": { 9227 "core-util-is": {
9096 "version": "1.0.2", 9228 "version": "1.0.2",
9097 "resolved": false, 9229 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
9098 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 9230 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
9099 }, 9231 },
9100 "debug": { 9232 "debug": {
@@ -9104,22 +9236,22 @@
9104 }, 9236 },
9105 "deep-extend": { 9237 "deep-extend": {
9106 "version": "0.6.0", 9238 "version": "0.6.0",
9107 "resolved": false, 9239 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
9108 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 9240 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
9109 }, 9241 },
9110 "delegates": { 9242 "delegates": {
9111 "version": "1.0.0", 9243 "version": "1.0.0",
9112 "resolved": false, 9244 "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
9113 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 9245 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
9114 }, 9246 },
9115 "detect-libc": { 9247 "detect-libc": {
9116 "version": "1.0.3", 9248 "version": "1.0.3",
9117 "resolved": false, 9249 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
9118 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 9250 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
9119 }, 9251 },
9120 "fs-minipass": { 9252 "fs-minipass": {
9121 "version": "1.2.5", 9253 "version": "1.2.5",
9122 "resolved": false, 9254 "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
9123 "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", 9255 "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
9124 "requires": { 9256 "requires": {
9125 "minipass": "^2.2.1" 9257 "minipass": "^2.2.1"
@@ -9127,12 +9259,12 @@
9127 }, 9259 },
9128 "fs.realpath": { 9260 "fs.realpath": {
9129 "version": "1.0.0", 9261 "version": "1.0.0",
9130 "resolved": false, 9262 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
9131 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 9263 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
9132 }, 9264 },
9133 "gauge": { 9265 "gauge": {
9134 "version": "2.7.4", 9266 "version": "2.7.4",
9135 "resolved": false, 9267 "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
9136 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 9268 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
9137 "requires": { 9269 "requires": {
9138 "aproba": "^1.0.3", 9270 "aproba": "^1.0.3",
@@ -9145,7 +9277,7 @@
9145 }, 9277 },
9146 "glob": { 9278 "glob": {
9147 "version": "7.1.3", 9279 "version": "7.1.3",
9148 "resolved": false, 9280 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
9149 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 9281 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
9150 "requires": { 9282 "requires": {
9151 "fs.realpath": "^1.0.0", 9283 "fs.realpath": "^1.0.0",
@@ -9158,12 +9290,12 @@
9158 }, 9290 },
9159 "has-unicode": { 9291 "has-unicode": {
9160 "version": "2.0.1", 9292 "version": "2.0.1",
9161 "resolved": false, 9293 "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
9162 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 9294 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
9163 }, 9295 },
9164 "iconv-lite": { 9296 "iconv-lite": {
9165 "version": "0.4.24", 9297 "version": "0.4.24",
9166 "resolved": false, 9298 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
9167 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 9299 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
9168 "requires": { 9300 "requires": {
9169 "safer-buffer": ">= 2.1.2 < 3" 9301 "safer-buffer": ">= 2.1.2 < 3"
@@ -9171,7 +9303,7 @@
9171 }, 9303 },
9172 "ignore-walk": { 9304 "ignore-walk": {
9173 "version": "3.0.1", 9305 "version": "3.0.1",
9174 "resolved": false, 9306 "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
9175 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", 9307 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
9176 "requires": { 9308 "requires": {
9177 "minimatch": "^3.0.4" 9309 "minimatch": "^3.0.4"
@@ -9179,7 +9311,7 @@
9179 }, 9311 },
9180 "inflight": { 9312 "inflight": {
9181 "version": "1.0.6", 9313 "version": "1.0.6",
9182 "resolved": false, 9314 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
9183 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 9315 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
9184 "requires": { 9316 "requires": {
9185 "once": "^1.3.0", 9317 "once": "^1.3.0",
@@ -9188,17 +9320,17 @@
9188 }, 9320 },
9189 "inherits": { 9321 "inherits": {
9190 "version": "2.0.3", 9322 "version": "2.0.3",
9191 "resolved": false, 9323 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
9192 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 9324 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
9193 }, 9325 },
9194 "ini": { 9326 "ini": {
9195 "version": "1.3.5", 9327 "version": "1.3.5",
9196 "resolved": false, 9328 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
9197 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 9329 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
9198 }, 9330 },
9199 "is-fullwidth-code-point": { 9331 "is-fullwidth-code-point": {
9200 "version": "1.0.0", 9332 "version": "1.0.0",
9201 "resolved": false, 9333 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
9202 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 9334 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
9203 "requires": { 9335 "requires": {
9204 "number-is-nan": "^1.0.0" 9336 "number-is-nan": "^1.0.0"
@@ -9206,18 +9338,6 @@
9206 } 9338 }
9207 } 9339 }
9208 }, 9340 },
9209 "fstream": {
9210 "version": "1.0.11",
9211 "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
9212 "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
9213 "dev": true,
9214 "requires": {
9215 "graceful-fs": "^4.1.2",
9216 "inherits": "~2.0.0",
9217 "mkdirp": ">=0.5 0",
9218 "rimraf": "2"
9219 }
9220 },
9221 "function-bind": { 9341 "function-bind": {
9222 "version": "1.1.1", 9342 "version": "1.1.1",
9223 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 9343 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -10898,26 +11018,15 @@
10898 "dev": true 11018 "dev": true
10899 }, 11019 },
10900 "handlebars": { 11020 "handlebars": {
10901 "version": "4.1.0", 11021 "version": "4.1.2",
10902 "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", 11022 "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
10903 "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", 11023 "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
10904 "dev": true, 11024 "dev": true,
10905 "requires": { 11025 "requires": {
10906 "async": "^2.5.0", 11026 "neo-async": "^2.6.0",
10907 "optimist": "^0.6.1", 11027 "optimist": "^0.6.1",
10908 "source-map": "^0.6.1", 11028 "source-map": "^0.6.1",
10909 "uglify-js": "^3.1.4" 11029 "uglify-js": "^3.1.4"
10910 },
10911 "dependencies": {
10912 "async": {
10913 "version": "2.6.1",
10914 "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
10915 "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
10916 "dev": true,
10917 "requires": {
10918 "lodash": "^4.17.10"
10919 }
10920 }
10921 } 11030 }
10922 }, 11031 },
10923 "har-schema": { 11032 "har-schema": {
@@ -12817,9 +12926,9 @@
12817 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 12926 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
12818 }, 12927 },
12819 "js-yaml": { 12928 "js-yaml": {
12820 "version": "3.12.1", 12929 "version": "3.13.1",
12821 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", 12930 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
12822 "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", 12931 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
12823 "requires": { 12932 "requires": {
12824 "argparse": "^1.0.7", 12933 "argparse": "^1.0.7",
12825 "esprima": "^4.0.0" 12934 "esprima": "^4.0.0"
@@ -12899,6 +13008,17 @@
12899 "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 13008 "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
12900 "dev": true 13009 "dev": true
12901 }, 13010 },
13011 "json-fixer": {
13012 "version": "1.3.2",
13013 "resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.3.2.tgz",
13014 "integrity": "sha512-9Z60lwBP3/SnwnvmIIb13xjXyOpD0ezVAcjfQQHgMbs2Gsl5g5mogfobQO8C0mCSafLwC5lHtxYPwdT1dADrzw==",
13015 "dev": true,
13016 "requires": {
13017 "@babel/runtime": "^7.4.5",
13018 "chalk": "^2.4.2",
13019 "pegjs": "^0.10.0"
13020 }
13021 },
12902 "json-parse-better-errors": { 13022 "json-parse-better-errors": {
12903 "version": "1.0.2", 13023 "version": "1.0.2",
12904 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 13024 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -13448,9 +13568,9 @@
13448 } 13568 }
13449 }, 13569 },
13450 "lodash": { 13570 "lodash": {
13451 "version": "4.17.11", 13571 "version": "4.17.15",
13452 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 13572 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
13453 "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 13573 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
13454 }, 13574 },
13455 "lodash._basecopy": { 13575 "lodash._basecopy": {
13456 "version": "3.0.1", 13576 "version": "3.0.1",
@@ -13609,9 +13729,9 @@
13609 "dev": true 13729 "dev": true
13610 }, 13730 },
13611 "lodash.mergewith": { 13731 "lodash.mergewith": {
13612 "version": "4.6.1", 13732 "version": "4.6.2",
13613 "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", 13733 "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
13614 "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", 13734 "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
13615 "dev": true 13735 "dev": true
13616 }, 13736 },
13617 "lodash.once": { 13737 "lodash.once": {
@@ -13830,9 +13950,9 @@
13830 } 13950 }
13831 }, 13951 },
13832 "marked": { 13952 "marked": {
13833 "version": "0.6.1", 13953 "version": "0.7.0",
13834 "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.1.tgz", 13954 "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
13835 "integrity": "sha512-+H0L3ibcWhAZE02SKMqmvYsErLo4EAVJxu5h3bHBBDvvjeWXtl92rGUSBYHL2++5Y+RSNgl8dYOAXcYe7lp1fA==" 13955 "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg=="
13836 }, 13956 },
13837 "matchdep": { 13957 "matchdep": {
13838 "version": "2.0.0", 13958 "version": "2.0.0",
@@ -14136,9 +14256,9 @@
14136 } 14256 }
14137 }, 14257 },
14138 "mixin-deep": { 14258 "mixin-deep": {
14139 "version": "1.3.1", 14259 "version": "1.3.2",
14140 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 14260 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
14141 "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 14261 "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
14142 "dev": true, 14262 "dev": true,
14143 "requires": { 14263 "requires": {
14144 "for-in": "^1.0.2", 14264 "for-in": "^1.0.2",
@@ -14510,6 +14630,18 @@
14510 "which": "1" 14630 "which": "1"
14511 }, 14631 },
14512 "dependencies": { 14632 "dependencies": {
14633 "fstream": {
14634 "version": "1.0.12",
14635 "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
14636 "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
14637 "dev": true,
14638 "requires": {
14639 "graceful-fs": "^4.1.2",
14640 "inherits": "~2.0.0",
14641 "mkdirp": ">=0.5 0",
14642 "rimraf": "2"
14643 }
14644 },
14513 "semver": { 14645 "semver": {
14514 "version": "5.3.0", 14646 "version": "5.3.0",
14515 "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 14647 "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
@@ -14517,13 +14649,13 @@
14517 "dev": true 14649 "dev": true
14518 }, 14650 },
14519 "tar": { 14651 "tar": {
14520 "version": "2.2.1", 14652 "version": "2.2.2",
14521 "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", 14653 "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
14522 "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", 14654 "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
14523 "dev": true, 14655 "dev": true,
14524 "requires": { 14656 "requires": {
14525 "block-stream": "*", 14657 "block-stream": "*",
14526 "fstream": "^1.0.2", 14658 "fstream": "^1.0.12",
14527 "inherits": "2" 14659 "inherits": "2"
14528 } 14660 }
14529 } 14661 }
@@ -16128,6 +16260,12 @@
16128 "sha.js": "^2.4.8" 16260 "sha.js": "^2.4.8"
16129 } 16261 }
16130 }, 16262 },
16263 "pegjs": {
16264 "version": "0.10.0",
16265 "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
16266 "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=",
16267 "dev": true
16268 },
16131 "pend": { 16269 "pend": {
16132 "version": "1.2.0", 16270 "version": "1.2.0",
16133 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 16271 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -18192,9 +18330,9 @@
18192 "dev": true 18330 "dev": true
18193 }, 18331 },
18194 "set-value": { 18332 "set-value": {
18195 "version": "2.0.0", 18333 "version": "2.0.1",
18196 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 18334 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
18197 "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 18335 "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
18198 "dev": true, 18336 "dev": true,
18199 "requires": { 18337 "requires": {
18200 "extend-shallow": "^2.0.1", 18338 "extend-shallow": "^2.0.1",
@@ -20056,38 +20194,15 @@
20056 "dev": true 20194 "dev": true
20057 }, 20195 },
20058 "union-value": { 20196 "union-value": {
20059 "version": "1.0.0", 20197 "version": "1.0.1",
20060 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 20198 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
20061 "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 20199 "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
20062 "dev": true, 20200 "dev": true,
20063 "requires": { 20201 "requires": {
20064 "arr-union": "^3.1.0", 20202 "arr-union": "^3.1.0",
20065 "get-value": "^2.0.6", 20203 "get-value": "^2.0.6",
20066 "is-extendable": "^0.1.1", 20204 "is-extendable": "^0.1.1",
20067 "set-value": "^0.4.3" 20205 "set-value": "^2.0.1"
20068 },
20069 "dependencies": {
20070 "extend-shallow": {
20071 "version": "2.0.1",
20072 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
20073 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
20074 "dev": true,
20075 "requires": {
20076 "is-extendable": "^0.1.0"
20077 }
20078 },
20079 "set-value": {
20080 "version": "0.4.3",
20081 "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
20082 "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
20083 "dev": true,
20084 "requires": {
20085 "extend-shallow": "^2.0.1",
20086 "is-extendable": "^0.1.1",
20087 "is-plain-object": "^2.0.1",
20088 "to-object-path": "^0.3.0"
20089 }
20090 }
20091 } 20206 }
20092 }, 20207 },
20093 "unique-filename": { 20208 "unique-filename": {
diff --git a/package.json b/package.json
index 376a998af..0ea76a8a5 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
1{ 1{
2 "name": "franz", 2 "name": "ferdi",
3 "productName": "Franz", 3 "productName": "Ferdi",
4 "appId": "com.meetfranz.franz", 4 "appId": "com.kytwb.ferdi",
5 "version": "5.3.3", 5 "version": "5.3.3-beta.2",
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": "adlk x franz - Stefan Malzner", 7 "copyright": "kytwb",
8 "main": "index.js", 8 "main": "index.js",
9 "homepage": "https://meetfranz.com", 9 "homepage": "https://github.com/kytwb/ferdi",
10 "repository": "https://github.com/meetfranz/franz.git", 10 "repository": "https://github.com/kytwb/ferdi.git",
11 "private": true, 11 "private": true,
12 "scripts": { 12 "scripts": {
13 "prestart": "npm run rebuild", 13 "prestart": "npm run rebuild",
@@ -17,7 +17,7 @@
17 "dev": "cross-env NODE_ENV=development gulp dev", 17 "dev": "cross-env NODE_ENV=development gulp dev",
18 "test": "jest", 18 "test": "jest",
19 "test:watch": "jest --watch", 19 "test:watch": "jest --watch",
20 "lint": "eslint src", 20 "lint": "eslint --quiet --fix src",
21 "manage-translations": "node ./src/i18n/manage-translations.js", 21 "manage-translations": "node ./src/i18n/manage-translations.js",
22 "sign": "gulp sign", 22 "sign": "gulp sign",
23 "prebuild": "gulp build", 23 "prebuild": "gulp build",
@@ -25,13 +25,15 @@
25 "rebuild": "npx electron-rebuild", 25 "rebuild": "npx electron-rebuild",
26 "commit": "git-cz", 26 "commit": "git-cz",
27 "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", 27 "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
28 "contributors": "all-contributors",
28 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"", 29 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"",
29 "packages": "npx lerna publish --no-git-tag-version", 30 "packages": "npx lerna publish --no-git-tag-version",
30 "uidev": "cd uidev && webpack-dev-server", 31 "uidev": "cd uidev && webpack-dev-server",
31 "postinstall": "npx lerna run prepare" 32 "postinstall": "npx lerna run prepare",
33 "prepare-code": "npm run lint && npm run reformat-files && npm run manage-translations"
32 }, 34 },
33 "keywords": [], 35 "keywords": [],
34 "author": "Stefan Malzner <stefan@adlk.io>", 36 "author": "Amine Mouafik <amine@mouafik.fr>",
35 "license": "Apache-2.0", 37 "license": "Apache-2.0",
36 "dependencies": { 38 "dependencies": {
37 "@babel/polyfill": "7.4.4", 39 "@babel/polyfill": "7.4.4",
@@ -56,8 +58,8 @@
56 "fs-extra": "7.0.1", 58 "fs-extra": "7.0.1",
57 "hex-to-rgba": "1.0.2", 59 "hex-to-rgba": "1.0.2",
58 "jsonwebtoken": "8.5.1", 60 "jsonwebtoken": "8.5.1",
59 "lodash": "^4.17.4", 61 "lodash": "4.17.15",
60 "marked": "0.6.1", 62 "marked": "0.7.0",
61 "mdi": "^1.9.33", 63 "mdi": "^1.9.33",
62 "mime-types": "2.1.21", 64 "mime-types": "2.1.21",
63 "mobx": "5.7.0", 65 "mobx": "5.7.0",
@@ -113,6 +115,7 @@
113 "@types/react-dom": "16.0.11", 115 "@types/react-dom": "16.0.11",
114 "@types/react-jss": "^8.6.0", 116 "@types/react-jss": "^8.6.0",
115 "@types/uuid": "3.4.4", 117 "@types/uuid": "3.4.4",
118 "all-contributors-cli": "6.9.0",
116 "babel-eslint": "10.0.1", 119 "babel-eslint": "10.0.1",
117 "babel-loader": "^8.0.4", 120 "babel-loader": "^8.0.4",
118 "babel-plugin-react-intl": "3.0.1", 121 "babel-plugin-react-intl": "3.0.1",
diff --git a/packages/forms/package.json b/packages/forms/package.json
index bb76462d8..18b6d2244 100644
--- a/packages/forms/package.json
+++ b/packages/forms/package.json
@@ -1,7 +1,7 @@
1{ 1{
2 "name": "@meetfranz/forms", 2 "name": "@meetfranz/forms",
3 "version": "1.1.0", 3 "version": "1.1.0",
4 "description": "React form components for Franz", 4 "description": "React form components for Ferdi",
5 "main": "lib/index.js", 5 "main": "lib/index.js",
6 "scripts": { 6 "scripts": {
7 "dev": "tsc -w", 7 "dev": "tsc -w",
@@ -20,7 +20,7 @@
20 "React", 20 "React",
21 "UI" 21 "UI"
22 ], 22 ],
23 "author": "Stefan Malzner <stefan@adlk.io>", 23 "author": "Amine Mouafik <amine@mouafik.fr>",
24 "license": "Apache-2.0", 24 "license": "Apache-2.0",
25 "dependencies": { 25 "dependencies": {
26 "@mdi/js": "^3.3.92", 26 "@mdi/js": "^3.3.92",
diff --git a/packages/forms/src/button/index.tsx b/packages/forms/src/button/index.tsx
index b53c2da05..b81154a43 100644
--- a/packages/forms/src/button/index.tsx
+++ b/packages/forms/src/button/index.tsx
@@ -14,7 +14,7 @@ interface IProps extends IFormField, IWithStyle {
14 className?: string; 14 className?: string;
15 disabled?: boolean; 15 disabled?: boolean;
16 id?: string; 16 id?: string;
17 type?: string; 17 type?: "button" | "reset" | "submit" | undefined;
18 onClick: (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLAnchorElement>) => void; 18 onClick: (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLAnchorElement>) => void;
19 buttonType?: ButtonType; 19 buttonType?: ButtonType;
20 stretch?: boolean; 20 stretch?: boolean;
@@ -187,7 +187,7 @@ class ButtonComponent extends Component<IProps> {
187 let showLoader = false; 187 let showLoader = false;
188 if (loaded) { 188 if (loaded) {
189 showLoader = !loaded; 189 showLoader = !loaded;
190 console.warn('Franz Button prop `loaded` will be deprecated in the future. Please use `busy` instead'); 190 console.warn('Ferdi Button prop `loaded` will be deprecated in the future. Please use `busy` instead');
191 } 191 }
192 if (busy) { 192 if (busy) {
193 showLoader = busy; 193 showLoader = busy;
diff --git a/packages/theme/package.json b/packages/theme/package.json
index fa12c8a30..ae608c507 100644
--- a/packages/theme/package.json
+++ b/packages/theme/package.json
@@ -1,7 +1,7 @@
1{ 1{
2 "name": "@meetfranz/theme", 2 "name": "@meetfranz/theme",
3 "version": "1.0.14", 3 "version": "1.0.14",
4 "description": "Theme configuration for Franz", 4 "description": "Theme configuration for Ferdi",
5 "author": "Stefan Malzner <stefan@adlk.io>", 5 "author": "Stefan Malzner <stefan@adlk.io>",
6 "homepage": "https://github.com/meetfranz/franz", 6 "homepage": "https://github.com/meetfranz/franz",
7 "license": "Apache-2.0", 7 "license": "Apache-2.0",
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
index 4e042afce..79a6d676f 100644
--- a/packages/theme/src/themes/default/index.ts
+++ b/packages/theme/src/themes/default/index.ts
@@ -11,7 +11,7 @@ export interface IStyleTypes {
11 }; 11 };
12} 12}
13 13
14export const brandPrimary = '#3498db'; 14export const brandPrimary = '#7367F0';
15export const brandSuccess = '#5cb85c'; 15export const brandSuccess = '#5cb85c';
16export const brandInfo = '#5bc0de'; 16export const brandInfo = '#5bc0de';
17export const brandWarning = '#FF9F00'; 17export const brandWarning = '#FF9F00';
diff --git a/packages/theme/src/themes/legacy/index.ts b/packages/theme/src/themes/legacy/index.ts
index 2114b92c1..17dcf883e 100644
--- a/packages/theme/src/themes/legacy/index.ts
+++ b/packages/theme/src/themes/legacy/index.ts
@@ -1,5 +1,5 @@
1/* legacy config, injected into sass */ 1/* legacy config, injected into sass */
2export const themeBrandPrimary = '#3498db'; 2export const themeBrandPrimary = '#7367F0';
3export const themeBrandSuccess = '#5cb85c'; 3export const themeBrandSuccess = '#5cb85c';
4export const themeBrandInfo = '#5bc0de'; 4export const themeBrandInfo = '#5bc0de';
5export const themeBrandWarning = '#FF9F00'; 5export const themeBrandWarning = '#FF9F00';
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 4f42b21b5..214437093 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,7 +1,7 @@
1{ 1{
2 "name": "@meetfranz/ui", 2 "name": "@meetfranz/ui",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "description": "React UI components for Franz", 4 "description": "React UI components for Ferdi",
5 "main": "lib/index.js", 5 "main": "lib/index.js",
6 "scripts": { 6 "scripts": {
7 "dev": "tsc -w", 7 "dev": "tsc -w",
diff --git a/screenshots/Ferdi-Todo.png b/screenshots/Ferdi-Todo.png
new file mode 100644
index 000000000..5bbacdfa0
--- /dev/null
+++ b/screenshots/Ferdi-Todo.png
Binary files differ
diff --git a/src/I18n.js b/src/I18n.js
index e33141576..14ee6599c 100644
--- a/src/I18n.js
+++ b/src/I18n.js
@@ -9,7 +9,7 @@ import UserStore from './stores/UserStore';
9 9
10export default @inject('stores') @observer class I18N extends Component { 10export default @inject('stores') @observer class I18N extends Component {
11 componentDidUpdate() { 11 componentDidUpdate() {
12 window.franz.menu.rebuild(); 12 window.ferdi.menu.rebuild();
13 } 13 }
14 14
15 render() { 15 render() {
@@ -18,7 +18,7 @@ export default @inject('stores') @observer class I18N extends Component {
18 return ( 18 return (
19 <IntlProvider 19 <IntlProvider
20 {...{ locale, key: locale, messages: translations[locale] }} 20 {...{ locale, key: locale, messages: translations[locale] }}
21 ref={(intlProvider) => { window.franz.intl = intlProvider ? intlProvider.getChildContext().intl : null; }} 21 ref={(intlProvider) => { window.ferdi.intl = intlProvider ? intlProvider.getChildContext().intl : null; }}
22 > 22 >
23 {children} 23 {children}
24 </IntlProvider> 24 </IntlProvider>
diff --git a/src/api/apiBase.js b/src/api/apiBase.js
new file mode 100644
index 000000000..e8d571171
--- /dev/null
+++ b/src/api/apiBase.js
@@ -0,0 +1,32 @@
1/**
2 * Get API base URL from store
3 */
4import {
5 API_VERSION,
6} from '../environment';
7
8const apiBase = () => {
9 let url;
10
11 if (!window.ferdi
12 || !window.ferdi.stores.settings
13 || !window.ferdi.stores.settings.all
14 || !window.ferdi.stores.settings.all.app.server) {
15 // Stores have not yet been loaded - send invalid URL to force a retry when stores are loaded
16 // "Why 1.1.1.1 as the default, invalid URL?"
17 // 1.1.1.1 is the server for Cloudflare's DNS service and will be the same across most networks.
18 // Using a random IP could result in unwanted connections, using localhost could unwantedly
19 // connect to local develoment servers.
20 // 1.1.1.1 also sends a status 400 response for invalid routes. Other servers may return status 401
21 // on some routes. This would result in Ferdi deleting its current authToken as it thinks it
22 // has gone invalid.
23 url = 'https://1.1.1.1';
24 } else {
25 // Load URL from store
26 url = window.ferdi.stores.settings.all.app.server;
27 }
28
29 return `${url}/${API_VERSION}`;
30};
31
32export default apiBase;
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js
index ab1604a27..c4abc00e9 100644
--- a/src/api/server/LocalApi.js
+++ b/src/api/server/LocalApi.js
@@ -3,7 +3,7 @@ import du from 'du';
3 3
4import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js'; 4import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js';
5 5
6const debug = require('debug')('Franz:LocalApi'); 6const debug = require('debug')('Ferdi:LocalApi');
7 7
8const { session } = remote; 8const { session } = remote;
9 9
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index f56c7b6e4..3d973e586 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -15,6 +15,7 @@ import OrderModel from '../../models/Order';
15import { sleep } from '../../helpers/async-helpers'; 15import { sleep } from '../../helpers/async-helpers';
16 16
17import { API } from '../../environment'; 17import { API } from '../../environment';
18import apiBase from '../apiBase';
18import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; 19import { prepareAuthRequest, sendAuthRequest } from '../utils/auth';
19 20
20import { 21import {
@@ -27,7 +28,7 @@ import {
27 removeServicePartitionDirectory, 28 removeServicePartitionDirectory,
28} from '../../helpers/service-helpers.js'; 29} from '../../helpers/service-helpers.js';
29 30
30const debug = require('debug')('Franz:ServerApi'); 31const debug = require('debug')('Ferdi:ServerApi');
31 32
32module.paths.unshift( 33module.paths.unshift(
33 getDevRecipeDirectory(), 34 getDevRecipeDirectory(),
@@ -38,8 +39,6 @@ const { app } = remote;
38const { default: fetch } = remote.require('electron-fetch'); 39const { default: fetch } = remote.require('electron-fetch');
39 40
40const SERVER_URL = API; 41const SERVER_URL = API;
41const API_VERSION = 'v1';
42const API_URL = `${SERVER_URL}/${API_VERSION}`;
43 42
44export default class ServerApi { 43export default class ServerApi {
45 recipePreviews = []; 44 recipePreviews = [];
@@ -48,7 +47,7 @@ export default class ServerApi {
48 47
49 // User 48 // User
50 async login(email, passwordHash) { 49 async login(email, passwordHash) {
51 const request = await sendAuthRequest(`${API_URL}/auth/login`, { 50 const request = await sendAuthRequest(`${apiBase()}/auth/login`, {
52 method: 'POST', 51 method: 'POST',
53 headers: { 52 headers: {
54 Authorization: `Basic ${window.btoa(`${email}:${passwordHash}`)}`, 53 Authorization: `Basic ${window.btoa(`${email}:${passwordHash}`)}`,
@@ -64,7 +63,7 @@ export default class ServerApi {
64 } 63 }
65 64
66 async signup(data) { 65 async signup(data) {
67 const request = await sendAuthRequest(`${API_URL}/auth/signup`, { 66 const request = await sendAuthRequest(`${apiBase()}/auth/signup`, {
68 method: 'POST', 67 method: 'POST',
69 body: JSON.stringify(data), 68 body: JSON.stringify(data),
70 }, false); 69 }, false);
@@ -78,7 +77,7 @@ export default class ServerApi {
78 } 77 }
79 78
80 async activateTrial(data) { 79 async activateTrial(data) {
81 const request = await sendAuthRequest(`${API_URL}/payment/trial`, { 80 const request = await sendAuthRequest(`${apiBase()}/payment/trial`, {
82 method: 'POST', 81 method: 'POST',
83 body: JSON.stringify(data), 82 body: JSON.stringify(data),
84 }); 83 });
@@ -92,7 +91,7 @@ export default class ServerApi {
92 } 91 }
93 92
94 async inviteUser(data) { 93 async inviteUser(data) {
95 const request = await sendAuthRequest(`${API_URL}/invite`, { 94 const request = await sendAuthRequest(`${apiBase()}/invite`, {
96 method: 'POST', 95 method: 'POST',
97 body: JSON.stringify(data), 96 body: JSON.stringify(data),
98 }); 97 });
@@ -105,7 +104,7 @@ export default class ServerApi {
105 } 104 }
106 105
107 async retrievePassword(email) { 106 async retrievePassword(email) {
108 const request = await sendAuthRequest(`${API_URL}/auth/password`, { 107 const request = await sendAuthRequest(`${apiBase()}/auth/password`, {
109 method: 'POST', 108 method: 'POST',
110 body: JSON.stringify({ 109 body: JSON.stringify({
111 email, 110 email,
@@ -121,7 +120,7 @@ export default class ServerApi {
121 } 120 }
122 121
123 async userInfo() { 122 async userInfo() {
124 const request = await sendAuthRequest(`${API_URL}/me`); 123 const request = await sendAuthRequest(`${apiBase()}/me`);
125 if (!request.ok) { 124 if (!request.ok) {
126 throw request; 125 throw request;
127 } 126 }
@@ -134,7 +133,7 @@ export default class ServerApi {
134 } 133 }
135 134
136 async updateUserInfo(data) { 135 async updateUserInfo(data) {
137 const request = await sendAuthRequest(`${API_URL}/me`, { 136 const request = await sendAuthRequest(`${apiBase()}/me`, {
138 method: 'PUT', 137 method: 'PUT',
139 body: JSON.stringify(data), 138 body: JSON.stringify(data),
140 }); 139 });
@@ -149,7 +148,7 @@ export default class ServerApi {
149 } 148 }
150 149
151 async deleteAccount() { 150 async deleteAccount() {
152 const request = await sendAuthRequest(`${API_URL}/me`, { 151 const request = await sendAuthRequest(`${apiBase()}/me`, {
153 method: 'DELETE', 152 method: 'DELETE',
154 }); 153 });
155 if (!request.ok) { 154 if (!request.ok) {
@@ -163,7 +162,7 @@ export default class ServerApi {
163 162
164 // Services 163 // Services
165 async getServices() { 164 async getServices() {
166 const request = await sendAuthRequest(`${API_URL}/me/services`); 165 const request = await sendAuthRequest(`${apiBase()}/me/services`);
167 if (!request.ok) { 166 if (!request.ok) {
168 throw request; 167 throw request;
169 } 168 }
@@ -176,7 +175,7 @@ export default class ServerApi {
176 } 175 }
177 176
178 async createService(recipeId, data) { 177 async createService(recipeId, data) {
179 const request = await sendAuthRequest(`${API_URL}/service`, { 178 const request = await sendAuthRequest(`${apiBase()}/service`, {
180 method: 'POST', 179 method: 'POST',
181 body: JSON.stringify(Object.assign({ 180 body: JSON.stringify(Object.assign({
182 recipeId, 181 recipeId,
@@ -206,7 +205,7 @@ export default class ServerApi {
206 await this.uploadServiceIcon(serviceId, data.iconFile); 205 await this.uploadServiceIcon(serviceId, data.iconFile);
207 } 206 }
208 207
209 const request = await sendAuthRequest(`${API_URL}/service/${serviceId}`, { 208 const request = await sendAuthRequest(`${apiBase()}/service/${serviceId}`, {
210 method: 'PUT', 209 method: 'PUT',
211 body: JSON.stringify(data), 210 body: JSON.stringify(data),
212 }); 211 });
@@ -234,7 +233,7 @@ export default class ServerApi {
234 233
235 delete requestData.headers['Content-Type']; 234 delete requestData.headers['Content-Type'];
236 235
237 const request = await window.fetch(`${API_URL}/service/${serviceId}`, requestData); 236 const request = await window.fetch(`${apiBase()}/service/${serviceId}`, requestData);
238 237
239 if (!request.ok) { 238 if (!request.ok) {
240 throw request; 239 throw request;
@@ -246,7 +245,7 @@ export default class ServerApi {
246 } 245 }
247 246
248 async reorderService(data) { 247 async reorderService(data) {
249 const request = await sendAuthRequest(`${API_URL}/service/reorder`, { 248 const request = await sendAuthRequest(`${apiBase()}/service/reorder`, {
250 method: 'PUT', 249 method: 'PUT',
251 body: JSON.stringify(data), 250 body: JSON.stringify(data),
252 }); 251 });
@@ -259,7 +258,7 @@ export default class ServerApi {
259 } 258 }
260 259
261 async deleteService(id) { 260 async deleteService(id) {
262 const request = await sendAuthRequest(`${API_URL}/service/${id}`, { 261 const request = await sendAuthRequest(`${apiBase()}/service/${id}`, {
263 method: 'DELETE', 262 method: 'DELETE',
264 }); 263 });
265 if (!request.ok) { 264 if (!request.ok) {
@@ -275,7 +274,7 @@ export default class ServerApi {
275 274
276 // Features 275 // Features
277 async getDefaultFeatures() { 276 async getDefaultFeatures() {
278 const request = await sendAuthRequest(`${API_URL}/features/default`); 277 const request = await sendAuthRequest(`${apiBase()}/features/default`);
279 if (!request.ok) { 278 if (!request.ok) {
280 throw request; 279 throw request;
281 } 280 }
@@ -287,7 +286,7 @@ export default class ServerApi {
287 } 286 }
288 287
289 async getFeatures() { 288 async getFeatures() {
290 const request = await sendAuthRequest(`${API_URL}/features`); 289 const request = await sendAuthRequest(`${apiBase()}/features`);
291 if (!request.ok) { 290 if (!request.ok) {
292 throw request; 291 throw request;
293 } 292 }
@@ -321,7 +320,7 @@ export default class ServerApi {
321 } 320 }
322 321
323 async getRecipeUpdates(recipeVersions) { 322 async getRecipeUpdates(recipeVersions) {
324 const request = await sendAuthRequest(`${API_URL}/recipes/update`, { 323 const request = await sendAuthRequest(`${apiBase()}/recipes/update`, {
325 method: 'POST', 324 method: 'POST',
326 body: JSON.stringify(recipeVersions), 325 body: JSON.stringify(recipeVersions),
327 }); 326 });
@@ -335,7 +334,7 @@ export default class ServerApi {
335 334
336 // Recipes Previews 335 // Recipes Previews
337 async getRecipePreviews() { 336 async getRecipePreviews() {
338 const request = await sendAuthRequest(`${API_URL}/recipes`); 337 const request = await sendAuthRequest(`${apiBase()}/recipes`);
339 if (!request.ok) throw request; 338 if (!request.ok) throw request;
340 const data = await request.json(); 339 const data = await request.json();
341 const recipePreviews = this._mapRecipePreviewModel(data); 340 const recipePreviews = this._mapRecipePreviewModel(data);
@@ -344,7 +343,7 @@ export default class ServerApi {
344 } 343 }
345 344
346 async getFeaturedRecipePreviews() { 345 async getFeaturedRecipePreviews() {
347 const request = await sendAuthRequest(`${API_URL}/recipes/popular`); 346 const request = await sendAuthRequest(`${apiBase()}/recipes/popular`);
348 if (!request.ok) throw request; 347 if (!request.ok) throw request;
349 348
350 const data = await request.json(); 349 const data = await request.json();
@@ -356,7 +355,7 @@ export default class ServerApi {
356 } 355 }
357 356
358 async searchRecipePreviews(needle) { 357 async searchRecipePreviews(needle) {
359 const url = `${API_URL}/recipes/search?needle=${needle}`; 358 const url = `${apiBase()}/recipes/search?needle=${needle}`;
360 const request = await sendAuthRequest(url); 359 const request = await sendAuthRequest(url);
361 if (!request.ok) throw request; 360 if (!request.ok) throw request;
362 361
@@ -371,7 +370,7 @@ export default class ServerApi {
371 const recipesDirectory = path.join(app.getPath('userData'), 'recipes'); 370 const recipesDirectory = path.join(app.getPath('userData'), 'recipes');
372 const recipeTempDirectory = path.join(recipesDirectory, 'temp', recipeId); 371 const recipeTempDirectory = path.join(recipesDirectory, 'temp', recipeId);
373 const archivePath = path.join(recipeTempDirectory, 'recipe.tar.gz'); 372 const archivePath = path.join(recipeTempDirectory, 'recipe.tar.gz');
374 const packageUrl = `${API_URL}/recipes/download/${recipeId}`; 373 const packageUrl = `${apiBase()}/recipes/download/${recipeId}`;
375 374
376 fs.ensureDirSync(recipeTempDirectory); 375 fs.ensureDirSync(recipeTempDirectory);
377 const res = await fetch(packageUrl); 376 const res = await fetch(packageUrl);
@@ -408,7 +407,7 @@ export default class ServerApi {
408 407
409 // Payment 408 // Payment
410 async getPlans() { 409 async getPlans() {
411 const request = await sendAuthRequest(`${API_URL}/payment/plans`); 410 const request = await sendAuthRequest(`${apiBase()}/payment/plans`);
412 if (!request.ok) throw request; 411 if (!request.ok) throw request;
413 const data = await request.json(); 412 const data = await request.json();
414 const plan = new PlanModel(data); 413 const plan = new PlanModel(data);
@@ -417,7 +416,7 @@ export default class ServerApi {
417 } 416 }
418 417
419 async getHostedPage(planId) { 418 async getHostedPage(planId) {
420 const request = await sendAuthRequest(`${API_URL}/payment/init`, { 419 const request = await sendAuthRequest(`${apiBase()}/payment/init`, {
421 method: 'POST', 420 method: 'POST',
422 body: JSON.stringify({ 421 body: JSON.stringify({
423 planId, 422 planId,
@@ -434,7 +433,7 @@ export default class ServerApi {
434 433
435 // News 434 // News
436 async getLatestNews() { 435 async getLatestNews() {
437 const url = `${API_URL}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`; 436 const url = `${apiBase()}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`;
438 const request = await sendAuthRequest(url); 437 const request = await sendAuthRequest(url);
439 if (!request.ok) throw request; 438 if (!request.ok) throw request;
440 const data = await request.json(); 439 const data = await request.json();
@@ -444,7 +443,7 @@ export default class ServerApi {
444 } 443 }
445 444
446 async hideNews(id) { 445 async hideNews(id) {
447 const request = await sendAuthRequest(`${API_URL}/news/${id}/read`); 446 const request = await sendAuthRequest(`${apiBase()}/news/${id}/read`);
448 if (!request.ok) throw request; 447 if (!request.ok) throw request;
449 debug('ServerApi::hideNews resolves', id); 448 debug('ServerApi::hideNews resolves', id);
450 } 449 }
@@ -469,7 +468,7 @@ export default class ServerApi {
469 if (Object.prototype.hasOwnProperty.call(config, 'services')) { 468 if (Object.prototype.hasOwnProperty.call(config, 'services')) {
470 const services = await Promise.all(config.services.map(async (s) => { 469 const services = await Promise.all(config.services.map(async (s) => {
471 const service = s; 470 const service = s;
472 const request = await sendAuthRequest(`${API_URL}/recipes/${s.service}`); 471 const request = await sendAuthRequest(`${apiBase()}/recipes/${s.service}`);
473 472
474 if (request.status === 200) { 473 if (request.status === 200) {
475 const data = await request.json(); 474 const data = await request.json();
diff --git a/src/app.js b/src/app.js
index cb3e37c64..e16c01456 100644
--- a/src/app.js
+++ b/src/app.js
@@ -18,7 +18,6 @@ import apiFactory from './api';
18import actions from './actions'; 18import actions from './actions';
19import MenuFactory from './lib/Menu'; 19import MenuFactory from './lib/Menu';
20import TouchBarFactory from './lib/TouchBar'; 20import TouchBarFactory from './lib/TouchBar';
21import * as analytics from './lib/analytics';
22 21
23import I18N from './I18n'; 22import I18N from './I18n';
24import AppLayoutContainer from './containers/layout/AppLayoutContainer'; 23import AppLayoutContainer from './containers/layout/AppLayoutContainer';
@@ -33,6 +32,7 @@ import EditSettingsScreen from './containers/settings/EditSettingsScreen';
33import InviteSettingsScreen from './containers/settings/InviteScreen'; 32import InviteSettingsScreen from './containers/settings/InviteScreen';
34import WelcomeScreen from './containers/auth/WelcomeScreen'; 33import WelcomeScreen from './containers/auth/WelcomeScreen';
35import LoginScreen from './containers/auth/LoginScreen'; 34import LoginScreen from './containers/auth/LoginScreen';
35import LockedScreen from './containers/auth/LockedScreen';
36import PasswordScreen from './containers/auth/PasswordScreen'; 36import PasswordScreen from './containers/auth/PasswordScreen';
37import SignupScreen from './containers/auth/SignupScreen'; 37import SignupScreen from './containers/auth/SignupScreen';
38import ImportScreen from './containers/auth/ImportScreen'; 38import ImportScreen from './containers/auth/ImportScreen';
@@ -54,20 +54,20 @@ webFrame.setVisualZoomLevelLimits(1, 1);
54webFrame.setLayoutZoomLevelLimits(0, 0); 54webFrame.setLayoutZoomLevelLimits(0, 0);
55 55
56window.addEventListener('load', () => { 56window.addEventListener('load', () => {
57 const api = apiFactory(new ServerApi(), new LocalApi()); 57 const serverApi = new ServerApi();
58 const api = apiFactory(serverApi, new LocalApi());
58 const router = new RouterStore(); 59 const router = new RouterStore();
59 const history = syncHistoryWithStore(hashHistory, router);
60 const stores = storeFactory(api, actions, router); 60 const stores = storeFactory(api, actions, router);
61 const history = syncHistoryWithStore(hashHistory, router);
61 const menu = new MenuFactory(stores, actions); 62 const menu = new MenuFactory(stores, actions);
62 const touchBar = new TouchBarFactory(stores, actions); 63 const touchBar = new TouchBarFactory(stores, actions);
63 64
64 window.franz = { 65 window.ferdi = {
65 stores, 66 stores,
66 actions, 67 actions,
67 api, 68 api,
68 menu, 69 menu,
69 touchBar, 70 touchBar,
70 analytics,
71 features: {}, 71 features: {},
72 render() { 72 render() {
73 const preparedApp = ( 73 const preparedApp = (
@@ -95,6 +95,7 @@ window.addEventListener('load', () => {
95 <IndexRedirect to="/auth/welcome" /> 95 <IndexRedirect to="/auth/welcome" />
96 <Route path="/auth/welcome" component={WelcomeScreen} /> 96 <Route path="/auth/welcome" component={WelcomeScreen} />
97 <Route path="/auth/login" component={LoginScreen} /> 97 <Route path="/auth/login" component={LoginScreen} />
98 <Route path="/auth/locked" component={LockedScreen} />
98 <Route path="/auth/signup"> 99 <Route path="/auth/signup">
99 <IndexRedirect to="/auth/signup/form" /> 100 <IndexRedirect to="/auth/signup/form" />
100 <Route path="/auth/signup/form" component={SignupScreen} /> 101 <Route path="/auth/signup/form" component={SignupScreen} />
@@ -114,7 +115,7 @@ window.addEventListener('load', () => {
114 render(preparedApp, document.getElementById('root')); 115 render(preparedApp, document.getElementById('root'));
115 }, 116 },
116 }; 117 };
117 window.franz.render(); 118 window.ferdi.render();
118}); 119});
119 120
120// Prevent drag and drop into window from redirecting 121// Prevent drag and drop into window from redirecting
diff --git a/src/assets/images/adlk.svg b/src/assets/images/adlk.svg
index eb50f345a..fac6e1051 100644
--- a/src/assets/images/adlk.svg
+++ b/src/assets/images/adlk.svg
@@ -1,53 +1,19 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg width="120px" height="65px" viewBox="0 0 120 65" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 <!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch --> 3<svg width="100%" height="100%" viewBox="0 0 120 65" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
4 <title>adlk-group</title> 4 <g id="adlk-group" transform="matrix(1,0,0,1,3,1)">
5 <desc>Created with Sketch.</desc> 5 <g id="Page-1" transform="matrix(1,-0,-0,1,-3,-1)">
6 <defs> 6 <use xlink:href="#_Image1" x="35.255" y="0" width="84.82px" height="65px" transform="matrix(0.997877,0,0,1,0,0)"/>
7 <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-1"> 7 </g>
8 <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> 8 <g id="Fill-1" transform="matrix(1,0,0,1,2,1)">
9 <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> 9 <path id="path-3" d="M29.567,59.968C13.238,59.968 0,46.73 0,30.4C0,14.071 13.238,0.833 29.567,0.833C45.897,0.833 59.134,14.071 59.134,30.4C59.134,46.73 45.897,59.968 29.567,59.968Z"/>
10 <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix> 10 <path id="path-31" serif:id="path-3" d="M29.567,59.968C13.238,59.968 0,46.73 0,30.4C0,14.071 13.238,0.833 29.567,0.833C45.897,0.833 59.134,14.071 59.134,30.4C59.134,46.73 45.897,59.968 29.567,59.968Z" style="fill:rgb(229,31,91);stroke:white;stroke-width:2.5px;"/>
11 <feMerge> 11 </g>
12 <feMergeNode in="shadowMatrixOuter1"></feMergeNode> 12 <g transform="matrix(0.576271,0,0,0.547458,9.9661,14.2627)">
13 <feMergeNode in="SourceGraphic"></feMergeNode> 13 <path d="M36.5,21.601C42.711,5 55.132,5 61.342,10.9C67.553,16.8 67.553,28.6 61.342,40.4C56.995,49.25 45.816,58.1 36.5,64C27.184,58.1 16.005,49.25 11.658,40.4C5.447,28.6 5.447,16.8 11.658,10.9C17.868,5 30.289,5 36.5,21.601Z" style="fill:white;"/>
14 </feMerge>
15 </filter>
16 <linearGradient x1="30.4719662%" y1="95.2408507%" x2="68.063052%" y2="3.5648771%" id="linearGradient-2">
17 <stop stop-color="#318CC8" offset="0%"></stop>
18 <stop stop-color="#5EC0FF" offset="100%"></stop>
19 </linearGradient>
20 <path d="M29.5671186,59.9675705 C13.237647,59.9675705 0,46.7299236 0,30.4004519 C0,14.0709803 13.237647,0.833333333 29.5671186,0.833333333 C45.8965902,0.833333333 59.1342372,14.0709803 59.1342372,30.4004519 C59.1342372,46.7299236 45.8965902,59.9675705 29.5671186,59.9675705 Z" id="path-3"></path>
21 <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-4">
22 <feMorphology radius="1.25" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
23 <feOffset dx="0" dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
24 <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
25 <feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
26 <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
27 </filter>
28 </defs>
29 <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
30 <g id="logo" transform="translate(-1.000000, 0.000000)">
31 <g id="adlk-group" transform="translate(4.000000, 1.000000)">
32 <g id="Page-1" filter="url(#filter-1)" transform="translate(53.333333, 0.000000)">
33 <path d="M29.951734,59.6153846 C13.6222624,59.6153846 0.384615385,46.3777376 0.384615385,30.048266 C0.384615385,13.7187944 13.6222624,0.481147424 29.951734,0.481147424 C46.2812056,0.481147424 59.5188526,13.7187944 59.5188526,30.048266 C59.5188526,46.3777376 46.2812056,59.6153846 29.951734,59.6153846 Z" id="Fill-1" stroke="#FFFFFF" stroke-width="2.5" fill="url(#linearGradient-2)"></path>
34 <path d="M40.8193218,39.7759515 C40.2991334,39.7759515 39.777752,39.7461242 39.2560451,39.6885303 L39.2560451,43.1660699 C39.2560451,44.2684875 40.4320006,44.8564652 42.0489665,44.8564652 C43.6659324,44.8564652 47.3407661,45.1505083 48.8106562,42.5780922 C49.5666431,41.2550609 50.049954,39.777253 50.341611,38.5380637 C47.7706048,39.3483905 44.5464347,39.7759515 40.8193218,39.7759515" id="Fill-3" fill="#FEFEFE"></path>
35 <path d="M50.721253,36.0215602 C50.7213615,36.014727 50.7215784,36.0067007 50.7215784,36.0001929 C50.7215784,35.7047398 50.6497759,34.0216115 50.5562809,31.8479052 C50.5492308,31.8480137 50.5428315,31.8482306 50.5356729,31.8482306 C48.6476581,31.8482306 45.8548452,30.9165338 44.4370173,29.8136823 C44.0945997,29.5474057 43.7123762,29.1917557 43.3041216,28.7844772 C41.4215299,31.2340049 39.6248409,34.689418 39.3072613,37.4257217 C39.8033709,37.4891725 40.3081576,37.5235553 40.8193435,37.5235553 C44.8576366,37.5235553 48.2724847,36.9929545 50.721253,36.0215602" id="Fill-5" fill="#FEFEFE"></path>
36 <path d="M45.8200177,28.0358333 C46.832411,28.8233829 49.0605657,29.5681981 50.4596295,29.5945546 C50.3027921,25.9124538 50.1335898,21.76201 50.1335898,20.3820357 C50.1335898,17.809728 50.2079954,15.494586 49.3986448,15.494586 C47.3407769,15.494586 47.8552168,24.4244504 45.2828006,26.6292856 C45.1214077,26.7676843 44.956544,26.9196409 44.7892941,27.0838539 C45.1781339,27.4760559 45.5348686,27.8140265 45.8200177,28.0358333" id="Fill-7" fill="#FEFEFE"></path>
37 <path d="M10.0610578,29.5501499 C11.4368021,29.3757414 13.2421681,28.7220351 14.1242974,28.0358984 C14.475609,27.7625717 14.9354919,27.3128843 15.4306254,26.8023491 C15.3653307,26.7431283 15.3002529,26.6843414 15.2360428,26.6293506 C12.6636267,24.424407 13.1780665,15.4945426 11.1201987,15.4945426 C10.3109565,15.4945426 10.3852536,17.8096846 10.3852536,20.3821008 C10.3852536,21.756435 10.2173529,25.8792208 10.0610578,29.5501499" id="Fill-9" fill="#FEFEFE"></path>
38 <path d="M21.2005731,37.3395804 C20.8402592,34.4934037 18.9129807,30.8970972 16.9604304,28.4603682 C16.4311312,29.0030084 15.9377331,29.4788355 15.5071352,29.8137691 C14.2229336,30.812713 11.8100665,31.6713058 9.96359298,31.8240217 C9.86966405,34.0092251 9.79721079,35.7036335 9.79721079,36.0001713 C9.79721079,36.0653575 9.80024775,36.1457286 9.80577936,36.2371628 C12.2015093,37.0708092 15.3970452,37.5235336 19.1249174,37.5235336 C19.8311197,37.5235336 20.5248489,37.4573712 21.2005731,37.3395804" id="Fill-11" fill="#FEFEFE"></path>
39 <path d="M19.1249499,39.7759515 C15.6917717,39.7759515 12.6843105,39.4137936 10.2218758,38.7234269 C10.517329,39.9228103 10.9894682,41.3204641 11.7081439,42.5780922 C13.1781424,45.1505083 16.8529762,44.8564652 18.4698336,44.8564652 C20.0867995,44.8564652 21.262755,44.2684875 21.262755,43.1660699 L21.262755,39.6133655 C20.549394,39.7209608 19.8361416,39.7759515 19.1249499,39.7759515" id="Fill-13" fill="#FEFEFE"></path>
40 <path d="M52.954538,31.2252844 C52.5192762,31.2252844 52.057007,31.3746379 51.5802038,31.6691149 C51.5121975,31.7110901 51.2357254,31.8481872 50.5357054,31.8481872 C48.6475821,31.8481872 45.8548777,30.9165988 44.4370498,29.8137474 C43.7290036,29.2630809 42.8517551,28.3324687 41.9229867,27.3472996 C39.9696772,25.2753315 38.1247221,23.3183342 36.5281473,23.3183342 C35.3931908,23.3183342 34.0862121,23.8471997 32.8221847,24.3588195 C31.7693347,24.784862 30.6805834,25.2254386 29.9721033,25.2254386 C29.2636232,25.2254386 28.1749804,24.784862 27.1221304,24.3588195 C25.858103,23.8471997 24.5510158,23.3183342 23.4161678,23.3183342 C21.8194845,23.3183342 19.974421,25.27544 18.0212199,27.347408 C17.0924515,28.3325771 16.2152031,29.2630809 15.5071568,29.8137474 C14.0895459,30.9164904 11.296733,31.8480788 9.40850121,31.8481872 C8.7085897,31.8481872 8.4321176,31.7110901 8.36411132,31.6691149 C7.88730812,31.3746379 7.4249305,31.2252844 6.98977708,31.2252844 C6.3738159,31.2252844 5.85416983,31.547311 5.63366462,32.0656555 C5.36185643,32.7047193 5.58821864,33.4896658 6.23899643,34.1654985 C8.29393578,36.2996158 12.9907076,37.5235119 19.1249391,37.5235119 C23.1527113,37.5235119 26.7888237,35.4106533 28.8485355,33.4333735 C29.2664433,33.0322774 29.8115781,33.0118864 29.9165703,33.0118864 L29.9199326,33.0114525 L29.9396729,33.0186111 L30.0136446,33.0121033 L30.0276364,33.0118864 C30.1326285,33.0118864 30.6778718,33.0322774 31.0957796,33.4333735 C33.1554914,35.4106533 36.7914954,37.5235119 40.8192676,37.5235119 C46.9534991,37.5235119 51.6502709,36.2996158 53.7053187,34.1654985 C54.3560965,33.4897742 54.5822418,32.7047193 54.310542,32.0656555 C54.0900368,31.547311 53.5703908,31.2252844 52.954538,31.2252844" id="Fill-15" fill="#FEFEFE"></path>
41 </g>
42 <g id="Fill-1">
43 <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
44 <use stroke="#FFFFFF" stroke-width="2.5" fill="#E51F5B" fill-rule="evenodd" xlink:href="#path-3"></use>
45 </g>
46 <path d="M18.53613,36.1383525 C18.402105,36.1383525 18.134205,36.1215525 17.882955,36.0378525 C17.531205,35.9373525 17.045505,35.6693775 16.44258,34.1787525 C15.42093,31.6330275 12.79143,24.7158525 12.54018,24.0794775 C12.339255,23.5602525 12.272205,23.4764775 12.171705,23.4764775 C12.071205,23.4764775 12.00423,23.5769775 11.803305,24.1297275 L8.001405,34.5305025 C7.699905,35.3679525 7.364955,36.0043275 6.59448,36.1048275 C6.46053,36.1215525 6.30978,36.1383525 6.192555,36.1383525 C6.041805,36.1383525 5.95803,36.1718025 5.95803,36.2388525 C5.95803,36.3393525 6.05853,36.3728025 6.276255,36.3728025 C7.063455,36.3728025 7.984605,36.3225525 8.16888,36.3225525 C8.35308,36.3225525 9.023055,36.3728025 9.42498,36.3728025 C9.57573,36.3728025 9.72648,36.3393525 9.72648,36.2388525 C9.72648,36.1718025 9.67623,36.1383525 9.508755,36.1383525 L9.358005,36.1383525 C9.073305,36.1383525 8.755005,35.9876025 8.755005,35.6525775 C8.755005,35.3511525 8.83878,34.9492275 8.98953,34.5305025 L11.76978,26.1897525 C11.85348,25.9385025 11.937255,25.9385025 12.020955,26.1897525 L15.47118,35.6525775 C15.57168,35.9206275 15.47118,36.0713025 15.37068,36.1048275 C15.303705,36.1215525 15.253455,36.1550775 15.253455,36.2220525 C15.253455,36.3225525 15.437655,36.3225525 15.75588,36.3393525 C16.911555,36.3728025 18.134205,36.3728025 18.38538,36.3728025 C18.569655,36.3728025 18.720405,36.3393525 18.720405,36.2388525 C18.720405,36.1550775 18.63663,36.1383525 18.53613,36.1383525" id="Fill-3" fill="#FEFEFE"></path>
47 <path d="M22.0194975,30.37683 C22.0194975,32.15223 22.0362225,33.693105 22.0530225,34.011255 C22.0697475,34.42998 22.1032725,35.099955 22.2372225,35.284155 C22.4549475,35.60238 23.1081225,35.954055 25.0844475,35.954055 C26.6420475,35.954055 28.0824225,35.384655 29.0706225,34.39653 C29.9415225,33.54228 30.4104225,31.934505 30.4104225,30.39363 C30.4104225,28.266555 29.4892725,26.893155 28.8025725,26.173005 C27.2282475,24.514905 25.3189725,24.280455 23.3258475,24.280455 C22.9908975,24.280455 22.3711725,24.330705 22.2372225,24.397605 C22.0864725,24.464655 22.0362225,24.548355 22.0362225,24.73263 C22.0194975,25.302105 22.0194975,27.01038 22.0194975,28.30008 L22.0194975,30.37683 Z M20.6126475,28.568055 C20.6126475,25.95528 20.6126475,25.486305 20.5791225,24.950355 C20.5456725,24.380955 20.4618975,24.112905 19.9092225,23.99568 C19.7751975,23.96223 19.4904975,23.94543 19.3397475,23.94543 C19.2225225,23.94543 19.1554725,23.91198 19.1554725,23.84493 C19.1554725,23.74443 19.2392475,23.71098 19.4235225,23.71098 C20.1771975,23.71098 21.2322975,23.76123 21.3160725,23.76123 C21.5170725,23.76123 22.5721725,23.71098 23.5770975,23.71098 C25.2351975,23.71098 28.3001475,23.56023 30.2932725,25.620255 C31.1307225,26.491155 31.9177725,27.881355 31.9177725,29.874405 C31.9177725,31.98468 31.0469475,33.60933 30.1089975,34.597455 C29.3887725,35.35113 27.8814225,36.52353 25.0341975,36.52353 C24.3140475,36.52353 23.4263475,36.47328 22.7061975,36.42303 C21.9692475,36.37278 21.3997725,36.32253 21.3160725,36.32253 C21.2825475,36.32253 20.9978475,36.32253 20.6460975,36.33933 C20.3111475,36.33933 19.9259475,36.37278 19.6746975,36.37278 C19.4904975,36.37278 19.4067225,36.33933 19.4067225,36.23883 C19.4067225,36.18858 19.4402475,36.13833 19.5741975,36.13833 C19.7584725,36.121605 19.8924225,36.104805 20.0431725,36.071355 C20.3781225,36.004305 20.4618975,35.63583 20.5288725,35.150205 C20.6126475,34.44678 20.6126475,33.12363 20.6126475,31.51578 L20.6126475,28.568055 Z" id="Fill-5" fill="#FEFEFE"></path>
48 <path d="M35.61885,31.54929 C35.61885,34.01124 35.685825,35.08314 35.98725,35.38464 C36.2553,35.652615 36.690675,35.76984 37.997025,35.76984 C38.884725,35.76984 39.621675,35.753115 40.0236,35.267415 C40.241325,34.99944 40.408875,34.580715 40.459125,34.26249 C40.47585,34.12854 40.509375,34.044765 40.609875,34.044765 C40.69365,34.044765 40.710375,34.11174 40.710375,34.296015 C40.710375,34.480215 40.59315,35.48514 40.459125,35.97084 C40.341975,36.35604 40.291575,36.423015 39.404025,36.423015 C37.96365,36.423015 36.539925,36.32259 34.915425,36.32259 C34.396125,36.32259 33.8937,36.372765 33.27405,36.372765 C33.089775,36.372765 33.006,36.339315 33.006,36.238815 C33.006,36.188565 33.039525,36.13839 33.140025,36.13839 C33.290775,36.13839 33.491775,36.10479 33.64245,36.07134 C33.977475,36.00429 34.06125,35.635815 34.128225,35.15019 C34.212,34.446765 34.212,33.123615 34.212,31.515765 L34.212,28.56804 C34.212,25.955265 34.212,25.48629 34.178475,24.950415 C34.14495,24.38094 34.011075,24.112965 33.458175,23.995665 C33.3243,23.962215 33.039525,23.945415 32.88885,23.945415 C32.821875,23.945415 32.75475,23.911965 32.75475,23.844915 C32.75475,23.74449 32.8386,23.710965 33.022875,23.710965 C33.77655,23.710965 34.83165,23.761215 34.915425,23.761215 C34.99905,23.761215 36.221775,23.710965 36.7242,23.710965 C36.908475,23.710965 36.992175,23.74449 36.992175,23.844915 C36.992175,23.911965 36.9252,23.945415 36.858225,23.945415 C36.740925,23.945415 36.50655,23.962215 36.30555,23.995665 C35.81985,24.07944 35.685825,24.36414 35.652225,24.950415 C35.61885,25.48629 35.61885,25.955265 35.61885,28.56804 L35.61885,31.54929 Z" id="Fill-7" fill="#FEFEFE"></path>
49 <path d="M44.428275,29.63994 C44.947575,29.137515 47.2254,26.74239 48.246975,25.68729 C49.251825,24.64884 49.31895,24.48144 49.31895,24.28044 C49.31895,24.146415 49.235175,24.012465 49.10115,23.962215 C48.983925,23.911965 48.9504,23.878515 48.9504,23.811465 C48.9504,23.74449 49.0509,23.710965 49.20165,23.710965 C49.68735,23.710965 49.6371,23.761215 50.2065,23.761215 C50.7258,23.761215 51.71385,23.710965 51.9819,23.710965 C52.216425,23.710965 52.266675,23.761215 52.266675,23.828265 C52.266675,23.895165 52.233075,23.928765 52.0824,23.945415 C51.76425,23.979015 51.46275,24.045915 51.228225,24.146415 C50.809425,24.31389 50.491275,24.51489 49.48635,25.48629 C48.01245,26.90994 46.103175,28.80249 45.66765,29.288265 C46.722825,30.443865 49.771125,33.542265 50.558175,34.279215 C51.93165,35.568915 52.51785,35.93739 53.321775,36.08814 C53.472525,36.12159 53.639925,36.13839 53.80755,36.13839 C53.941425,36.13839 54.041925,36.17184 54.041925,36.25554 C54.041925,36.339315 53.97495,36.372765 53.790675,36.372765 L52.5513,36.372765 C51.0942,36.372765 50.708925,36.188565 49.921875,35.568915 C48.916875,34.781715 45.902175,31.54929 44.428275,29.79069 L44.428275,31.515765 C44.428275,33.123615 44.428275,34.446765 44.51205,35.15019 C44.5623,35.635815 44.6628,36.00429 45.165225,36.07134 C45.39975,36.10479 45.734775,36.13839 45.835275,36.13839 C45.986025,36.13839 46.0362,36.20529 46.0362,36.25554 C46.0362,36.339315 45.96915,36.372765 45.785025,36.372765 C44.8638,36.372765 43.808625,36.32259 43.72485,36.32259 C43.641225,36.32259 42.653025,36.372765 42.1506,36.372765 C41.966325,36.372765 41.88255,36.35604 41.88255,36.25554 C41.88255,36.20529 41.916075,36.13839 42.066825,36.13839 C42.167325,36.13839 42.3516,36.12159 42.502275,36.08814 C42.8373,36.02109 42.9378,35.635815 43.004775,35.15019 C43.08855,34.446765 43.08855,33.123615 43.08855,31.515765 L43.08855,28.56804 C43.08855,25.955265 43.08855,25.48629 43.05495,24.950415 C43.021425,24.38094 42.854025,24.096165 42.485475,24.012465 C42.30135,23.962215 41.99985,23.945415 41.88255,23.945415 C41.7486,23.945415 41.698425,23.911965 41.698425,23.844915 C41.698425,23.74449 41.78205,23.710965 41.966325,23.710965 C42.519,23.710965 43.641225,23.761215 43.72485,23.761215 C43.808625,23.761215 44.8638,23.710965 45.366225,23.710965 C45.5505,23.710965 45.634275,23.74449 45.634275,23.828265 C45.634275,23.895165 45.60075,23.928765 45.45,23.945415 C45.265725,23.962215 45.249,23.962215 45.0816,23.979015 C44.629275,24.02919 44.4954,24.36414 44.4618,24.950415 C44.428275,25.48629 44.428275,25.955265 44.428275,28.56804 L44.428275,29.63994 Z" id="Fill-9" fill="#FEFEFE"></path>
50 </g>
51 </g> 14 </g>
52 </g> 15 </g>
53</svg> \ No newline at end of file 16 <defs>
17 <image id="_Image1" width="85px" height="65px" xlink:href="data:image/png;base64,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"/>
18 </defs>
19</svg>
diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg
index 87188f4aa..7f6df3ae4 100644
--- a/src/assets/images/logo.svg
+++ b/src/assets/images/logo.svg
@@ -1,35 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg width="80px" height="80px" viewBox="0 0 80 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 <!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch --> 3<svg width="100%" height="100%" viewBox="0 0 1000 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
4 <title>franz</title> 4 <use id="Page-1" xlink:href="#_Image1" x="0" y="0" width="1000px" height="1000px"/>
5 <desc>Created with Sketch.</desc>
6 <defs> 5 <defs>
7 <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-1"> 6 <image id="_Image1" width="1000px" height="1000px" xlink:href="data:image/png;base64,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"/>
8 <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
9 <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
10 <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
11 <feMerge>
12 <feMergeNode in="shadowMatrixOuter1"></feMergeNode>
13 <feMergeNode in="SourceGraphic"></feMergeNode>
14 </feMerge>
15 </filter>
16 <linearGradient x1="30.4719662%" y1="95.2408507%" x2="68.063052%" y2="3.5648771%" id="linearGradient-2">
17 <stop stop-color="#318CC8" offset="0%"></stop>
18 <stop stop-color="#5EC0FF" offset="100%"></stop>
19 </linearGradient>
20 </defs> 7 </defs>
21 <g id="icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 8</svg>
22 <g id="franz">
23 <g id="Page-1" filter="url(#filter-1)" transform="translate(4.000000, 4.000000)">
24 <path d="M35.9420808,71.5384615 C16.3467148,71.5384615 0.461538462,55.6532852 0.461538462,36.0579192 C0.461538462,16.4625533 16.3467148,0.577376909 35.9420808,0.577376909 C55.5374467,0.577376909 71.4226231,16.4625533 71.4226231,36.0579192 C71.4226231,55.6532852 55.5374467,71.5384615 35.9420808,71.5384615 Z" id="Fill-1" stroke="#FFFFFF" stroke-width="2.5" fill="url(#linearGradient-2)"></path>
25 <path d="M48.9831862,47.7311418 C48.3589601,47.7311418 47.7333024,47.695349 47.1072541,47.6262364 L47.1072541,51.7992839 C47.1072541,53.122185 48.5184007,53.8277583 50.4587598,53.8277583 C52.3991188,53.8277583 56.8089193,54.18061 58.5727874,51.0937106 C59.4799717,49.5060731 60.0599449,47.7327036 60.4099332,46.2456764 C57.3247258,47.2180686 53.4557216,47.7311418 48.9831862,47.7311418" id="Fill-3" fill="#FEFEFE"></path>
26 <path d="M60.8655036,43.2258722 C60.8656338,43.2176724 60.8658941,43.2080409 60.8658941,43.2002315 C60.8658941,42.8456878 60.7797311,40.8259338 60.667537,38.2174863 C60.6590769,38.2176164 60.6513977,38.2178768 60.6428075,38.2178768 C58.3771897,38.2178768 55.0258142,37.0998405 53.3244207,35.7764188 C52.9135196,35.4568869 52.4548514,35.0301068 51.9649459,34.5413727 C49.7058359,37.4808058 47.549809,41.6273016 47.1687136,44.910866 C47.7640451,44.9870071 48.3697891,45.0282664 48.9832122,45.0282664 C53.829164,45.0282664 57.9269816,44.3915454 60.8655036,43.2258722" id="Fill-5" fill="#FEFEFE"></path>
27 <path d="M54.9840212,33.643 C56.1988932,34.5880595 58.8726789,35.4818377 60.5515554,35.5134655 C60.3633505,31.0949446 60.1603078,26.114412 60.1603078,24.4584428 C60.1603078,21.3716736 60.2495945,18.5935032 59.2783737,18.5935032 C56.8089323,18.5935032 57.4262601,29.3093405 54.3393608,31.9551427 C54.1456893,32.1212212 53.9478528,32.3035691 53.747153,32.5006246 C54.2137606,32.9712671 54.6418423,33.3768319 54.9840212,33.643" id="Fill-7" fill="#FEFEFE"></path>
28 <path d="M12.0732694,35.4601798 C13.7241625,35.2508897 15.8906017,34.4664421 16.9491569,33.6430781 C17.3707308,33.3150861 17.9225903,32.7754611 18.5167504,32.1628189 C18.4383968,32.091754 18.3603035,32.0212096 18.2832514,31.9552208 C15.196352,29.3092884 15.8136798,18.5934511 13.3442384,18.5934511 C12.3731478,18.5934511 12.4623043,21.3716215 12.4623043,24.4585209 C12.4623043,26.107722 12.2608235,31.0550649 12.0732694,35.4601798" id="Fill-9" fill="#FEFEFE"></path>
29 <path d="M25.4406878,44.8074965 C25.008311,41.3920845 22.6955769,37.0765166 20.3525165,34.1524418 C19.7173574,34.8036101 19.1252797,35.3746025 18.6085622,35.7765229 C17.0675204,36.9752556 14.1720798,38.005567 11.9563116,38.188826 C11.8435969,40.8110701 11.7566529,42.8443602 11.7566529,43.2002055 C11.7566529,43.278429 11.7602973,43.3748743 11.7669352,43.4845954 C14.6418112,44.484971 18.4764543,45.0282403 22.9499008,45.0282403 C23.7973437,45.0282403 24.6298186,44.9488454 25.4406878,44.8074965" id="Fill-11" fill="#FEFEFE"></path>
30 <path d="M22.9499399,47.7311418 C18.830126,47.7311418 15.2211727,47.2965524 12.266251,46.4681122 C12.6207947,47.9073724 13.1873619,49.5845569 14.0497726,51.0937106 C15.8137709,54.18061 20.2235714,53.8277583 22.1638003,53.8277583 C24.1041594,53.8277583 25.515306,53.122185 25.515306,51.7992839 L25.515306,47.5360386 C24.6592728,47.6651529 23.8033699,47.7311418 22.9499399,47.7311418" id="Fill-13" fill="#FEFEFE"></path>
31 <path d="M63.5454456,37.4703413 C63.0231314,37.4703413 62.4684084,37.6495655 61.8962446,38.0029379 C61.814637,38.0533081 61.4828705,38.2178247 60.6428465,38.2178247 C58.3770986,38.2178247 55.0258532,37.0999186 53.3244598,35.7764969 C52.4748043,35.1156971 51.4221061,33.9989624 50.3075841,32.8167595 C47.9636126,30.3303978 45.7496666,27.9820011 43.8337767,27.9820011 C42.471829,27.9820011 40.9034545,28.6166396 39.3866216,29.2305834 C38.1232016,29.7418344 36.8167001,30.2705263 35.966524,30.2705263 C35.1163479,30.2705263 33.8099765,29.7418344 32.5465565,29.2305834 C31.0297236,28.6166396 29.461219,27.9820011 28.0994014,27.9820011 C26.1833814,27.9820011 23.9693052,30.330528 21.6254639,32.8168896 C20.5109419,33.9990926 19.4582437,35.1156971 18.6085882,35.7764969 C16.9074551,37.0997884 13.5560796,38.2176945 11.2902015,38.2178247 C10.4503076,38.2178247 10.1185411,38.0533081 10.0369336,38.0029379 C9.46476974,37.6495655 8.9099166,37.4703413 8.3877325,37.4703413 C7.64857908,37.4703413 7.0250038,37.8567732 6.76039755,38.4787866 C6.43422772,39.2456631 6.70586237,40.1875989 7.48679572,40.9985982 C9.95272293,43.559539 15.5888491,45.0282143 22.9499269,45.0282143 C27.7832535,45.0282143 32.1465885,42.492784 34.6182426,40.1200482 C35.1197319,39.6387329 35.7738938,39.6142637 35.8998843,39.6142637 L35.9039192,39.6137431 L35.9276075,39.6223333 L36.0163736,39.614524 L36.0331636,39.6142637 C36.1591542,39.6142637 36.8134462,39.6387329 37.3149356,40.1200482 C39.7865896,42.492784 44.1497944,45.0282143 48.9831211,45.0282143 C56.3441989,45.0282143 61.980325,43.559539 64.4463824,40.9985982 C65.2273158,40.1877291 65.4986901,39.2456631 65.1726504,38.4787866 C64.9080442,37.8567732 64.2844689,37.4703413 63.5454456,37.4703413" id="Fill-15" fill="#FEFEFE"></path>
32 </g>
33 </g>
34 </g>
35</svg> \ No newline at end of file
diff --git a/src/assets/images/sm.png b/src/assets/images/sm.png
index 2bf169bee..d5ba1fd0b 100644
--- a/src/assets/images/sm.png
+++ b/src/assets/images/sm.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-active.png b/src/assets/images/tray/darwin-dark/tray-active.png
index 489533dbf..4c5c4ae2f 100644
--- a/src/assets/images/tray/darwin-dark/tray-active.png
+++ b/src/assets/images/tray/darwin-dark/tray-active.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-active@2x.png b/src/assets/images/tray/darwin-dark/tray-active@2x.png
index 76f212b52..59675fec3 100644
--- a/src/assets/images/tray/darwin-dark/tray-active@2x.png
+++ b/src/assets/images/tray/darwin-dark/tray-active@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-unread-active.png b/src/assets/images/tray/darwin-dark/tray-unread-active.png
index e2fd1a822..881c1da50 100644
--- a/src/assets/images/tray/darwin-dark/tray-unread-active.png
+++ b/src/assets/images/tray/darwin-dark/tray-unread-active.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png b/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png
index 9a64b3ef8..308b20c63 100644
--- a/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png
+++ b/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-unread.png b/src/assets/images/tray/darwin-dark/tray-unread.png
index e2fd1a822..881c1da50 100644
--- a/src/assets/images/tray/darwin-dark/tray-unread.png
+++ b/src/assets/images/tray/darwin-dark/tray-unread.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray-unread@2x.png b/src/assets/images/tray/darwin-dark/tray-unread@2x.png
index 9a64b3ef8..308b20c63 100644
--- a/src/assets/images/tray/darwin-dark/tray-unread@2x.png
+++ b/src/assets/images/tray/darwin-dark/tray-unread@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray.png b/src/assets/images/tray/darwin-dark/tray.png
index 489533dbf..4c5c4ae2f 100644
--- a/src/assets/images/tray/darwin-dark/tray.png
+++ b/src/assets/images/tray/darwin-dark/tray.png
Binary files differ
diff --git a/src/assets/images/tray/darwin-dark/tray@2x.png b/src/assets/images/tray/darwin-dark/tray@2x.png
index 76f212b52..59675fec3 100644
--- a/src/assets/images/tray/darwin-dark/tray@2x.png
+++ b/src/assets/images/tray/darwin-dark/tray@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-active.png b/src/assets/images/tray/darwin/tray-active.png
index 489533dbf..4c5c4ae2f 100644
--- a/src/assets/images/tray/darwin/tray-active.png
+++ b/src/assets/images/tray/darwin/tray-active.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-active@2x.png b/src/assets/images/tray/darwin/tray-active@2x.png
index 76f212b52..59675fec3 100644
--- a/src/assets/images/tray/darwin/tray-active@2x.png
+++ b/src/assets/images/tray/darwin/tray-active@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-unread-active.png b/src/assets/images/tray/darwin/tray-unread-active.png
index e2fd1a822..881c1da50 100644
--- a/src/assets/images/tray/darwin/tray-unread-active.png
+++ b/src/assets/images/tray/darwin/tray-unread-active.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-unread-active@2x.png b/src/assets/images/tray/darwin/tray-unread-active@2x.png
index 9a64b3ef8..308b20c63 100644
--- a/src/assets/images/tray/darwin/tray-unread-active@2x.png
+++ b/src/assets/images/tray/darwin/tray-unread-active@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-unread.png b/src/assets/images/tray/darwin/tray-unread.png
index a94ad81fb..29115b631 100644
--- a/src/assets/images/tray/darwin/tray-unread.png
+++ b/src/assets/images/tray/darwin/tray-unread.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray-unread@2x.png b/src/assets/images/tray/darwin/tray-unread@2x.png
index 56e74b16a..008fe876e 100644
--- a/src/assets/images/tray/darwin/tray-unread@2x.png
+++ b/src/assets/images/tray/darwin/tray-unread@2x.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray.png b/src/assets/images/tray/darwin/tray.png
index 583f34df8..3ea106e29 100644
--- a/src/assets/images/tray/darwin/tray.png
+++ b/src/assets/images/tray/darwin/tray.png
Binary files differ
diff --git a/src/assets/images/tray/darwin/tray@2x.png b/src/assets/images/tray/darwin/tray@2x.png
index 479a2cf95..04b7d5b63 100644
--- a/src/assets/images/tray/darwin/tray@2x.png
+++ b/src/assets/images/tray/darwin/tray@2x.png
Binary files differ
diff --git a/src/assets/images/tray/linux/tray-unread.png b/src/assets/images/tray/linux/tray-unread.png
index 5697141e0..bd682d9ae 100644
--- a/src/assets/images/tray/linux/tray-unread.png
+++ b/src/assets/images/tray/linux/tray-unread.png
Binary files differ
diff --git a/src/assets/images/tray/linux/tray-unread@2x.png b/src/assets/images/tray/linux/tray-unread@2x.png
index d31e1401d..70fdb0425 100644
--- a/src/assets/images/tray/linux/tray-unread@2x.png
+++ b/src/assets/images/tray/linux/tray-unread@2x.png
Binary files differ
diff --git a/src/assets/images/tray/linux/tray.png b/src/assets/images/tray/linux/tray.png
index 29a13da12..203c1c86f 100644
--- a/src/assets/images/tray/linux/tray.png
+++ b/src/assets/images/tray/linux/tray.png
Binary files differ
diff --git a/src/assets/images/tray/linux/tray@2x.png b/src/assets/images/tray/linux/tray@2x.png
index 256c52dcc..8cc22ba27 100644
--- a/src/assets/images/tray/linux/tray@2x.png
+++ b/src/assets/images/tray/linux/tray@2x.png
Binary files differ
diff --git a/src/assets/images/tray/win32/tray-unread.ico b/src/assets/images/tray/win32/tray-unread.ico
index 507845120..9421512c8 100644
--- a/src/assets/images/tray/win32/tray-unread.ico
+++ b/src/assets/images/tray/win32/tray-unread.ico
Binary files differ
diff --git a/src/assets/images/tray/win32/tray.ico b/src/assets/images/tray/win32/tray.ico
index 1f0057a8c..dcb721ada 100644
--- a/src/assets/images/tray/win32/tray.ico
+++ b/src/assets/images/tray/win32/tray.ico
Binary files differ
diff --git a/src/components/AppUpdateInfoBar.js b/src/components/AppUpdateInfoBar.js
index 4fb3a8b71..4108fdf12 100644
--- a/src/components/AppUpdateInfoBar.js
+++ b/src/components/AppUpdateInfoBar.js
@@ -8,7 +8,7 @@ import InfoBar from './ui/InfoBar';
8const messages = defineMessages({ 8const messages = defineMessages({
9 updateAvailable: { 9 updateAvailable: {
10 id: 'infobar.updateAvailable', 10 id: 'infobar.updateAvailable',
11 defaultMessage: '!!!A new update for Franz is available.', 11 defaultMessage: '!!!A new update for Ferdi is available.',
12 }, 12 },
13 changelog: { 13 changelog: {
14 id: 'infobar.buttonChangelog', 14 id: 'infobar.buttonChangelog',
diff --git a/src/components/auth/AuthLayout.js b/src/components/auth/AuthLayout.js
index 75a8cfc61..641b754ed 100644
--- a/src/components/auth/AuthLayout.js
+++ b/src/components/auth/AuthLayout.js
@@ -52,7 +52,7 @@ export default @observer class AuthLayout extends Component {
52 52
53 return ( 53 return (
54 <> 54 <>
55 {isWindows && !isFullScreen && <TitleBar menu={window.franz.menu.template} icon="assets/images/logo.svg" />} 55 {isWindows && !isFullScreen && <TitleBar menu={window.ferdi.menu.template} icon="assets/images/logo.svg" />}
56 <div className="auth"> 56 <div className="auth">
57 {!isOnline && ( 57 {!isOnline && (
58 <InfoBar 58 <InfoBar
@@ -87,7 +87,7 @@ export default @observer class AuthLayout extends Component {
87 })} 87 })}
88 </div> 88 </div>
89 {/* </div> */} 89 {/* </div> */}
90 <Link to="https://adlk.io" className="auth__adlk" target="_blank"> 90 <Link to="https://github.com/kytwb/ferdi" className="auth__adlk" target="_blank">
91 <img src="./assets/images/adlk.svg" alt="" /> 91 <img src="./assets/images/adlk.svg" alt="" />
92 </Link> 92 </Link>
93 </div> 93 </div>
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js
index 0d5feb274..3e34c3162 100644
--- a/src/components/auth/Import.js
+++ b/src/components/auth/Import.js
@@ -12,11 +12,11 @@ import Button from '../ui/Button';
12const messages = defineMessages({ 12const messages = defineMessages({
13 headline: { 13 headline: {
14 id: 'import.headline', 14 id: 'import.headline',
15 defaultMessage: '!!!Import your Franz 4 services', 15 defaultMessage: '!!!Import your Ferdi 4 services',
16 }, 16 },
17 notSupportedHeadline: { 17 notSupportedHeadline: {
18 id: 'import.notSupportedHeadline', 18 id: 'import.notSupportedHeadline',
19 defaultMessage: '!!!Services not yet supported in Franz 5', 19 defaultMessage: '!!!Services not yet supported in Ferdi 5',
20 }, 20 },
21 submitButtonLabel: { 21 submitButtonLabel: {
22 id: 'import.submit.label', 22 id: 'import.submit.label',
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js
new file mode 100644
index 000000000..045621d0a
--- /dev/null
+++ b/src/components/auth/Locked.js
@@ -0,0 +1,115 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5
6import Form from '../../lib/Form';
7import { required } from '../../helpers/validation-helpers';
8import Input from '../ui/Input';
9import Button from '../ui/Button';
10import Infobox from '../ui/Infobox';
11
12import { globalError as globalErrorPropType } from '../../prop-types';
13
14const messages = defineMessages({
15 headline: {
16 id: 'locked.headline',
17 defaultMessage: '!!!Locked',
18 },
19 info: {
20 id: 'locked.info',
21 defaultMessage: '!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.',
22 },
23 passwordLabel: {
24 id: 'locked.password.label',
25 defaultMessage: '!!!Password',
26 },
27 submitButtonLabel: {
28 id: 'locked.submit.label',
29 defaultMessage: '!!!Unlock',
30 },
31 invalidCredentials: {
32 id: 'locked.invalidCredentials',
33 defaultMessage: '!!!Password invalid',
34 },
35});
36
37export default @observer class Locked extends Component {
38 static propTypes = {
39 onSubmit: PropTypes.func.isRequired,
40 isSubmitting: PropTypes.bool.isRequired,
41 error: globalErrorPropType.isRequired,
42 };
43
44 static contextTypes = {
45 intl: intlShape,
46 };
47
48 form = new Form({
49 fields: {
50 password: {
51 label: this.context.intl.formatMessage(messages.passwordLabel),
52 value: '',
53 validators: [required],
54 type: 'password',
55 },
56 },
57 }, this.context.intl);
58
59 submit(e) {
60 e.preventDefault();
61 this.form.submit({
62 onSuccess: (form) => {
63 this.props.onSubmit(form.values());
64 },
65 onError: () => { },
66 });
67 }
68
69 render() {
70 const { form } = this;
71 const { intl } = this.context;
72 const {
73 isSubmitting,
74 error,
75 } = this.props;
76
77 return (
78 <div className="auth__container">
79 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}>
80 <img
81 src="./assets/images/logo.svg"
82 className="auth__logo"
83 alt=""
84 />
85 <h1>{intl.formatMessage(messages.headline)}</h1>
86 <Infobox type="warning">
87 {intl.formatMessage(messages.info)}
88 </Infobox>
89 <Input
90 field={form.$('password')}
91 showPasswordToggle
92 />
93 {error.code === 'invalid-credentials' && (
94 <p className="error-message center">{intl.formatMessage(messages.invalidCredentials)}</p>
95 )}
96 {isSubmitting ? (
97 <Button
98 className="auth__button is-loading"
99 buttonType="secondary"
100 label={`${intl.formatMessage(messages.submitButtonLabel)} ...`}
101 loaded={false}
102 disabled
103 />
104 ) : (
105 <Button
106 type="submit"
107 className="auth__button"
108 label={intl.formatMessage(messages.submitButtonLabel)}
109 />
110 )}
111 </form>
112 </div>
113 );
114 }
115}
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index 5d21f8b60..270dff30b 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -34,6 +34,14 @@ const messages = defineMessages({
34 id: 'login.invalidCredentials', 34 id: 'login.invalidCredentials',
35 defaultMessage: '!!!Email or password not valid', 35 defaultMessage: '!!!Email or password not valid',
36 }, 36 },
37 customServerQuestion: {
38 id: 'login.customServerQuestion',
39 defaultMessage: '!!!Using a custom Ferdi server?',
40 },
41 customServerSuggestion: {
42 id: 'login.customServerSuggestion',
43 defaultMessage: '!!!Try importing your Franz account',
44 },
37 tokenExpired: { 45 tokenExpired: {
38 id: 'login.tokenExpired', 46 id: 'login.tokenExpired',
39 defaultMessage: '!!!Your session expired, please login again.', 47 defaultMessage: '!!!Your session expired, please login again.',
@@ -137,7 +145,22 @@ export default @observer class Login extends Component {
137 showPasswordToggle 145 showPasswordToggle
138 /> 146 />
139 {error.code === 'invalid-credentials' && ( 147 {error.code === 'invalid-credentials' && (
140 <p className="error-message center">{intl.formatMessage(messages.invalidCredentials)}</p> 148 <>
149 <p className="error-message center">{intl.formatMessage(messages.invalidCredentials)}</p>
150 { window.ferdi.stores.settings.all.app.server !== 'https://api.franzinfra.com' && (
151 <p className="error-message center">
152 {intl.formatMessage(messages.customServerQuestion)}
153 {' '}
154 <Link
155 to={`${window.ferdi.stores.settings.all.app.server.replace('v1', '')}/import`}
156 target="_blank"
157 style={{ cursor: 'pointer', textDecoration: 'underline' }}
158 >
159 {intl.formatMessage(messages.customServerSuggestion)}
160 </Link>
161 </p>
162 )}
163 </>
141 )} 164 )}
142 {isSubmitting ? ( 165 {isSubmitting ? (
143 <Button 166 <Button
@@ -156,6 +179,7 @@ export default @observer class Login extends Component {
156 )} 179 )}
157 </form> 180 </form>
158 <div className="auth__links"> 181 <div className="auth__links">
182 <Link to="/settings/app">Change server</Link>
159 <Link to={signupRoute}>{intl.formatMessage(messages.signupLink)}</Link> 183 <Link to={signupRoute}>{intl.formatMessage(messages.signupLink)}</Link>
160 <Link to={passwordRoute}>{intl.formatMessage(messages.passwordLink)}</Link> 184 <Link to={passwordRoute}>{intl.formatMessage(messages.passwordLink)}</Link>
161 </div> 185 </div>
diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js
index cbeaaa5d9..a77ad7742 100644
--- a/src/components/auth/Pricing.js
+++ b/src/components/auth/Pricing.js
@@ -42,7 +42,7 @@ const messages = defineMessages({
42 }, 42 },
43 ctaSkip: { 43 ctaSkip: {
44 id: 'pricing.trial.cta.skip', 44 id: 'pricing.trial.cta.skip',
45 defaultMessage: '!!!Continue to Franz', 45 defaultMessage: '!!!Continue to Ferdi',
46 }, 46 },
47 featuresHeadline: { 47 featuresHeadline: {
48 id: 'pricing.trial.features.headline', 48 id: 'pricing.trial.features.headline',
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index 0499d764b..b36e71ce1 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -40,7 +40,7 @@ const messages = defineMessages({
40 }, 40 },
41 legalInfo: { 41 legalInfo: {
42 id: 'signup.legal.info', 42 id: 'signup.legal.info',
43 defaultMessage: '!!!By creating a Franz account you accept the', 43 defaultMessage: '!!!By creating a Ferdi account you accept the',
44 }, 44 },
45 terms: { 45 terms: {
46 id: 'signup.legal.terms', 46 id: 'signup.legal.terms',
@@ -117,6 +117,8 @@ export default @observer class Signup extends Component {
117 const { intl } = this.context; 117 const { intl } = this.context;
118 const { isSubmitting, loginRoute, error } = this.props; 118 const { isSubmitting, loginRoute, error } = this.props;
119 119
120 const termsBase = window.ferdi.stores.settings.all.app.server !== 'https://api.franzinfra.com' ? window.ferdi.stores.settings.all.app.server : 'https://meetfranz.com';
121
120 return ( 122 return (
121 <div className="auth__scroll-container"> 123 <div className="auth__scroll-container">
122 <div className="auth__container auth__container--signup"> 124 <div className="auth__container auth__container--signup">
@@ -163,7 +165,7 @@ export default @observer class Signup extends Component {
163 {intl.formatMessage(messages.legalInfo)} 165 {intl.formatMessage(messages.legalInfo)}
164 <br /> 166 <br />
165 <Link 167 <Link
166 to="https://meetfranz.com/terms" 168 to={`${termsBase}/terms`}
167 target="_blank" 169 target="_blank"
168 className="link" 170 className="link"
169 > 171 >
@@ -171,7 +173,7 @@ export default @observer class Signup extends Component {
171 </Link> 173 </Link>
172 &nbsp;&amp;&nbsp; 174 &nbsp;&amp;&nbsp;
173 <Link 175 <Link
174 to="https://meetfranz.com/privacy" 176 to={`${termsBase}/privacy`}
175 target="_blank" 177 target="_blank"
176 className="link" 178 className="link"
177 > 179 >
@@ -181,6 +183,7 @@ export default @observer class Signup extends Component {
181 </p> 183 </p>
182 </form> 184 </form>
183 <div className="auth__links"> 185 <div className="auth__links">
186 <Link to="/settings/app">Change server</Link>
184 <Link to={loginRoute}>{intl.formatMessage(messages.loginLink)}</Link> 187 <Link to={loginRoute}>{intl.formatMessage(messages.loginLink)}</Link>
185 </div> 188 </div>
186 </div> 189 </div>
diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js
index f6d77f70f..ef917e336 100644
--- a/src/components/auth/Welcome.js
+++ b/src/components/auth/Welcome.js
@@ -41,7 +41,7 @@ export default @observer class Login extends Component {
41 <img src="./assets/images/logo.svg" className="welcome__logo" alt="" /> 41 <img src="./assets/images/logo.svg" className="welcome__logo" alt="" />
42 {/* <img src="./assets/images/welcome.png" className="welcome__services" alt="" /> */} 42 {/* <img src="./assets/images/welcome.png" className="welcome__services" alt="" /> */}
43 <div className="welcome__text"> 43 <div className="welcome__text">
44 <h1>Franz</h1> 44 <h1>Ferdi</h1>
45 </div> 45 </div>
46 </div> 46 </div>
47 <div className="welcome__buttons"> 47 <div className="welcome__buttons">
@@ -51,6 +51,19 @@ export default @observer class Login extends Component {
51 <Link to={loginRoute} className="button"> 51 <Link to={loginRoute} className="button">
52 {intl.formatMessage(messages.loginButton)} 52 {intl.formatMessage(messages.loginButton)}
53 </Link> 53 </Link>
54 <br />
55 <br />
56
57 <Link to="settings/app">
58 <span style={{
59 textAlign: 'center',
60 width: '100%',
61 cursor: 'pointer',
62 }}
63 >
64 Change server
65 </span>
66 </Link>
54 </div> 67 </div>
55 <div className="welcome__featured-services"> 68 <div className="welcome__featured-services">
56 {recipes.map(recipe => ( 69 {recipes.map(recipe => (
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index 200777ae6..e82275b9f 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -6,7 +6,6 @@ import { TitleBar } from 'electron-react-titlebar';
6import injectSheet from 'react-jss'; 6import injectSheet from 'react-jss';
7 7
8import InfoBar from '../ui/InfoBar'; 8import InfoBar from '../ui/InfoBar';
9import { Component as DelayApp } from '../../features/delayApp';
10import { Component as BasicAuth } from '../../features/basicAuth'; 9import { Component as BasicAuth } from '../../features/basicAuth';
11import { Component as ShareFranz } from '../../features/shareFranz'; 10import { Component as ShareFranz } from '../../features/shareFranz';
12import ErrorBoundary from '../util/ErrorBoundary'; 11import ErrorBoundary from '../util/ErrorBoundary';
@@ -37,6 +36,10 @@ const messages = defineMessages({
37 id: 'infobar.requiredRequestsFailed', 36 id: 'infobar.requiredRequestsFailed',
38 defaultMessage: '!!!Could not load services and user information', 37 defaultMessage: '!!!Could not load services and user information',
39 }, 38 },
39 authRequestFailed: {
40 id: 'infobar.authRequestFailed',
41 defaultMessage: '!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.',
42 },
40}); 43});
41 44
42const styles = theme => ({ 45const styles = theme => ({
@@ -63,6 +66,7 @@ class AppLayout extends Component {
63 showServicesUpdatedInfoBar: PropTypes.bool.isRequired, 66 showServicesUpdatedInfoBar: PropTypes.bool.isRequired,
64 appUpdateIsDownloaded: PropTypes.bool.isRequired, 67 appUpdateIsDownloaded: PropTypes.bool.isRequired,
65 nextAppReleaseVersion: PropTypes.string, 68 nextAppReleaseVersion: PropTypes.string,
69 authRequestFailed: PropTypes.bool.isRequired,
66 removeNewsItem: PropTypes.func.isRequired, 70 removeNewsItem: PropTypes.func.isRequired,
67 reloadServicesAfterUpdate: PropTypes.func.isRequired, 71 reloadServicesAfterUpdate: PropTypes.func.isRequired,
68 installAppUpdate: PropTypes.func.isRequired, 72 installAppUpdate: PropTypes.func.isRequired,
@@ -70,7 +74,6 @@ class AppLayout extends Component {
70 areRequiredRequestsSuccessful: PropTypes.bool.isRequired, 74 areRequiredRequestsSuccessful: PropTypes.bool.isRequired,
71 retryRequiredRequests: PropTypes.func.isRequired, 75 retryRequiredRequests: PropTypes.func.isRequired,
72 areRequiredRequestsLoading: PropTypes.bool.isRequired, 76 areRequiredRequestsLoading: PropTypes.bool.isRequired,
73 isDelayAppScreenVisible: PropTypes.bool.isRequired,
74 hasActivatedTrial: PropTypes.bool.isRequired, 77 hasActivatedTrial: PropTypes.bool.isRequired,
75 }; 78 };
76 79
@@ -95,6 +98,7 @@ class AppLayout extends Component {
95 showServicesUpdatedInfoBar, 98 showServicesUpdatedInfoBar,
96 appUpdateIsDownloaded, 99 appUpdateIsDownloaded,
97 nextAppReleaseVersion, 100 nextAppReleaseVersion,
101 authRequestFailed,
98 removeNewsItem, 102 removeNewsItem,
99 reloadServicesAfterUpdate, 103 reloadServicesAfterUpdate,
100 installAppUpdate, 104 installAppUpdate,
@@ -102,7 +106,6 @@ class AppLayout extends Component {
102 areRequiredRequestsSuccessful, 106 areRequiredRequestsSuccessful,
103 retryRequiredRequests, 107 retryRequiredRequests,
104 areRequiredRequestsLoading, 108 areRequiredRequestsLoading,
105 isDelayAppScreenVisible,
106 hasActivatedTrial, 109 hasActivatedTrial,
107 } = this.props; 110 } = this.props;
108 111
@@ -111,7 +114,7 @@ class AppLayout extends Component {
111 return ( 114 return (
112 <ErrorBoundary> 115 <ErrorBoundary>
113 <div className="app"> 116 <div className="app">
114 {isWindows && !isFullScreen && <TitleBar menu={window.franz.menu.template} icon="assets/images/logo.svg" />} 117 {isWindows && !isFullScreen && <TitleBar menu={window.ferdi.menu.template} icon="assets/images/logo.svg" />}
115 <div className={`app__content ${classes.appContent}`}> 118 <div className={`app__content ${classes.appContent}`}>
116 {workspacesDrawer} 119 {workspacesDrawer}
117 {sidebar} 120 {sidebar}
@@ -151,6 +154,18 @@ class AppLayout extends Component {
151 {intl.formatMessage(messages.requiredRequestsFailed)} 154 {intl.formatMessage(messages.requiredRequestsFailed)}
152 </InfoBar> 155 </InfoBar>
153 )} 156 )}
157 {authRequestFailed && (
158 <InfoBar
159 type="danger"
160 ctaLabel="Try again"
161 ctaLoading={areRequiredRequestsLoading}
162 sticky
163 onClick={retryRequiredRequests}
164 >
165 <span className="mdi mdi-flash" />
166 {intl.formatMessage(messages.authRequestFailed)}
167 </InfoBar>
168 )}
154 {showServicesUpdatedInfoBar && ( 169 {showServicesUpdatedInfoBar && (
155 <InfoBar 170 <InfoBar
156 type="primary" 171 type="primary"
@@ -168,7 +183,6 @@ class AppLayout extends Component {
168 onInstallUpdate={installAppUpdate} 183 onInstallUpdate={installAppUpdate}
169 /> 184 />
170 )} 185 )}
171 {isDelayAppScreenVisible && (<DelayApp />)}
172 <BasicAuth /> 186 <BasicAuth />
173 <ShareFranz /> 187 <ShareFranz />
174 {services} 188 {services}
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index 918298011..52de16508 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -2,13 +2,13 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import ReactTooltip from 'react-tooltip'; 3import ReactTooltip from 'react-tooltip';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import { observer } from 'mobx-react'; 5import { inject, observer } from 'mobx-react';
6import { Link } from 'react-router';
6 7
7import Tabbar from '../services/tabs/Tabbar'; 8import Tabbar from '../services/tabs/Tabbar';
8import { ctrlKey } from '../../environment'; 9import { ctrlKey } from '../../environment';
9import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../../features/workspaces'; 10import { workspaceStore } from '../../features/workspaces';
10import { gaEvent } from '../../lib/analytics'; 11import { todosStore } from '../../features/todos';
11import { todosStore, GA_CATEGORY_TODOS } from '../../features/todos';
12import { todoActions } from '../../features/todos/actions'; 12import { todoActions } from '../../features/todos/actions';
13 13
14const messages = defineMessages({ 14const messages = defineMessages({
@@ -44,9 +44,13 @@ const messages = defineMessages({
44 id: 'sidebar.closeTodosDrawer', 44 id: 'sidebar.closeTodosDrawer',
45 defaultMessage: '!!!Close Franz Todos', 45 defaultMessage: '!!!Close Franz Todos',
46 }, 46 },
47 lockFerdi: {
48 id: 'sidebar.lockFerdi',
49 defaultMessage: '!!!Lock Ferdi',
50 },
47}); 51});
48 52
49export default @observer class Sidebar extends Component { 53export default @inject('stores', 'actions') @observer class Sidebar extends Component {
50 static propTypes = { 54 static propTypes = {
51 openSettings: PropTypes.func.isRequired, 55 openSettings: PropTypes.func.isRequired,
52 toggleMuteApp: PropTypes.func.isRequired, 56 toggleMuteApp: PropTypes.func.isRequired,
@@ -87,6 +91,8 @@ export default @observer class Sidebar extends Component {
87 isAppMuted, 91 isAppMuted,
88 isWorkspaceDrawerOpen, 92 isWorkspaceDrawerOpen,
89 toggleWorkspaceDrawer, 93 toggleWorkspaceDrawer,
94 stores,
95 actions,
90 } = this.props; 96 } = this.props;
91 const { intl } = this.context; 97 const { intl } = this.context;
92 const todosToggleMessage = ( 98 const todosToggleMessage = (
@@ -96,6 +102,7 @@ export default @observer class Sidebar extends Component {
96 const workspaceToggleMessage = ( 102 const workspaceToggleMessage = (
97 isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer 103 isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer
98 ); 104 );
105 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
99 106
100 return ( 107 return (
101 <div className="sidebar"> 108 <div className="sidebar">
@@ -104,53 +111,81 @@ export default @observer class Sidebar extends Component {
104 enableToolTip={() => this.enableToolTip()} 111 enableToolTip={() => this.enableToolTip()}
105 disableToolTip={() => this.disableToolTip()} 112 disableToolTip={() => this.disableToolTip()}
106 /> 113 />
107 {todosStore.isFeatureEnabled && todosStore.isFeatureEnabledByUser ? ( 114 { isLoggedIn ? (
108 <button 115 <>
109 type="button" 116 { stores.settings.all.app.lockingFeatureEnabled ? (
110 onClick={() => { 117 <button
111 todoActions.toggleTodosPanel(); 118 type="button"
112 this.updateToolTip(); 119 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
113 gaEvent(GA_CATEGORY_TODOS, 'toggleDrawer', 'sidebar'); 120 onClick={() => {
114 }} 121 actions.settings.update({
115 className={`sidebar__button sidebar__button--todos ${todosStore.isTodosPanelVisible ? 'is-active' : ''}`} 122 type: 'app',
116 data-tip={`${intl.formatMessage(todosToggleMessage)} (${ctrlKey}+T)`} 123 data: {
117 > 124 locked: true,
118 <i className="mdi mdi-check-all" /> 125 },
119 </button> 126 });
120 ) : null} 127 }}
121 {workspaceStore.isFeatureEnabled ? ( 128 data-tip={`${intl.formatMessage(messages.lockFerdi)} (${ctrlKey}+Shift+L)`}
122 <button 129 >
123 type="button" 130 <i className="mdi mdi-lock" />
124 onClick={() => { 131 </button>
125 toggleWorkspaceDrawer(); 132 ) : null}
126 this.updateToolTip(); 133 {todosStore.isFeatureEnabled && todosStore.isFeatureEnabledByUser ? (
127 gaEvent(GA_CATEGORY_WORKSPACES, 'toggleDrawer', 'sidebar'); 134 <button
128 }} 135 type="button"
129 className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`} 136 onClick={() => {
130 data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`} 137 todoActions.toggleTodosPanel();
138 this.updateToolTip();
139 gaEvent(GA_CATEGORY_TODOS, 'toggleDrawer', 'sidebar');
140 }}
141 className={`sidebar__button sidebar__button--todos ${todosStore.isTodosPanelVisible ? 'is-active' : ''}`}
142 data-tip={`${intl.formatMessage(todosToggleMessage)} (${ctrlKey}+T)`}
143 >
144 <i className="mdi mdi-check-all" />
145 </button>
146 ) : null}
147 {workspaceStore.isFeatureEnabled ? (
148 <button
149 type="button"
150 onClick={() => {
151 toggleWorkspaceDrawer();
152 this.updateToolTip();
153 }}
154 className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`}
155 data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`}
156 >
157 <i className="mdi mdi-view-grid" />
158 </button>
159 ) : null}
160 <button
161 type="button"
162 onClick={() => {
163 toggleMuteApp();
164 this.updateToolTip();
165 }}
166 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
167 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`}
168 >
169 <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} />
170 </button>
171 <button
172 type="button"
173 onClick={() => openSettings({ path: 'recipes' })}
174 className="sidebar__button sidebar__button--new-service"
175 data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`}
176 >
177 <i className="mdi mdi-plus-box" />
178 </button>
179 </>
180 ) : (
181 <Link
182 to="/auth/welcome"
183 className="sidebar__button sidebar__button--new-service"
184 data-tip="Login"
131 > 185 >
132 <i className="mdi mdi-view-grid" /> 186 <i className="mdi mdi-login-variant" />
133 </button> 187 </Link>
134 ) : null} 188 )}
135 <button
136 type="button"
137 onClick={() => {
138 toggleMuteApp();
139 this.updateToolTip();
140 }}
141 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
142 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`}
143 >
144 <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} />
145 </button>
146 <button
147 type="button"
148 onClick={() => openSettings({ path: 'recipes' })}
149 className="sidebar__button sidebar__button--new-service"
150 data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`}
151 >
152 <i className="mdi mdi-plus-box" />
153 </button>
154 <button 189 <button
155 type="button" 190 type="button"
156 onClick={() => openSettings({ path: 'app' })} 191 onClick={() => openSettings({ path: 'app' })}
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js
index f65f51346..59d1c1dc3 100644
--- a/src/components/services/content/ServiceView.js
+++ b/src/components/services/content/ServiceView.js
@@ -10,7 +10,6 @@ import WebviewLoader from '../../ui/WebviewLoader';
10import WebviewCrashHandler from './WebviewCrashHandler'; 10import WebviewCrashHandler from './WebviewCrashHandler';
11import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler'; 11import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler';
12import ServiceDisabled from './ServiceDisabled'; 12import ServiceDisabled from './ServiceDisabled';
13import ServiceRestricted from './ServiceRestricted';
14import ServiceWebview from './ServiceWebview'; 13import ServiceWebview from './ServiceWebview';
15 14
16export default @observer class ServiceView extends Component { 15export default @observer class ServiceView extends Component {
@@ -22,7 +21,6 @@ export default @observer class ServiceView extends Component {
22 edit: PropTypes.func.isRequired, 21 edit: PropTypes.func.isRequired,
23 enable: PropTypes.func.isRequired, 22 enable: PropTypes.func.isRequired,
24 isActive: PropTypes.bool, 23 isActive: PropTypes.bool,
25 upgrade: PropTypes.func.isRequired,
26 }; 24 };
27 25
28 static defaultProps = { 26 static defaultProps = {
@@ -74,7 +72,6 @@ export default @observer class ServiceView extends Component {
74 reload, 72 reload,
75 edit, 73 edit,
76 enable, 74 enable,
77 upgrade,
78 } = this.props; 75 } = this.props;
79 76
80 const webviewClasses = classnames({ 77 const webviewClasses = classnames({
@@ -130,19 +127,11 @@ export default @observer class ServiceView extends Component {
130 </Fragment> 127 </Fragment>
131 ) : ( 128 ) : (
132 <> 129 <>
133 {service.isServiceAccessRestricted ? ( 130 <ServiceWebview
134 <ServiceRestricted 131 service={service}
135 name={service.recipe.name} 132 setWebviewReference={setWebviewReference}
136 upgrade={upgrade} 133 detachService={detachService}
137 type={service.restrictionType} 134 />
138 />
139 ) : (
140 <ServiceWebview
141 service={service}
142 setWebviewReference={setWebviewReference}
143 detachService={detachService}
144 />
145 )}
146 </> 135 </>
147 )} 136 )}
148 {statusBar} 137 {statusBar}
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index 73c27bfb6..1afbaabc4 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -13,12 +13,20 @@ import Appear from '../../ui/effects/Appear';
13const messages = defineMessages({ 13const messages = defineMessages({
14 welcome: { 14 welcome: {
15 id: 'services.welcome', 15 id: 'services.welcome',
16 defaultMessage: '!!!Welcome to Franz', 16 defaultMessage: '!!!Welcome to Ferdi',
17 }, 17 },
18 getStarted: { 18 getStarted: {
19 id: 'services.getStarted', 19 id: 'services.getStarted',
20 defaultMessage: '!!!Get started', 20 defaultMessage: '!!!Get started',
21 }, 21 },
22 login: {
23 id: 'services.login',
24 defaultMessage: '!!!Please login to use Ferdi.',
25 },
26 serverInfo: {
27 id: 'services.serverInfo',
28 defaultMessage: '!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.',
29 },
22}); 30});
23 31
24 32
@@ -86,6 +94,7 @@ export default @observer @injectSheet(styles) class Services extends Component {
86 } = this.state; 94 } = this.state;
87 95
88 const { intl } = this.context; 96 const { intl } = this.context;
97 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
89 98
90 return ( 99 return (
91 <div className="services"> 100 <div className="services">
@@ -104,14 +113,20 @@ export default @observer @injectSheet(styles) class Services extends Component {
104 transitionName="slideUp" 113 transitionName="slideUp"
105 > 114 >
106 <div className="services__no-service"> 115 <div className="services__no-service">
107 <img src="./assets/images/logo.svg" alt="" /> 116 <img src="./assets/images/logo.svg" alt="Logo" style={{ maxHeight: '50vh' }} />
108 <h1>{intl.formatMessage(messages.welcome)}</h1> 117 <h1>{intl.formatMessage(messages.welcome)}</h1>
118 { !isLoggedIn && (
119 <>
120 <p>{intl.formatMessage(messages.login)}</p>
121 <p>{intl.formatMessage(messages.serverInfo)}</p>
122 </>
123 ) }
109 <Appear 124 <Appear
110 timeout={300} 125 timeout={300}
111 transitionName="slideUp" 126 transitionName="slideUp"
112 > 127 >
113 <Link to="/settings/recipes" className="button"> 128 <Link to={isLoggedIn ? '/settings/services' : '/auth/welcome'} className="button">
114 {intl.formatMessage(messages.getStarted)} 129 { isLoggedIn ? intl.formatMessage(messages.getStarted) : 'Login' }
115 </Link> 130 </Link>
116 </Appear> 131 </Appear>
117 </div> 132 </div>
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index ac2594604..f588449f4 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -69,7 +69,7 @@ const messages = defineMessages({
69 }, 69 },
70 deleteInfo: { 70 deleteInfo: {
71 id: 'settings.account.deleteInfo', 71 id: 'settings.account.deleteInfo',
72 defaultMessage: '!!!If you don\'t need your Franz account any longer, you can delete your account and all related data here.', 72 defaultMessage: '!!!If you don\'t need your Ferdi account any longer, you can delete your account and all related data here.',
73 }, 73 },
74 deleteEmailSent: { 74 deleteEmailSent: {
75 id: 'settings.account.deleteEmailSent', 75 id: 'settings.account.deleteEmailSent',
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 4696b82eb..201819526 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -64,6 +64,7 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
64 const { isDarkThemeActive } = stores.ui; 64 const { isDarkThemeActive } = stores.ui;
65 const { router, user } = stores; 65 const { router, user } = stores;
66 const { intl } = this.context; 66 const { intl } = this.context;
67 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
67 68
68 return ( 69 return (
69 <div className="settings-navigation"> 70 <div className="settings-navigation">
@@ -136,10 +137,10 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
136 </Link> 137 </Link>
137 <span className="settings-navigation__expander" /> 138 <span className="settings-navigation__expander" />
138 <Link 139 <Link
139 to="/auth/logout" 140 to={isLoggedIn ? '/auth/logout' : '/auth/welcome'}
140 className="settings-navigation__link" 141 className="settings-navigation__link"
141 > 142 >
142 {intl.formatMessage(messages.logout)} 143 { isLoggedIn ? intl.formatMessage(messages.logout) : 'Login'}
143 </Link> 144 </Link>
144 </div> 145 </div>
145 ); 146 );
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 5cde0db8e..5fe00cb8b 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -63,7 +63,7 @@ const messages = defineMessages({
63 }, 63 },
64 customUrlPremiumInfo: { 64 customUrlPremiumInfo: {
65 id: 'settings.service.form.customUrlPremiumInfo', 65 id: 'settings.service.form.customUrlPremiumInfo',
66 defaultMessage: '!!!To add self hosted services, you need a Franz Premium Supporter Account.', 66 defaultMessage: '!!!To add self hosted services, you need a Ferdi Premium Supporter Account.',
67 }, 67 },
68 customUrlUpgradeAccount: { 68 customUrlUpgradeAccount: {
69 id: 'settings.service.form.customUrlUpgradeAccount', 69 id: 'settings.service.form.customUrlUpgradeAccount',
@@ -103,11 +103,11 @@ const messages = defineMessages({
103 }, 103 },
104 proxyRestartInfo: { 104 proxyRestartInfo: {
105 id: 'settings.service.form.proxy.restartInfo', 105 id: 'settings.service.form.proxy.restartInfo',
106 defaultMessage: '!!!Please restart Franz after changing proxy Settings.', 106 defaultMessage: '!!!Please restart Ferdi after changing proxy Settings.',
107 }, 107 },
108 proxyInfo: { 108 proxyInfo: {
109 id: 'settings.service.form.proxy.info', 109 id: 'settings.service.form.proxy.info',
110 defaultMessage: '!!!Proxy settings will not be synchronized with the Franz servers.', 110 defaultMessage: '!!!Proxy settings will not be synchronized with the Ferdi servers.',
111 }, 111 },
112}); 112});
113 113
@@ -155,7 +155,7 @@ export default @observer class EditServiceForm extends Component {
155 const values = form.values(); 155 const values = form.values();
156 let isValid = true; 156 let isValid = true;
157 157
158 const files = form.$('customIcon').files; 158 const { files } = form.$('customIcon');
159 if (files) { 159 if (files) {
160 values.iconFile = files[0]; 160 values.iconFile = files[0];
161 } 161 }
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 0b69f7514..0152857a6 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -9,6 +9,7 @@ import Button from '../../ui/Button';
9import Toggle from '../../ui/Toggle'; 9import Toggle from '../../ui/Toggle';
10import Select from '../../ui/Select'; 10import Select from '../../ui/Select';
11import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; 11import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer';
12import Input from '../../ui/Input';
12 13
13import { FRANZ_TRANSLATION } from '../../../config'; 14import { FRANZ_TRANSLATION } from '../../../config';
14 15
@@ -21,6 +22,22 @@ const messages = defineMessages({
21 id: 'settings.app.headlineGeneral', 22 id: 'settings.app.headlineGeneral',
22 defaultMessage: '!!!General', 23 defaultMessage: '!!!General',
23 }, 24 },
25 serverInfo: {
26 id: 'settings.app.serverInfo',
27 defaultMessage: '!!!We advice you to logout after changing your server as your settings might not be saved otherwise.',
28 },
29 todoServerInfo: {
30 id: 'settings.app.todoServerInfo',
31 defaultMessage: '!!!This server will be used for the "Franz Todo" feature. The default server will only work for premium users. (default: https://app.franztodos.com)',
32 },
33 lockedPassword: {
34 id: 'settings.app.lockedPassword',
35 defaultMessage: '!!!Ferdi Lock Password',
36 },
37 lockedPasswordInfo: {
38 id: 'settings.app.lockedPasswordInfo',
39 defaultMessage: '!!!Please make sure to set a password you\'ll remember.\nIf you loose this password, you will have to reinstall Ferdi.',
40 },
24 headlineLanguage: { 41 headlineLanguage: {
25 id: 'settings.app.headlineLanguage', 42 id: 'settings.app.headlineLanguage',
26 defaultMessage: '!!!Language', 43 defaultMessage: '!!!Language',
@@ -39,7 +56,7 @@ const messages = defineMessages({
39 }, 56 },
40 translationHelp: { 57 translationHelp: {
41 id: 'settings.app.translationHelp', 58 id: 'settings.app.translationHelp',
42 defaultMessage: '!!!Help us to translate Franz into your language.', 59 defaultMessage: '!!!Help us to translate Ferdi into your language.',
43 }, 60 },
44 subheadlineCache: { 61 subheadlineCache: {
45 id: 'settings.app.subheadlineCache', 62 id: 'settings.app.subheadlineCache',
@@ -47,7 +64,7 @@ const messages = defineMessages({
47 }, 64 },
48 cacheInfo: { 65 cacheInfo: {
49 id: 'settings.app.cacheInfo', 66 id: 'settings.app.cacheInfo',
50 defaultMessage: '!!!Franz cache is currently using {size} of disk space.', 67 defaultMessage: '!!!Ferdi cache is currently using {size} of disk space.',
51 }, 68 },
52 buttonClearAllCache: { 69 buttonClearAllCache: {
53 id: 'settings.app.buttonClearAllCache', 70 id: 'settings.app.buttonClearAllCache',
@@ -71,7 +88,7 @@ const messages = defineMessages({
71 }, 88 },
72 updateStatusUpToDate: { 89 updateStatusUpToDate: {
73 id: 'settings.app.updateStatusUpToDate', 90 id: 'settings.app.updateStatusUpToDate',
74 defaultMessage: '!!!You are using the latest version of Franz', 91 defaultMessage: '!!!You are using the latest version of Ferdi',
75 }, 92 },
76 currentVersion: { 93 currentVersion: {
77 id: 'settings.app.currentVersion', 94 id: 'settings.app.currentVersion',
@@ -103,6 +120,7 @@ export default @observer class EditSettingsForm extends Component {
103 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, 120 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired,
104 isTodosEnabled: PropTypes.bool.isRequired, 121 isTodosEnabled: PropTypes.bool.isRequired,
105 isWorkspaceEnabled: PropTypes.bool.isRequired, 122 isWorkspaceEnabled: PropTypes.bool.isRequired,
123 server: PropTypes.string.isRequired,
106 }; 124 };
107 125
108 static contextTypes = { 126 static contextTypes = {
@@ -135,6 +153,7 @@ export default @observer class EditSettingsForm extends Component {
135 isSpellcheckerIncludedInCurrentPlan, 153 isSpellcheckerIncludedInCurrentPlan,
136 isTodosEnabled, 154 isTodosEnabled,
137 isWorkspaceEnabled, 155 isWorkspaceEnabled,
156 server,
138 } = this.props; 157 } = this.props;
139 const { intl } = this.context; 158 const { intl } = this.context;
140 159
@@ -147,6 +166,9 @@ export default @observer class EditSettingsForm extends Component {
147 updateButtonLabelMessage = messages.buttonSearchForUpdate; 166 updateButtonLabelMessage = messages.buttonSearchForUpdate;
148 } 167 }
149 168
169 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
170 const lockingFeatureEnabled = window.ferdi.stores.settings.all.app.lockingFeatureEnabled;
171
150 return ( 172 return (
151 <div className="settings__main"> 173 <div className="settings__main">
152 <div className="settings__header"> 174 <div className="settings__header">
@@ -163,16 +185,92 @@ export default @observer class EditSettingsForm extends Component {
163 <Toggle field={form.$('autoLaunchOnStart')} /> 185 <Toggle field={form.$('autoLaunchOnStart')} />
164 <Toggle field={form.$('runInBackground')} /> 186 <Toggle field={form.$('runInBackground')} />
165 <Toggle field={form.$('enableSystemTray')} /> 187 <Toggle field={form.$('enableSystemTray')} />
188 <Toggle field={form.$('privateNotifications')} />
166 {process.platform === 'win32' && ( 189 {process.platform === 'win32' && (
167 <Toggle field={form.$('minimizeToSystemTray')} /> 190 <Toggle field={form.$('minimizeToSystemTray')} />
168 )} 191 )}
192 <Input
193 placeholder="Server"
194 onChange={e => this.submit(e)}
195 field={form.$('server')}
196 autoFocus
197 />
198 {isLoggedIn && (
199 <p>{ intl.formatMessage(messages.serverInfo) }</p>
200 )}
201 {server === 'https://api.franzinfra.com' && (
202 <p
203 className="settings__message"
204 style={{
205 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem',
206 }}
207 >
208 <span>
209 You are using the official Franz Server for Ferdi.
210 <br />
211 We know that Ferdi allows you to use all its features for free but you are
212 still using Franz&#x27;s server resources - which Franz&#x27;s creator has to pay for.
213 <br />
214 Please still consider
215 {' '}
216 <a href="https://www.meetfranz.com/pricing" target="_blank">paying for a Franz account</a>
217 {' '}
218 or
219 {' '}
220 <a href="https://github.com/vantezzen/ferdi-server" target="_blank">using a self-hosted ferdi-server</a>
221 {' '}
222 (if you have the knowledge and resources to do so).
223 <br />
224 By using Ferdi, you still profit greatly from Franz&#x27;s recipe store, server resources and its development.
225 </span>
226 </p>
227 )}
169 {isWorkspaceEnabled && ( 228 {isWorkspaceEnabled && (
170 <Toggle field={form.$('keepAllWorkspacesLoaded')} /> 229 <Toggle field={form.$('keepAllWorkspacesLoaded')} />
171 )} 230 )}
172 {isTodosEnabled && ( 231 {isTodosEnabled && (
173 <Toggle field={form.$('enableTodos')} /> 232 <>
233 <Toggle field={form.$('enableTodos')} />
234 <Input
235 placeholder="Todo Server"
236 onChange={e => this.submit(e)}
237 field={form.$('todoServer')}
238 />
239 <p>{ intl.formatMessage(messages.todoServerInfo) }</p>
240 </>
174 )} 241 )}
175 242
243 <Toggle field={form.$('lockingFeatureEnabled')} />
244 {lockingFeatureEnabled && (
245 <>
246 <Input
247 placeholder={intl.formatMessage(messages.lockedPassword)}
248 onChange={e => this.submit(e)}
249 field={form.$('lockedPassword')}
250 type="password"
251 />
252 <p>
253 { intl.formatMessage(messages.lockedPasswordInfo) }
254 </p>
255 </>
256 )}
257 <p
258 className="settings__message"
259 style={{
260 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem',
261 }}
262 >
263 <span>
264 Ferdi password lock allows you to keep your messages protected.
265 <br />
266 Using Ferdi password lock, you will be prompted to enter your password everytime you
267 start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut
268 {' '}
269 <code>CMD/CTRL+Shift+L</code>
270 </span>
271 </p>
272
273
176 {/* Appearance */} 274 {/* Appearance */}
177 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> 275 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2>
178 <Toggle field={form.$('showDisabledServices')} /> 276 <Toggle field={form.$('showDisabledServices')} />
@@ -257,6 +355,18 @@ export default @observer class EditSettingsForm extends Component {
257 <span className="mdi mdi-information" /> 355 <span className="mdi mdi-information" />
258 {intl.formatMessage(messages.languageDisclaimer)} 356 {intl.formatMessage(messages.languageDisclaimer)}
259 </p> 357 </p>
358 <p className="settings__message">
359 <span className="mdi mdi-github-face" />
360 <span>
361 Ferdi is based on
362 {' '}
363 <a href="https://github.com/meetfranz/franz" target="_blank">Franz</a>
364 , a project published
365 under the
366 {' '}
367 <a href="https://github.com/meetfranz/franz/blob/master/LICENSE" target="_blank">Apache-2.0 License</a>
368 </span>
369 </p>
260 </form> 370 </form>
261 </div> 371 </div>
262 </div> 372 </div>
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
index 366b0113a..2bf46b48d 100644
--- a/src/components/settings/team/TeamDashboard.js
+++ b/src/components/settings/team/TeamDashboard.js
@@ -20,7 +20,7 @@ const messages = defineMessages({
20 }, 20 },
21 contentHeadline: { 21 contentHeadline: {
22 id: 'settings.team.contentHeadline', 22 id: 'settings.team.contentHeadline',
23 defaultMessage: '!!!Franz for Teams', 23 defaultMessage: '!!!Ferdi for Teams',
24 }, 24 },
25 intro: { 25 intro: {
26 id: 'settings.team.intro', 26 id: 'settings.team.intro',
@@ -28,7 +28,7 @@ const messages = defineMessages({
28 }, 28 },
29 copy: { 29 copy: {
30 id: 'settings.team.copy', 30 id: 'settings.team.copy',
31 defaultMessage: '!!!Franz 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!', 31 defaultMessage: '!!!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!',
32 }, 32 },
33 manageButton: { 33 manageButton: {
34 id: 'settings.team.manageAction', 34 id: 'settings.team.manageAction',
diff --git a/src/components/ui/ActivateTrialButton/index.js b/src/components/ui/ActivateTrialButton/index.js
index e0637da90..340123c2f 100644
--- a/src/components/ui/ActivateTrialButton/index.js
+++ b/src/components/ui/ActivateTrialButton/index.js
@@ -5,7 +5,6 @@ import { defineMessages, intlShape } from 'react-intl';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6 6
7import { Button } from '@meetfranz/forms'; 7import { Button } from '@meetfranz/forms';
8import { gaEvent } from '../../../lib/analytics';
9 8
10import UserStore from '../../../stores/UserStore'; 9import UserStore from '../../../stores/UserStore';
11 10
@@ -63,25 +62,9 @@ class ActivateTrialButton extends Component {
63 }; 62 };
64 63
65 handleCTAClick() { 64 handleCTAClick() {
66 const { actions, stores, gaEventInfo } = this.props; 65 const { actions } = this.props;
67 const { hadSubscription } = stores.user.data;
68 // const { defaultTrialPlan } = stores.features.features;
69
70 let label = '';
71 if (!hadSubscription) {
72 // actions.user.activateTrial({ planId: defaultTrialPlan });
73
74 label = 'Start Trial';
75 } else {
76 label = 'Upgrade Account';
77 }
78 66
79 actions.ui.openSettings({ path: 'user' }); 67 actions.ui.openSettings({ path: 'user' });
80
81 if (gaEventInfo) {
82 const { category, event } = gaEventInfo;
83 gaEvent(category, event, label);
84 }
85 } 68 }
86 69
87 render() { 70 render() {
diff --git a/src/components/ui/AppLoader/index.js b/src/components/ui/AppLoader/index.js
index b0c7fed7b..a9a87707b 100644
--- a/src/components/ui/AppLoader/index.js
+++ b/src/components/ui/AppLoader/index.js
@@ -49,7 +49,7 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component
49 49
50 return ( 50 return (
51 <FullscreenLoader 51 <FullscreenLoader
52 title="Franz" 52 title="Ferdi"
53 className={classes.component} 53 className={classes.component}
54 spinnerColor={theme.colorAppLoaderSpinner} 54 spinnerColor={theme.colorAppLoaderSpinner}
55 > 55 >
diff --git a/src/components/ui/Button.js b/src/components/ui/Button.js
index ffc7f7051..e2d7cea83 100644
--- a/src/components/ui/Button.js
+++ b/src/components/ui/Button.js
@@ -69,7 +69,7 @@ export default @observer class Button extends Component {
69 loaded={loaded} 69 loaded={loaded}
70 lines={10} 70 lines={10}
71 scale={0.4} 71 scale={0.4}
72 color={buttonType !== 'secondary' ? '#FFF' : '#373a3c'} 72 color={buttonType !== 'secondary' ? '#FFF' : '#7367F0'}
73 component="span" 73 component="span"
74 /> 74 />
75 {label} 75 {label}
diff --git a/src/components/ui/FullscreenLoader/styles.js b/src/components/ui/FullscreenLoader/styles.js
index 64d24e4ce..d516781a8 100644
--- a/src/components/ui/FullscreenLoader/styles.js
+++ b/src/components/ui/FullscreenLoader/styles.js
@@ -4,6 +4,7 @@ export default {
4 alignItems: 'center', 4 alignItems: 'center',
5 position: 'absolute', 5 position: 'absolute',
6 width: '100%', 6 width: '100%',
7 background: 'linear-gradient( 135deg, #CE9FFC 10%, #7367F0 100%)',
7 }, 8 },
8 component: { 9 component: {
9 width: '100%', 10 width: '100%',
diff --git a/src/components/ui/Input.js b/src/components/ui/Input.js
index 9b070c4df..4e3eb4ab8 100644
--- a/src/components/ui/Input.js
+++ b/src/components/ui/Input.js
@@ -68,7 +68,7 @@ export default @observer class Input extends Component {
68 68
69 const { passwordScore } = this.state; 69 const { passwordScore } = this.state;
70 70
71 let type = field.type; 71 let { type } = field;
72 if (type === 'password' && this.state.showPassword) { 72 if (type === 'password' && this.state.showPassword) {
73 type = 'text'; 73 type = 'text';
74 } 74 }
diff --git a/src/components/ui/Link.js b/src/components/ui/Link.js
index b88686d5e..5f729844b 100644
--- a/src/components/ui/Link.js
+++ b/src/components/ui/Link.js
@@ -25,6 +25,7 @@ export default @inject('stores') @observer class Link extends Component {
25 className, 25 className,
26 activeClassName, 26 activeClassName,
27 strictFilter, 27 strictFilter,
28 style,
28 } = this.props; 29 } = this.props;
29 const { router } = stores; 30 const { router } = stores;
30 31
@@ -44,6 +45,7 @@ export default @inject('stores') @observer class Link extends Component {
44 <a 45 <a
45 href={router.history.createHref(to)} 46 href={router.history.createHref(to)}
46 className={linkClasses} 47 className={linkClasses}
48 style={style}
47 onClick={e => this.onClick(e)} 49 onClick={e => this.onClick(e)}
48 > 50 >
49 {children} 51 {children}
@@ -65,6 +67,7 @@ Link.wrappedComponent.propTypes = {
65 activeClassName: PropTypes.string, 67 activeClassName: PropTypes.string,
66 strictFilter: PropTypes.bool, 68 strictFilter: PropTypes.bool,
67 target: PropTypes.string, 69 target: PropTypes.string,
70 style: PropTypes.object,
68}; 71};
69 72
70Link.wrappedComponent.defaultProps = { 73Link.wrappedComponent.defaultProps = {
@@ -72,4 +75,5 @@ Link.wrappedComponent.defaultProps = {
72 activeClassName: '', 75 activeClassName: '',
73 strictFilter: false, 76 strictFilter: false,
74 target: '', 77 target: '',
78 style: {},
75}; 79};
diff --git a/src/components/ui/Loader.js b/src/components/ui/Loader.js
index f73296bb6..de8769b6c 100644
--- a/src/components/ui/Loader.js
+++ b/src/components/ui/Loader.js
@@ -16,7 +16,7 @@ export default class LoaderComponent extends Component {
16 children: null, 16 children: null,
17 loaded: false, 17 loaded: false,
18 className: '', 18 className: '',
19 color: '#373a3c', 19 color: '#7367F0',
20 }; 20 };
21 21
22 render() { 22 render() {
diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js
index 8d2746e22..7ba353be3 100644
--- a/src/components/ui/PremiumFeatureContainer/index.js
+++ b/src/components/ui/PremiumFeatureContainer/index.js
@@ -9,8 +9,7 @@ import { oneOrManyChildElements } from '../../../prop-types';
9import UserStore from '../../../stores/UserStore'; 9import UserStore from '../../../stores/UserStore';
10 10
11import styles from './styles'; 11import styles from './styles';
12import { gaEvent } from '../../../lib/analytics'; 12import FeatureStore from '../../../stores/FeaturesStore';
13import { FeatureStore } from '../../../features/utils/FeatureStore';
14 13
15const messages = defineMessages({ 14const messages = defineMessages({
16 action: { 15 action: {
@@ -50,7 +49,6 @@ class PremiumFeatureContainer extends Component {
50 actions, 49 actions,
51 condition, 50 condition,
52 stores, 51 stores,
53 gaEventInfo,
54 } = this.props; 52 } = this.props;
55 53
56 const { intl } = this.context; 54 const { intl } = this.context;
@@ -75,10 +73,6 @@ class PremiumFeatureContainer extends Component {
75 type="button" 73 type="button"
76 onClick={() => { 74 onClick={() => {
77 actions.ui.openSettings({ path: 'user' }); 75 actions.ui.openSettings({ path: 'user' });
78 if (gaEventInfo) {
79 const { category, event, label } = gaEventInfo;
80 gaEvent(category, event, label);
81 }
82 }} 76 }}
83 > 77 >
84 {intl.formatMessage(messages.action)} 78 {intl.formatMessage(messages.action)}
diff --git a/src/components/ui/UpgradeButton/index.js b/src/components/ui/UpgradeButton/index.js
index 73762f0bf..1b764bd90 100644
--- a/src/components/ui/UpgradeButton/index.js
+++ b/src/components/ui/UpgradeButton/index.js
@@ -4,7 +4,6 @@ import { inject, observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5 5
6import { Button } from '@meetfranz/forms'; 6import { Button } from '@meetfranz/forms';
7import { gaEvent } from '../../../lib/analytics';
8 7
9import UserStore from '../../../stores/UserStore'; 8import UserStore from '../../../stores/UserStore';
10import ActivateTrialButton from '../ActivateTrialButton'; 9import ActivateTrialButton from '../ActivateTrialButton';
@@ -41,13 +40,9 @@ class UpgradeButton extends Component {
41 }; 40 };
42 41
43 handleCTAClick() { 42 handleCTAClick() {
44 const { actions, gaEventInfo } = this.props; 43 const { actions } = this.props;
45 44
46 actions.ui.openSettings({ path: 'user' }); 45 actions.ui.openSettings({ path: 'user' });
47 if (gaEventInfo) {
48 const { category, event } = gaEventInfo;
49 gaEvent(category, event, 'Upgrade Account');
50 }
51 } 46 }
52 47
53 render() { 48 render() {
diff --git a/src/config.js b/src/config.js
index 78a92d948..d01ece849 100644
--- a/src/config.js
+++ b/src/config.js
@@ -31,11 +31,17 @@ export const DEVELOPMENT_TODOS_FRONTEND_URL = 'https://development--franz-todos.
31 31
32export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; 32export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12';
33 33
34export const DEFAULT_LOCK_PASSWORD = 'ferdi';
35export const KEEP_WS_LOADED_USID = '0a0aa000-0a0a-49a0-a000-a0a0a0a0a0a0';
36
34export const DEFAULT_APP_SETTINGS = { 37export const DEFAULT_APP_SETTINGS = {
35 autoLaunchInBackground: false, 38 autoLaunchInBackground: false,
36 runInBackground: true, 39 runInBackground: true,
37 enableSystemTray: true, 40 enableSystemTray: true,
38 minimizeToSystemTray: false, 41 minimizeToSystemTray: false,
42 privateNotifications: false,
43 server: LIVE_API,
44 todoServer: PRODUCTION_TODOS_FRONTEND_URL,
39 showDisabledServices: true, 45 showDisabledServices: true,
40 showMessageBadgeWhenMuted: true, 46 showMessageBadgeWhenMuted: true,
41 enableSpellchecking: true, 47 enableSpellchecking: true,
@@ -47,6 +53,10 @@ export const DEFAULT_APP_SETTINGS = {
47 isAppMuted: false, 53 isAppMuted: false,
48 enableGPUAcceleration: true, 54 enableGPUAcceleration: true,
49 serviceLimit: 5, 55 serviceLimit: 5,
56 autohideMenuBar: false,
57 lockingFeatureEnabled: false,
58 locked: false,
59 lockedPassword: '',
50}; 60};
51 61
52export const DEFAULT_FEATURES_CONFIG = { 62export const DEFAULT_FEATURES_CONFIG = {
@@ -57,7 +67,7 @@ export const DEFAULT_FEATURES_CONFIG = {
57 wait: ms('10s'), 67 wait: ms('10s'),
58 }, 68 },
59 isServiceProxyEnabled: false, 69 isServiceProxyEnabled: false,
60 isServiceProxyIncludedInCurrentPlan: false, 70 isServiceProxyIncludedInCurrentPlan: true,
61 isAnnouncementsEnabled: true, 71 isAnnouncementsEnabled: true,
62 isWorkspaceIncludedInCurrentPlan: true, 72 isWorkspaceIncludedInCurrentPlan: true,
63 isWorkspaceEnabled: false, 73 isWorkspaceEnabled: false,
diff --git a/src/containers/auth/LockedScreen.js b/src/containers/auth/LockedScreen.js
new file mode 100644
index 000000000..94285fb06
--- /dev/null
+++ b/src/containers/auth/LockedScreen.js
@@ -0,0 +1,72 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4import Locked from '../../components/auth/Locked';
5import SettingsStore from '../../stores/SettingsStore';
6import { DEFAULT_LOCK_PASSWORD } from '../../config';
7
8import { globalError as globalErrorPropType } from '../../prop-types';
9
10export default @inject('stores', 'actions') @observer class LockedScreen extends Component {
11 static propTypes = {
12 error: globalErrorPropType.isRequired,
13 };
14
15 state = {
16 error: false,
17 }
18
19 constructor(props) {
20 super(props);
21
22 this.onSubmit = this.onSubmit.bind(this);
23 }
24
25 onSubmit(values) {
26 const { password } = values;
27
28 let correctPassword = this.props.stores.settings.all.app.lockedPassword;
29 if (!correctPassword) {
30 // Lock feature was enabled but no password was set
31 // Use default lock password so user can exit
32 correctPassword = DEFAULT_LOCK_PASSWORD;
33 }
34
35 if (String(password) === String(correctPassword)) {
36 this.props.actions.settings.update({
37 type: 'app',
38 data: {
39 locked: false,
40 },
41 });
42 } else {
43 this.setState({
44 error: {
45 code: 'invalid-credentials',
46 },
47 });
48 }
49 }
50
51 render() {
52 const { stores, error } = this.props;
53 return (
54 <Locked
55 onSubmit={this.onSubmit}
56 isSubmitting={stores.user.loginRequest.isExecuting}
57 error={this.state.error || error}
58 />
59 );
60 }
61}
62
63LockedScreen.wrappedComponent.propTypes = {
64 actions: PropTypes.shape({
65 settings: PropTypes.shape({
66 update: PropTypes.func.isRequired,
67 }).isRequired,
68 }).isRequired,
69 stores: PropTypes.shape({
70 settings: PropTypes.instanceOf(SettingsStore).isRequired,
71 }).isRequired,
72};
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index a14a98554..95fbd109f 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -140,6 +140,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
140 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} 140 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar}
141 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} 141 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED}
142 nextAppReleaseVersion={app.nextAppReleaseVersion} 142 nextAppReleaseVersion={app.nextAppReleaseVersion}
143 authRequestFailed={app.authRequestFailed}
143 sidebar={sidebar} 144 sidebar={sidebar}
144 workspacesDrawer={workspacesDrawer} 145 workspacesDrawer={workspacesDrawer}
145 services={servicesContainer} 146 services={servicesContainer}
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index 9c74cf2ab..41cdeb79a 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -26,7 +26,14 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend
26 handleWebsiteLink(route) { 26 handleWebsiteLink(route) {
27 const { actions, stores } = this.props; 27 const { actions, stores } = this.props;
28 28
29 const url = stores.user.getAuthURL(`${WEBSITE}${route}?utm_source=app&utm_medium=account_dashboard`); 29 const api = stores.settings.all.app.server;
30
31 let url;
32 if (api === 'https://api.franzinfra.com') {
33 url = stores.user.getAuthURL(`${WEBSITE}${route}?utm_source=app&utm_medium=account_dashboard`);
34 } else {
35 url = `${api}${route}`;
36 }
30 37
31 actions.app.openExternalUrl({ url }); 38 actions.app.openExternalUrl({ url });
32 } 39 }
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 9aba212be..4d85d4f12 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -9,7 +9,7 @@ import UserStore from '../../stores/UserStore';
9import TodosStore from '../../features/todos/store'; 9import TodosStore from '../../features/todos/store';
10import Form from '../../lib/Form'; 10import Form from '../../lib/Form';
11import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; 11import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages';
12import { DEFAULT_APP_SETTINGS } from '../../config'; 12import { DEFAULT_APP_SETTINGS, DEFAULT_LOCK_PASSWORD } from '../../config';
13import { config as spellcheckerConfig } from '../../features/spellchecker'; 13import { config as spellcheckerConfig } from '../../features/spellchecker';
14 14
15import { getSelectOptions } from '../../helpers/i18n-helpers'; 15import { getSelectOptions } from '../../helpers/i18n-helpers';
@@ -17,6 +17,8 @@ import { getSelectOptions } from '../../helpers/i18n-helpers';
17import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; 17import EditSettingsForm from '../../components/settings/settings/EditSettingsForm';
18import ErrorBoundary from '../../components/util/ErrorBoundary'; 18import ErrorBoundary from '../../components/util/ErrorBoundary';
19 19
20import { API, TODOS_FRONTEND } from '../../environment';
21
20import globalMessages from '../../i18n/globalMessages'; 22import globalMessages from '../../i18n/globalMessages';
21import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; 23import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos';
22import WorkspacesStore from '../../features/workspaces/store'; 24import WorkspacesStore from '../../features/workspaces/store';
@@ -25,7 +27,7 @@ import { DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED } from '../../features/works
25const messages = defineMessages({ 27const messages = defineMessages({
26 autoLaunchOnStart: { 28 autoLaunchOnStart: {
27 id: 'settings.app.form.autoLaunchOnStart', 29 id: 'settings.app.form.autoLaunchOnStart',
28 defaultMessage: '!!!Launch Franz on start', 30 defaultMessage: '!!!Launch Ferdi on start',
29 }, 31 },
30 autoLaunchInBackground: { 32 autoLaunchInBackground: {
31 id: 'settings.app.form.autoLaunchInBackground', 33 id: 'settings.app.form.autoLaunchInBackground',
@@ -33,15 +35,35 @@ const messages = defineMessages({
33 }, 35 },
34 runInBackground: { 36 runInBackground: {
35 id: 'settings.app.form.runInBackground', 37 id: 'settings.app.form.runInBackground',
36 defaultMessage: '!!!Keep Franz in background when closing the window', 38 defaultMessage: '!!!Keep Ferdi in background when closing the window',
37 }, 39 },
38 enableSystemTray: { 40 enableSystemTray: {
39 id: 'settings.app.form.enableSystemTray', 41 id: 'settings.app.form.enableSystemTray',
40 defaultMessage: '!!!Show Franz in system tray', 42 defaultMessage: '!!!Show Ferdi in system tray',
41 }, 43 },
42 minimizeToSystemTray: { 44 minimizeToSystemTray: {
43 id: 'settings.app.form.minimizeToSystemTray', 45 id: 'settings.app.form.minimizeToSystemTray',
44 defaultMessage: '!!!Minimize Franz to system tray', 46 defaultMessage: '!!!Minimize Ferdi to system tray',
47 },
48 privateNotifications: {
49 id: 'settings.app.form.privateNotifications',
50 defaultMessage: '!!!Don\'t show message content in notifications',
51 },
52 server: {
53 id: 'settings.app.form.server',
54 defaultMessage: '!!!Server',
55 },
56 todoServer: {
57 id: 'settings.app.form.todoServer',
58 defaultMessage: '!!!Todo Server',
59 },
60 enableLock: {
61 id: 'settings.app.form.enableLock',
62 defaultMessage: '!!!Enable Ferdi password lock',
63 },
64 lockPassword: {
65 id: 'settings.app.form.lockPassword',
66 defaultMessage: '!!!Ferdi Lock password',
45 }, 67 },
46 language: { 68 language: {
47 id: 'settings.app.form.language', 69 id: 'settings.app.form.language',
@@ -107,6 +129,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
107 runInBackground: settingsData.runInBackground, 129 runInBackground: settingsData.runInBackground,
108 enableSystemTray: settingsData.enableSystemTray, 130 enableSystemTray: settingsData.enableSystemTray,
109 minimizeToSystemTray: settingsData.minimizeToSystemTray, 131 minimizeToSystemTray: settingsData.minimizeToSystemTray,
132 privateNotifications: settingsData.privateNotifications,
133 server: settingsData.server,
134 todoServer: settingsData.todoServer,
135 lockingFeatureEnabled: settingsData.lockingFeatureEnabled,
136 lockedPassword: settingsData.lockedPassword,
110 enableGPUAcceleration: settingsData.enableGPUAcceleration, 137 enableGPUAcceleration: settingsData.enableGPUAcceleration,
111 showDisabledServices: settingsData.showDisabledServices, 138 showDisabledServices: settingsData.showDisabledServices,
112 darkMode: settingsData.darkMode, 139 darkMode: settingsData.darkMode,
@@ -182,6 +209,32 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
182 value: settings.all.app.minimizeToSystemTray, 209 value: settings.all.app.minimizeToSystemTray,
183 default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, 210 default: DEFAULT_APP_SETTINGS.minimizeToSystemTray,
184 }, 211 },
212 privateNotifications: {
213 label: intl.formatMessage(messages.privateNotifications),
214 value: settings.all.app.privateNotifications,
215 default: DEFAULT_APP_SETTINGS.privateNotifications,
216 },
217 server: {
218 label: intl.formatMessage(messages.server),
219 value: settings.all.app.server || API,
220 default: API,
221 },
222 todoServer: {
223 label: intl.formatMessage(messages.todoServer),
224 value: settings.all.app.todoServer,
225 default: TODOS_FRONTEND,
226 },
227 lockingFeatureEnabled: {
228 label: intl.formatMessage(messages.enableLock),
229 value: settings.all.app.lockingFeatureEnabled || false,
230 default: false,
231 },
232 lockedPassword: {
233 label: intl.formatMessage(messages.lockPassword),
234 value: settings.all.app.lockedPassword,
235 default: DEFAULT_LOCK_PASSWORD,
236 type: 'password',
237 },
185 showDisabledServices: { 238 showDisabledServices: {
186 label: intl.formatMessage(messages.showDisabledServices), 239 label: intl.formatMessage(messages.showDisabledServices),
187 value: settings.all.app.showDisabledServices, 240 value: settings.all.app.showDisabledServices,
@@ -257,6 +310,8 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
257 cacheSize, 310 cacheSize,
258 updateStatusTypes, 311 updateStatusTypes,
259 isClearingAllCache, 312 isClearingAllCache,
313 server,
314 lockingFeatureEnabled,
260 } = app; 315 } = app;
261 const { 316 const {
262 checkForUpdates, 317 checkForUpdates,
@@ -282,6 +337,8 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
282 isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan} 337 isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan}
283 isTodosEnabled={todos.isFeatureActive} 338 isTodosEnabled={todos.isFeatureActive}
284 isWorkspaceEnabled={workspaces.isFeatureActive} 339 isWorkspaceEnabled={workspaces.isFeatureActive}
340 server={server || 'https://api.franzinfra.com'}
341 lockingFeatureEnabled={lockingFeatureEnabled}
285 /> 342 />
286 </ErrorBoundary> 343 </ErrorBoundary>
287 ); 344 );
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js
index 132820b6f..692dc26f1 100644
--- a/src/containers/settings/RecipesScreen.js
+++ b/src/containers/settings/RecipesScreen.js
@@ -13,7 +13,6 @@ import UserStore from '../../stores/UserStore';
13import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; 13import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard';
14import ErrorBoundary from '../../components/util/ErrorBoundary'; 14import ErrorBoundary from '../../components/util/ErrorBoundary';
15import { FRANZ_DEV_DOCS } from '../../config'; 15import { FRANZ_DEV_DOCS } from '../../config';
16import { gaEvent } from '../../lib/analytics';
17import { communityRecipesStore } from '../../features/communityRecipes'; 16import { communityRecipesStore } from '../../features/communityRecipes';
18 17
19const { app } = remote; 18const { app } = remote;
@@ -122,11 +121,9 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend
122 recipeDirectory={recipeDirectory} 121 recipeDirectory={recipeDirectory}
123 openRecipeDirectory={() => { 122 openRecipeDirectory={() => {
124 shell.openItem(recipeDirectory); 123 shell.openItem(recipeDirectory);
125 gaEvent('Recipe', 'open-recipe-folder', 'Open Folder');
126 }} 124 }}
127 openDevDocs={() => { 125 openDevDocs={() => {
128 appActions.openExternalUrl({ url: FRANZ_DEV_DOCS }); 126 appActions.openExternalUrl({ url: FRANZ_DEV_DOCS });
129 gaEvent('Recipe', 'open-dev-docs', 'Developer Documentation');
130 }} 127 }}
131 isCommunityRecipesIncludedInCurrentPlan={communityRecipesStore.isCommunityRecipesIncludedInCurrentPlan} 128 isCommunityRecipesIncludedInCurrentPlan={communityRecipesStore.isCommunityRecipesIncludedInCurrentPlan}
132 isUserPremiumUser={user.isPremium} 129 isUserPremiumUser={user.isPremium}
diff --git a/src/dev-app-update.yml b/src/dev-app-update.yml
index 8ddca71e3..978e30a9b 100644
--- a/src/dev-app-update.yml
+++ b/src/dev-app-update.yml
@@ -1,3 +1,3 @@
1owner: meetfranz 1owner: kytwb
2repo: franz 2repo: Ferdi
3provider: github 3provider: github
diff --git a/src/electron/Settings.js b/src/electron/Settings.js
index 63f43b6b7..95e3dcfa4 100644
--- a/src/electron/Settings.js
+++ b/src/electron/Settings.js
@@ -4,7 +4,7 @@ import path from 'path';
4 4
5import { SETTINGS_PATH } from '../config'; 5import { SETTINGS_PATH } from '../config';
6 6
7const debug = require('debug')('Franz:Settings'); 7const debug = require('debug')('Ferdi:Settings');
8 8
9export default class Settings { 9export default class Settings {
10 type = ''; 10 type = '';
diff --git a/src/electron/deepLinking.js b/src/electron/deepLinking.js
index ef23fd3c5..70e5cfb6f 100644
--- a/src/electron/deepLinking.js
+++ b/src/electron/deepLinking.js
@@ -1,5 +1,5 @@
1export default function handleDeepLink(window, rawUrl) { 1export default function handleDeepLink(window, rawUrl) {
2 const url = rawUrl.replace('franz://', ''); 2 const url = rawUrl.replace('ferdi://', '');
3 3
4 if (!url) return; 4 if (!url) return;
5 5
diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js
index 9a04c1958..6a3314b2b 100644
--- a/src/electron/ipc-api/autoUpdate.js
+++ b/src/electron/ipc-api/autoUpdate.js
@@ -1,7 +1,7 @@
1import { app, ipcMain } from 'electron'; 1import { app, ipcMain } from 'electron';
2import { autoUpdater } from 'electron-updater'; 2import { autoUpdater } from 'electron-updater';
3 3
4const debug = require('debug')('Franz:ipcApi:autoUpdate'); 4const debug = require('debug')('Ferdi:ipcApi:autoUpdate');
5 5
6export default (params) => { 6export default (params) => {
7 if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { 7 if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) {
diff --git a/src/electron/ipc-api/download.js b/src/electron/ipc-api/download.js
index e6703af2d..01b81d388 100644
--- a/src/electron/ipc-api/download.js
+++ b/src/electron/ipc-api/download.js
@@ -3,7 +3,7 @@ import { download } from 'electron-dl';
3import mime from 'mime-types'; 3import mime from 'mime-types';
4import fs from 'fs-extra'; 4import fs from 'fs-extra';
5 5
6const debug = require('debug')('Franz:ipcApi:download'); 6const debug = require('debug')('Ferdi:ipcApi:download');
7 7
8function decodeBase64Image(dataString) { 8function decodeBase64Image(dataString) {
9 const matches = dataString.match(/^data:([A-Za-z-+/]+);base64,(.+)$/); 9 const matches = dataString.match(/^data:([A-Za-z-+/]+);base64,(.+)$/);
diff --git a/src/environment.js b/src/environment.js
index 4be2c7d70..6c889f7d8 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -12,7 +12,6 @@ import {
12 DEV_WS_API, 12 DEV_WS_API,
13 LOCAL_TODOS_FRONTEND_URL, 13 LOCAL_TODOS_FRONTEND_URL,
14 PRODUCTION_TODOS_FRONTEND_URL, 14 PRODUCTION_TODOS_FRONTEND_URL,
15 DEVELOPMENT_TODOS_FRONTEND_URL,
16} from './config'; 15} from './config';
17 16
18export const isDevMode = isDev; 17export const isDevMode = isDev;
@@ -51,7 +50,7 @@ if (!isDevMode || (isDevMode && useLiveAPI)) {
51 api = DEV_API; 50 api = DEV_API;
52 wsApi = DEV_WS_API; 51 wsApi = DEV_WS_API;
53 web = DEV_API_WEBSITE; 52 web = DEV_API_WEBSITE;
54 todos = DEVELOPMENT_TODOS_FRONTEND_URL; 53 todos = PRODUCTION_TODOS_FRONTEND_URL;
55} 54}
56 55
57export const API = api; 56export const API = api;
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js
index a581bd8de..a7995d6db 100644
--- a/src/features/announcements/api.js
+++ b/src/features/announcements/api.js
@@ -1,8 +1,8 @@
1import { remote } from 'electron'; 1import { remote } from 'electron';
2import Request from '../../stores/lib/Request'; 2import Request from '../../stores/lib/Request';
3import { API, API_VERSION } from '../../environment'; 3import apiBase from '../../api/apiBase';
4 4
5const debug = require('debug')('Franz:feature:announcements:api'); 5const debug = require('debug')('Ferdi:feature:announcements:api');
6 6
7export const announcementsApi = { 7export const announcementsApi = {
8 async getCurrentVersion() { 8 async getCurrentVersion() {
@@ -21,7 +21,7 @@ export const announcementsApi = {
21 21
22 async getAnnouncement(version) { 22 async getAnnouncement(version) {
23 debug('fetching release announcement from api'); 23 debug('fetching release announcement from api');
24 const url = `${API}/${API_VERSION}/announcements/${version}`; 24 const url = `${apiBase()}/announcements/${version}`;
25 const response = await window.fetch(url, { method: 'GET' }); 25 const response = await window.fetch(url, { method: 'GET' });
26 if (!response.ok) return null; 26 if (!response.ok) return null;
27 return response.json(); 27 return response.json();
diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js
index 03bd5ba41..38de2dbc8 100644
--- a/src/features/announcements/components/AnnouncementScreen.js
+++ b/src/features/announcements/components/AnnouncementScreen.js
@@ -8,7 +8,6 @@ import { Button } from '@meetfranz/forms';
8 8
9import { announcementsStore } from '../index'; 9import { announcementsStore } from '../index';
10import UIStore from '../../../stores/UIStore'; 10import UIStore from '../../../stores/UIStore';
11import { gaEvent } from '../../../lib/analytics';
12 11
13const renderer = new marked.Renderer(); 12const renderer = new marked.Renderer();
14 13
@@ -19,7 +18,7 @@ const markedOptions = { sanitize: true, renderer };
19const messages = defineMessages({ 18const messages = defineMessages({
20 headline: { 19 headline: {
21 id: 'feature.announcements.changelog.headline', 20 id: 'feature.announcements.changelog.headline',
22 defaultMessage: '!!!Changes in Franz {version}', 21 defaultMessage: '!!!Changes in Ferdi {version}',
23 }, 22 },
24}); 23});
25 24
@@ -228,9 +227,7 @@ class AnnouncementScreen extends Component {
228 <Button 227 <Button
229 label={announcement.main.cta.label} 228 label={announcement.main.cta.label}
230 onClick={() => { 229 onClick={() => {
231 const { analytics } = announcement.main.cta;
232 window.location.href = `#${announcement.main.cta.href}`; 230 window.location.href = `#${announcement.main.cta.href}`;
233 gaEvent(analytics.category, analytics.action, announcement.main.cta.label);
234 }} 231 }}
235 /> 232 />
236 </div> 233 </div>
@@ -253,9 +250,7 @@ class AnnouncementScreen extends Component {
253 <Button 250 <Button
254 label={announcement.spotlight.cta.label} 251 label={announcement.spotlight.cta.label}
255 onClick={() => { 252 onClick={() => {
256 const { analytics } = announcement.spotlight.cta;
257 window.location.href = `#${announcement.spotlight.cta.href}`; 253 window.location.href = `#${announcement.spotlight.cta.href}`;
258 gaEvent(analytics.category, analytics.action, announcement.spotlight.cta.label);
259 }} 254 }}
260 /> 255 />
261 </div> 256 </div>
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js
index f14e7c9a5..42823e74c 100644
--- a/src/features/announcements/index.js
+++ b/src/features/announcements/index.js
@@ -1,7 +1,7 @@
1import { reaction } from 'mobx'; 1import { reaction } from 'mobx';
2import { AnnouncementsStore } from './store'; 2import { AnnouncementsStore } from './store';
3 3
4const debug = require('debug')('Franz:feature:announcements'); 4const debug = require('debug')('Ferdi:feature:announcements');
5 5
6export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements'; 6export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements';
7 7
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js
index d58afbc8e..9ec5f67d2 100644
--- a/src/features/announcements/store.js
+++ b/src/features/announcements/store.js
@@ -7,18 +7,17 @@ import semver from 'semver';
7import localStorage from 'mobx-localstorage'; 7import localStorage from 'mobx-localstorage';
8 8
9import { FeatureStore } from '../utils/FeatureStore'; 9import { FeatureStore } from '../utils/FeatureStore';
10import { ANNOUNCEMENTS_ROUTES, GA_CATEGORY_ANNOUNCEMENTS } from '.'; 10import { ANNOUNCEMENTS_ROUTES } from '.';
11import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; 11import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api';
12import { announcementActions } from './actions'; 12import { announcementActions } from './actions';
13import { createActionBindings } from '../utils/ActionBinding'; 13import { createActionBindings } from '../utils/ActionBinding';
14import { createReactions } from '../../stores/lib/Reaction'; 14import { createReactions } from '../../stores/lib/Reaction';
15import { gaEvent } from '../../lib/analytics';
16import { matchRoute } from '../../helpers/routing-helpers'; 15import { matchRoute } from '../../helpers/routing-helpers';
17import { DEFAULT_APP_SETTINGS } from '../../config'; 16import { DEFAULT_APP_SETTINGS } from '../../config';
18 17
19const LOCAL_STORAGE_KEY = 'announcements'; 18const LOCAL_STORAGE_KEY = 'announcements';
20 19
21const debug = require('debug')('Franz:feature:announcements:store'); 20const debug = require('debug')('Ferdi:feature:announcements:store');
22 21
23export class AnnouncementsStore extends FeatureStore { 22export class AnnouncementsStore extends FeatureStore {
24 @observable targetVersion = null; 23 @observable targetVersion = null;
@@ -114,7 +113,6 @@ export class AnnouncementsStore extends FeatureStore {
114 if (router.location.pathname !== targetRoute) { 113 if (router.location.pathname !== targetRoute) {
115 this.stores.router.push(targetRoute); 114 this.stores.router.push(targetRoute);
116 } 115 }
117 gaEvent(GA_CATEGORY_ANNOUNCEMENTS, 'show');
118 }; 116 };
119 117
120 // ======= REACTIONS ======== 118 // ======= REACTIONS ========
diff --git a/src/features/basicAuth/index.js b/src/features/basicAuth/index.js
index 89607824b..51625ea55 100644
--- a/src/features/basicAuth/index.js
+++ b/src/features/basicAuth/index.js
@@ -3,7 +3,7 @@ import { observable } from 'mobx';
3 3
4import BasicAuthComponent from './Component'; 4import BasicAuthComponent from './Component';
5 5
6const debug = require('debug')('Franz:feature:basicAuth'); 6const debug = require('debug')('Ferdi:feature:basicAuth');
7 7
8const defaultState = { 8const defaultState = {
9 isModalVisible: true, 9 isModalVisible: true,
@@ -20,7 +20,7 @@ export function resetState() {
20export default function initialize() { 20export default function initialize() {
21 debug('Initialize basicAuth feature'); 21 debug('Initialize basicAuth feature');
22 22
23 window.franz.features.basicAuth = { 23 window.ferdi.features.basicAuth = {
24 state, 24 state,
25 }; 25 };
26 26
diff --git a/src/features/basicAuth/mainIpcHandler.js b/src/features/basicAuth/mainIpcHandler.js
index 87ac0b6df..ae4e7cf93 100644
--- a/src/features/basicAuth/mainIpcHandler.js
+++ b/src/features/basicAuth/mainIpcHandler.js
@@ -1,4 +1,4 @@
1const debug = require('debug')('Franz:feature:basicAuth:main'); 1const debug = require('debug')('Ferdi:feature:basicAuth:main');
2 2
3export default function mainIpcHandler(mainWindow, authInfo) { 3export default function mainIpcHandler(mainWindow, authInfo) {
4 debug('Sending basic auth call', authInfo); 4 debug('Sending basic auth call', authInfo);
diff --git a/src/features/communityRecipes/index.js b/src/features/communityRecipes/index.js
index 4d050f90e..608164b68 100644
--- a/src/features/communityRecipes/index.js
+++ b/src/features/communityRecipes/index.js
@@ -1,7 +1,7 @@
1import { reaction } from 'mobx'; 1import { reaction } from 'mobx';
2import { CommunityRecipesStore } from './store'; 2import { CommunityRecipesStore } from './store';
3 3
4const debug = require('debug')('Franz:feature:communityRecipes'); 4const debug = require('debug')('Ferdi:feature:communityRecipes');
5 5
6export const DEFAULT_SERVICE_LIMIT = 3; 6export const DEFAULT_SERVICE_LIMIT = 3;
7 7
diff --git a/src/features/communityRecipes/store.js b/src/features/communityRecipes/store.js
index 4d45c3b33..6f78999a0 100644
--- a/src/features/communityRecipes/store.js
+++ b/src/features/communityRecipes/store.js
@@ -1,7 +1,7 @@
1import { computed, observable } from 'mobx'; 1import { computed, observable } from 'mobx';
2import { FeatureStore } from '../utils/FeatureStore'; 2import { FeatureStore } from '../utils/FeatureStore';
3 3
4const debug = require('debug')('Franz:feature:communityRecipes:store'); 4const debug = require('debug')('Ferdi:feature:communityRecipes:store');
5 5
6export class CommunityRecipesStore extends FeatureStore { 6export class CommunityRecipesStore extends FeatureStore {
7 @observable isCommunityRecipesIncludedInCurrentPlan = false; 7 @observable isCommunityRecipesIncludedInCurrentPlan = false;
diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js
index 6344edb89..c61cb06c9 100644
--- a/src/features/delayApp/Component.js
+++ b/src/features/delayApp/Component.js
@@ -5,9 +5,6 @@ import { defineMessages, intlShape } from 'react-intl';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6 6
7import { Button } from '@meetfranz/forms'; 7import { Button } from '@meetfranz/forms';
8import { gaEvent } from '../../lib/analytics';
9
10// import Button from '../../components/ui/Button';
11 8
12import { config } from '.'; 9import { config } from '.';
13import styles from './styles'; 10import styles from './styles';
@@ -32,7 +29,7 @@ const messages = defineMessages({
32 }, 29 },
33 text: { 30 text: {
34 id: 'feature.delayApp.text', 31 id: 'feature.delayApp.text',
35 defaultMessage: '!!!Franz will continue in {seconds} seconds.', 32 defaultMessage: '!!!Ferdi will continue in {seconds} seconds.',
36 }, 33 },
37}); 34});
38 35
@@ -78,12 +75,8 @@ export default @inject('stores', 'actions') @injectSheet(styles) @observer class
78 75
79 if (!hadSubscription) { 76 if (!hadSubscription) {
80 actions.user.activateTrial({ planId: defaultTrialPlan }); 77 actions.user.activateTrial({ planId: defaultTrialPlan });
81
82 gaEvent('DelayApp', 'subscribe_click', 'Delay App Feature');
83 } else { 78 } else {
84 actions.ui.openSettings({ path: 'user' }); 79 actions.ui.openSettings({ path: 'user' });
85
86 gaEvent('DelayApp', 'subscribe_click', 'Delay App Feature');
87 } 80 }
88 } 81 }
89 82
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js
index c0029873a..a80ea4c72 100644
--- a/src/features/delayApp/index.js
+++ b/src/features/delayApp/index.js
@@ -3,9 +3,8 @@ import moment from 'moment';
3import DelayAppComponent from './Component'; 3import DelayAppComponent from './Component';
4 4
5import { DEFAULT_FEATURES_CONFIG } from '../../config'; 5import { DEFAULT_FEATURES_CONFIG } from '../../config';
6import { gaEvent, gaPage } from '../../lib/analytics';
7 6
8const debug = require('debug')('Franz:feature:delayApp'); 7const debug = require('debug')('Ferdi:feature:delayApp');
9 8
10export const config = { 9export const config = {
11 delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset, 10 delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset,
@@ -28,7 +27,7 @@ export default function init(stores) {
28 let shownAfterLaunch = false; 27 let shownAfterLaunch = false;
29 let timeLastDelay = moment(); 28 let timeLastDelay = moment();
30 29
31 window.franz.features.delayApp = { 30 window.ferdi.features.delayApp = {
32 state, 31 state,
33 }; 32 };
34 33
@@ -57,8 +56,6 @@ export default function init(stores) {
57 debug(`App will be delayed for ${config.delayDuration / 1000}s`); 56 debug(`App will be delayed for ${config.delayDuration / 1000}s`);
58 57
59 setVisibility(true); 58 setVisibility(true);
60 gaPage('/delayApp');
61 gaEvent('DelayApp', 'show', 'Delay App Feature');
62 59
63 timeLastDelay = moment(); 60 timeLastDelay = moment();
64 shownAfterLaunch = true; 61 shownAfterLaunch = true;
diff --git a/src/features/serviceLimit/components/LimitReachedInfobox.js b/src/features/serviceLimit/components/LimitReachedInfobox.js
index 19285a4eb..83aec4c40 100644
--- a/src/features/serviceLimit/components/LimitReachedInfobox.js
+++ b/src/features/serviceLimit/components/LimitReachedInfobox.js
@@ -5,8 +5,6 @@ import { defineMessages, intlShape } from 'react-intl';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6import { Infobox } from '@meetfranz/ui'; 6import { Infobox } from '@meetfranz/ui';
7 7
8import { gaEvent } from '../../../lib/analytics';
9
10const messages = defineMessages({ 8const messages = defineMessages({
11 limitReached: { 9 limitReached: {
12 id: 'feature.serviceLimit.limitReached', 10 id: 'feature.serviceLimit.limitReached',
@@ -67,7 +65,6 @@ class LimitReachedInfobox extends Component {
67 ctaLabel={intl.formatMessage(messages.action)} 65 ctaLabel={intl.formatMessage(messages.action)}
68 ctaOnClick={() => { 66 ctaOnClick={() => {
69 actions.ui.openSettings({ path: 'user' }); 67 actions.ui.openSettings({ path: 'user' });
70 gaEvent('Service Limit', 'upgrade', 'Upgrade account');
71 }} 68 }}
72 > 69 >
73 {intl.formatMessage(messages.limitReached, { amount: serviceLimit.serviceCount, limit: serviceLimit.serviceLimit })} 70 {intl.formatMessage(messages.limitReached, { amount: serviceLimit.serviceCount, limit: serviceLimit.serviceLimit })}
diff --git a/src/features/serviceLimit/index.js b/src/features/serviceLimit/index.js
index 92ad8bb98..fa93bb615 100644
--- a/src/features/serviceLimit/index.js
+++ b/src/features/serviceLimit/index.js
@@ -1,7 +1,7 @@
1import { reaction } from 'mobx'; 1import { reaction } from 'mobx';
2import { ServiceLimitStore } from './store'; 2import { ServiceLimitStore } from './store';
3 3
4const debug = require('debug')('Franz:feature:serviceLimit'); 4const debug = require('debug')('Ferdi:feature:serviceLimit');
5 5
6export const DEFAULT_SERVICE_LIMIT = 3; 6export const DEFAULT_SERVICE_LIMIT = 3;
7 7
diff --git a/src/features/serviceLimit/store.js b/src/features/serviceLimit/store.js
index 9836c5f51..6510e2872 100644
--- a/src/features/serviceLimit/store.js
+++ b/src/features/serviceLimit/store.js
@@ -2,7 +2,7 @@ import { computed, observable } from 'mobx';
2import { FeatureStore } from '../utils/FeatureStore'; 2import { FeatureStore } from '../utils/FeatureStore';
3import { DEFAULT_SERVICE_LIMIT } from '.'; 3import { DEFAULT_SERVICE_LIMIT } from '.';
4 4
5const debug = require('debug')('Franz:feature:serviceLimit:store'); 5const debug = require('debug')('Ferdi:feature:serviceLimit:store');
6 6
7export class ServiceLimitStore extends FeatureStore { 7export class ServiceLimitStore extends FeatureStore {
8 @observable isServiceLimitEnabled = false; 8 @observable isServiceLimitEnabled = false;
@@ -12,7 +12,7 @@ export class ServiceLimitStore extends FeatureStore {
12 this.stores = stores; 12 this.stores = stores;
13 this.actions = actions; 13 this.actions = actions;
14 14
15 this.isServiceLimitEnabled = true; 15 this.isServiceLimitEnabled = false;
16 } 16 }
17 17
18 stop() { 18 stop() {
@@ -22,9 +22,10 @@ export class ServiceLimitStore extends FeatureStore {
22 } 22 }
23 23
24 @computed get userHasReachedServiceLimit() { 24 @computed get userHasReachedServiceLimit() {
25 if (!this.isServiceLimitEnabled) return false; 25 return false;
26 // if (!this.isServiceLimitEnabled) return false;
26 27
27 return this.serviceLimit !== 0 && this.serviceCount >= this.serviceLimit; 28 // return this.serviceLimit !== 0 && this.serviceCount >= this.serviceLimit;
28 } 29 }
29 30
30 @computed get serviceLimit() { 31 @computed get serviceLimit() {
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js
index 55c600de4..e9a01b156 100644
--- a/src/features/serviceProxy/index.js
+++ b/src/features/serviceProxy/index.js
@@ -1,25 +1,25 @@
1import { autorun, observable } from 'mobx'; 1import { autorun, observable } from 'mobx';
2import { remote } from 'electron'; 2import { remote } from 'electron';
3 3
4import { DEFAULT_FEATURES_CONFIG } from '../../config'; 4// import { DEFAULT_FEATURES_CONFIG } from '../../config';
5 5
6const { session } = remote; 6const { session } = remote;
7 7
8const debug = require('debug')('Franz:feature:serviceProxy'); 8const debug = require('debug')('Ferdi:feature:serviceProxy');
9 9
10export const config = observable({ 10export const config = observable({
11 isEnabled: DEFAULT_FEATURES_CONFIG.isServiceProxyEnabled, 11 isEnabled: true,
12 isPremium: DEFAULT_FEATURES_CONFIG.isServiceProxyIncludedInCurrentPlan, 12 isPremium: true,
13}); 13});
14 14
15export default function init(stores) { 15export default function init(stores) {
16 debug('Initializing `serviceProxy` feature'); 16 debug('Initializing `serviceProxy` feature');
17 17
18 autorun(() => { 18 autorun(() => {
19 const { isServiceProxyEnabled, isServiceProxyIncludedInCurrentPlan } = stores.features.features; 19 // const { isServiceProxyEnabled, isServiceProxyIncludedInCurrentPlan } = stores.features.features;
20 20
21 config.isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG.isServiceProxyEnabled; 21 config.isEnabled = true;
22 config.isIncludedInCurrentPlan = isServiceProxyIncludedInCurrentPlan !== undefined ? isServiceProxyIncludedInCurrentPlan : DEFAULT_FEATURES_CONFIG.isServiceProxyIncludedInCurrentPlan; 22 config.isIncludedInCurrentPlan = true;
23 23
24 const services = stores.services.enabled; 24 const services = stores.services.enabled;
25 const isPremiumUser = stores.user.data.isPremium; 25 const isPremiumUser = stores.user.data.isPremium;
diff --git a/src/features/settingsWS/index.js b/src/features/settingsWS/index.js
index 2064d2973..6711296da 100755
--- a/src/features/settingsWS/index.js
+++ b/src/features/settingsWS/index.js
@@ -1,7 +1,7 @@
1import { reaction } from 'mobx'; 1import { reaction } from 'mobx';
2import { SettingsWSStore } from './store'; 2import { SettingsWSStore } from './store';
3 3
4const debug = require('debug')('Franz:feature:settingsWS'); 4const debug = require('debug')('Ferdi:feature:settingsWS');
5 5
6export const settingsStore = new SettingsWSStore(); 6export const settingsStore = new SettingsWSStore();
7 7
diff --git a/src/features/settingsWS/store.js b/src/features/settingsWS/store.js
index 167a70d10..9100f33d1 100755
--- a/src/features/settingsWS/store.js
+++ b/src/features/settingsWS/store.js
@@ -6,7 +6,7 @@ import { FeatureStore } from '../utils/FeatureStore';
6import { createReactions } from '../../stores/lib/Reaction'; 6import { createReactions } from '../../stores/lib/Reaction';
7import { WS_API } from '../../environment'; 7import { WS_API } from '../../environment';
8 8
9const debug = require('debug')('Franz:feature:settingsWS:store'); 9const debug = require('debug')('Ferdi:feature:settingsWS:store');
10 10
11export class SettingsWSStore extends FeatureStore { 11export class SettingsWSStore extends FeatureStore {
12 stores = null; 12 stores = null;
diff --git a/src/features/shareFranz/Component.js b/src/features/shareFranz/Component.js
index a33315e17..405fb0ab5 100644
--- a/src/features/shareFranz/Component.js
+++ b/src/features/shareFranz/Component.js
@@ -11,17 +11,16 @@ import {
11} from '@mdi/js'; 11} from '@mdi/js';
12import Modal from '../../components/ui/Modal'; 12import Modal from '../../components/ui/Modal';
13import { state } from '.'; 13import { state } from '.';
14import { gaEvent } from '../../lib/analytics';
15import ServicesStore from '../../stores/ServicesStore'; 14import ServicesStore from '../../stores/ServicesStore';
16 15
17const messages = defineMessages({ 16const messages = defineMessages({
18 headline: { 17 headline: {
19 id: 'feature.shareFranz.headline', 18 id: 'feature.shareFranz.headline',
20 defaultMessage: '!!!Franz is better together!', 19 defaultMessage: '!!!Ferdi is better together!',
21 }, 20 },
22 text: { 21 text: {
23 id: 'feature.shareFranz.text', 22 id: 'feature.shareFranz.text',
24 defaultMessage: '!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.', 23 defaultMessage: '!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.',
25 }, 24 },
26 actionsEmail: { 25 actionsEmail: {
27 id: 'feature.shareFranz.action.email', 26 id: 'feature.shareFranz.action.email',
@@ -132,9 +131,6 @@ export default @injectSheet(styles) @inject('stores') @observer class ShareFranz
132 icon={mdiEmail} 131 icon={mdiEmail}
133 href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`} 132 href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`}
134 target="_blank" 133 target="_blank"
135 onClick={() => {
136 gaEvent('Share Franz', 'share', 'Share via email');
137 }}
138 /> 134 />
139 <Button 135 <Button
140 label={intl.formatMessage(messages.actionsFacebook)} 136 label={intl.formatMessage(messages.actionsFacebook)}
@@ -142,9 +138,6 @@ export default @injectSheet(styles) @inject('stores') @observer class ShareFranz
142 icon={mdiFacebookBox} 138 icon={mdiFacebookBox}
143 href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button" 139 href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button"
144 target="_blank" 140 target="_blank"
145 onClick={() => {
146 gaEvent('Share Franz', 'share', 'Share via Facebook');
147 }}
148 /> 141 />
149 <Button 142 <Button
150 label={intl.formatMessage(messages.actionsTwitter)} 143 label={intl.formatMessage(messages.actionsTwitter)}
@@ -152,9 +145,6 @@ export default @injectSheet(styles) @inject('stores') @observer class ShareFranz
152 icon={mdiTwitter} 145 icon={mdiTwitter}
153 href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`} 146 href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`}
154 target="_blank" 147 target="_blank"
155 onClick={() => {
156 gaEvent('Share Franz', 'share', 'Share via Twitter');
157 }}
158 /> 148 />
159 </div> 149 </div>
160 </Modal> 150 </Modal>
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js
index 87deacef4..217e926f9 100644
--- a/src/features/shareFranz/index.js
+++ b/src/features/shareFranz/index.js
@@ -2,11 +2,10 @@ import { observable, reaction } from 'mobx';
2import ms from 'ms'; 2import ms from 'ms';
3 3
4import { state as delayAppState } from '../delayApp'; 4import { state as delayAppState } from '../delayApp';
5import { gaEvent, gaPage } from '../../lib/analytics';
6 5
7export { default as Component } from './Component'; 6export { default as Component } from './Component';
8 7
9const debug = require('debug')('Franz:feature:shareFranz'); 8const debug = require('debug')('Ferdi:feature:shareFranz');
10 9
11const defaultState = { 10const defaultState = {
12 isModalVisible: false, 11 isModalVisible: false,
@@ -16,19 +15,16 @@ const defaultState = {
16export const state = observable(defaultState); 15export const state = observable(defaultState);
17 16
18export default function initialize(stores) { 17export default function initialize(stores) {
19 debug('Initialize shareFranz feature'); 18 debug('Initialize shareFerdi feature');
20 19
21 window.franz.features.shareFranz = { 20 window.ferdi.features.shareFerdi = {
22 state, 21 state,
23 }; 22 };
24 23
25 function showModal() { 24 function showModal() {
26 debug('Showing share window'); 25 debug('Would have showed share window');
27 26
28 state.isModalVisible = true; 27 // state.isModalVisible = true;
29
30 gaEvent('Share Franz', 'show');
31 gaPage('/share-modal');
32 } 28 }
33 29
34 reaction( 30 reaction(
diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js
index fd8bc738a..6a393e250 100644
--- a/src/features/spellchecker/index.js
+++ b/src/features/spellchecker/index.js
@@ -2,26 +2,26 @@ import { autorun, observable } from 'mobx';
2 2
3import { DEFAULT_FEATURES_CONFIG } from '../../config'; 3import { DEFAULT_FEATURES_CONFIG } from '../../config';
4 4
5const debug = require('debug')('Franz:feature:spellchecker'); 5const debug = require('debug')('Ferdi:feature:spellchecker');
6 6
7export const config = observable({ 7export const config = observable({
8 isIncludedInCurrentPlan: DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan, 8 isIncludedInCurrentPlan: DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan,
9}); 9});
10 10
11export default function init(stores) { 11export default function init() {
12 debug('Initializing `spellchecker` feature'); 12 debug('Initializing `spellchecker` feature');
13 13
14 autorun(() => { 14 autorun(() => {
15 const { isSpellcheckerIncludedInCurrentPlan } = stores.features.features; 15 // const { isSpellcheckerIncludedInCurrentPlan } = stores.features.features;
16 16
17 config.isIncludedInCurrentPlan = isSpellcheckerIncludedInCurrentPlan !== undefined ? isSpellcheckerIncludedInCurrentPlan : DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan; 17 // config.isIncludedInCurrentPlan = isSpellcheckerIncludedInCurrentPlan !== undefined ? isSpellcheckerIncludedInCurrentPlan : DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan;
18 18
19 if (!stores.user.data.isPremium && !config.isIncludedInCurrentPlan && stores.settings.app.enableSpellchecking) { 19 // if (!stores.user.data.isPremium && config.isIncludedInCurrentPlan && stores.settings.app.enableSpellchecking) {
20 debug('Override settings.spellcheckerEnabled flag to false'); 20 // debug('Override settings.spellcheckerEnabled flag to false');
21 21
22 Object.assign(stores.settings.app, { 22 // Object.assign(stores.settings.app, {
23 enableSpellchecking: false, 23 // enableSpellchecking: false,
24 }); 24 // });
25 } 25 // }
26 }); 26 });
27} 27}
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js
index d052da6f2..c252aff90 100644
--- a/src/features/todos/components/TodosWebview.js
+++ b/src/features/todos/components/TodosWebview.js
@@ -1,12 +1,14 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer, inject } from 'mobx-react';
4import injectSheet from 'react-jss'; 4import injectSheet from 'react-jss';
5import Webview from 'react-electron-web-view'; 5import Webview from 'react-electron-web-view';
6import { Icon } from '@meetfranz/ui'; 6import { Icon } from '@meetfranz/ui';
7import { defineMessages, intlShape } from 'react-intl'; 7import { defineMessages, intlShape } from 'react-intl';
8 8
9import { mdiCheckAll } from '@mdi/js'; 9import { mdiCheckAll } from '@mdi/js';
10import SettingsStore from '../../../stores/SettingsStore';
11
10import * as environment from '../../../environment'; 12import * as environment from '../../../environment';
11import Appear from '../../../components/ui/effects/Appear'; 13import Appear from '../../../components/ui/effects/Appear';
12import UpgradeButton from '../../../components/ui/UpgradeButton'; 14import UpgradeButton from '../../../components/ui/UpgradeButton';
@@ -80,7 +82,7 @@ const styles = theme => ({
80 }, 82 },
81}); 83});
82 84
83@injectSheet(styles) @observer 85@injectSheet(styles) @observer @inject('stores')
84class TodosWebview extends Component { 86class TodosWebview extends Component {
85 static propTypes = { 87 static propTypes = {
86 classes: PropTypes.object.isRequired, 88 classes: PropTypes.object.isRequired,
@@ -91,6 +93,9 @@ class TodosWebview extends Component {
91 width: PropTypes.number.isRequired, 93 width: PropTypes.number.isRequired,
92 minWidth: PropTypes.number.isRequired, 94 minWidth: PropTypes.number.isRequired,
93 isTodosIncludedInCurrentPlan: PropTypes.bool.isRequired, 95 isTodosIncludedInCurrentPlan: PropTypes.bool.isRequired,
96 stores: PropTypes.shape({
97 settings: PropTypes.instanceOf(SettingsStore).isRequired,
98 }).isRequired,
94 }; 99 };
95 100
96 state = { 101 state = {
@@ -181,6 +186,7 @@ class TodosWebview extends Component {
181 classes, 186 classes,
182 isVisible, 187 isVisible,
183 isTodosIncludedInCurrentPlan, 188 isTodosIncludedInCurrentPlan,
189 stores,
184 } = this.props; 190 } = this.props;
185 191
186 const { 192 const {
@@ -220,7 +226,7 @@ class TodosWebview extends Component {
220 partition="persist:todos" 226 partition="persist:todos"
221 preload="./features/todos/preload.js" 227 preload="./features/todos/preload.js"
222 ref={(webview) => { this.webview = webview ? webview.view : null; }} 228 ref={(webview) => { this.webview = webview ? webview.view : null; }}
223 src={environment.TODOS_FRONTEND} 229 src={stores.settings.all.app.todoServer || environment.TODOS_FRONTEND}
224 /> 230 />
225 ) : ( 231 ) : (
226 <Appear> 232 <Appear>
diff --git a/src/features/todos/containers/TodosScreen.js b/src/features/todos/containers/TodosScreen.js
index a5da0b014..bc05a587d 100644
--- a/src/features/todos/containers/TodosScreen.js
+++ b/src/features/todos/containers/TodosScreen.js
@@ -25,7 +25,7 @@ class TodosScreen extends Component {
25 width={todosStore.width} 25 width={todosStore.width}
26 minWidth={TODOS_MIN_WIDTH} 26 minWidth={TODOS_MIN_WIDTH}
27 resize={width => todoActions.resize({ width })} 27 resize={width => todoActions.resize({ width })}
28 isTodosIncludedInCurrentPlan={this.props.stores.features.features.isTodosIncludedInCurrentPlan || false} 28 isTodosIncludedInCurrentPlan
29 /> 29 />
30 </ErrorBoundary> 30 </ErrorBoundary>
31 ); 31 );
diff --git a/src/features/todos/index.js b/src/features/todos/index.js
index 7388aebaf..9f355e9ba 100644
--- a/src/features/todos/index.js
+++ b/src/features/todos/index.js
@@ -1,7 +1,7 @@
1import { reaction } from 'mobx'; 1import { reaction } from 'mobx';
2import TodoStore from './store'; 2import TodoStore from './store';
3 3
4const debug = require('debug')('Franz:feature:todos'); 4const debug = require('debug')('Ferdi:feature:todos');
5 5
6export const GA_CATEGORY_TODOS = 'Todos'; 6export const GA_CATEGORY_TODOS = 'Todos';
7 7
diff --git a/src/features/todos/preload.js b/src/features/todos/preload.js
index 6e38a2ef3..412b775af 100644
--- a/src/features/todos/preload.js
+++ b/src/features/todos/preload.js
@@ -1,7 +1,7 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { IPC } from './constants'; 2import { IPC } from './constants';
3 3
4const debug = require('debug')('Franz:feature:todos:preload'); 4const debug = require('debug')('Ferdi:feature:todos:preload');
5 5
6debug('Preloading Todos Webview'); 6debug('Preloading Todos Webview');
7 7
diff --git a/src/features/todos/store.js b/src/features/todos/store.js
index abf176604..d507237d1 100644
--- a/src/features/todos/store.js
+++ b/src/features/todos/store.js
@@ -16,7 +16,7 @@ import {
16import { IPC } from './constants'; 16import { IPC } from './constants';
17import { state as delayAppState } from '../delayApp'; 17import { state as delayAppState } from '../delayApp';
18 18
19const debug = require('debug')('Franz:feature:todos:store'); 19const debug = require('debug')('Ferdi:feature:todos:store');
20 20
21export default class TodoStore extends FeatureStore { 21export default class TodoStore extends FeatureStore {
22 @observable isFeatureEnabled = false; 22 @observable isFeatureEnabled = false;
diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js
index 0ec20c9ea..30fbd84be 100644
--- a/src/features/workspaces/api.js
+++ b/src/features/workspaces/api.js
@@ -1,14 +1,14 @@
1import { pick } from 'lodash'; 1import { pick } from 'lodash';
2import { sendAuthRequest } from '../../api/utils/auth'; 2import { sendAuthRequest } from '../../api/utils/auth';
3import { API, API_VERSION } from '../../environment';
4import Request from '../../stores/lib/Request'; 3import Request from '../../stores/lib/Request';
5import Workspace from './models/Workspace'; 4import Workspace from './models/Workspace';
5import apiBase from '../../api/apiBase';
6 6
7const debug = require('debug')('Franz:feature:workspaces:api'); 7const debug = require('debug')('Ferdi:feature:workspaces:api');
8 8
9export const workspaceApi = { 9export const workspaceApi = {
10 getUserWorkspaces: async () => { 10 getUserWorkspaces: async () => {
11 const url = `${API}/${API_VERSION}/workspace`; 11 const url = `${apiBase()}/workspace`;
12 debug('getUserWorkspaces GET', url); 12 debug('getUserWorkspaces GET', url);
13 const result = await sendAuthRequest(url, { method: 'GET' }); 13 const result = await sendAuthRequest(url, { method: 'GET' });
14 debug('getUserWorkspaces RESULT', result); 14 debug('getUserWorkspaces RESULT', result);
@@ -18,7 +18,7 @@ export const workspaceApi = {
18 }, 18 },
19 19
20 createWorkspace: async (name) => { 20 createWorkspace: async (name) => {
21 const url = `${API}/${API_VERSION}/workspace`; 21 const url = `${apiBase()}/workspace`;
22 const options = { 22 const options = {
23 method: 'POST', 23 method: 'POST',
24 body: JSON.stringify({ name }), 24 body: JSON.stringify({ name }),
@@ -31,7 +31,7 @@ export const workspaceApi = {
31 }, 31 },
32 32
33 deleteWorkspace: async (workspace) => { 33 deleteWorkspace: async (workspace) => {
34 const url = `${API}/${API_VERSION}/workspace/${workspace.id}`; 34 const url = `${apiBase()}/workspace/${workspace.id}`;
35 debug('deleteWorkspace DELETE', url); 35 debug('deleteWorkspace DELETE', url);
36 const result = await sendAuthRequest(url, { method: 'DELETE' }); 36 const result = await sendAuthRequest(url, { method: 'DELETE' });
37 debug('deleteWorkspace RESULT', result); 37 debug('deleteWorkspace RESULT', result);
@@ -40,7 +40,7 @@ export const workspaceApi = {
40 }, 40 },
41 41
42 updateWorkspace: async (workspace) => { 42 updateWorkspace: async (workspace) => {
43 const url = `${API}/${API_VERSION}/workspace/${workspace.id}`; 43 const url = `${apiBase()}/workspace/${workspace.id}`;
44 const options = { 44 const options = {
45 method: 'PUT', 45 method: 'PUT',
46 body: JSON.stringify(pick(workspace, ['name', 'services'])), 46 body: JSON.stringify(pick(workspace, ['name', 'services'])),
diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js
index cddbb2b04..15b97121d 100644
--- a/src/features/workspaces/components/CreateWorkspaceForm.js
+++ b/src/features/workspaces/components/CreateWorkspaceForm.js
@@ -6,8 +6,7 @@ import { Input, Button } from '@meetfranz/forms';
6import injectSheet from 'react-jss'; 6import injectSheet from 'react-jss';
7import Form from '../../../lib/Form'; 7import Form from '../../../lib/Form';
8import { required } from '../../../helpers/validation-helpers'; 8import { required } from '../../../helpers/validation-helpers';
9import { gaEvent } from '../../../lib/analytics'; 9import { workspaceStore } from '../index';
10import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index';
11 10
12const messages = defineMessages({ 11const messages = defineMessages({
13 submitButton: { 12 submitButton: {
@@ -66,7 +65,6 @@ class CreateWorkspaceForm extends Component {
66 const { onSubmit } = this.props; 65 const { onSubmit } = this.props;
67 const values = f.values(); 66 const values = f.values();
68 onSubmit(values); 67 onSubmit(values);
69 gaEvent(GA_CATEGORY_WORKSPACES, 'create', values.name);
70 }, 68 },
71 }); 69 });
72 } 70 }
diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js
index e602ebd5a..b3551a7b9 100644
--- a/src/features/workspaces/components/EditWorkspaceForm.js
+++ b/src/features/workspaces/components/EditWorkspaceForm.js
@@ -12,8 +12,10 @@ import Form from '../../../lib/Form';
12import { required } from '../../../helpers/validation-helpers'; 12import { required } from '../../../helpers/validation-helpers';
13import WorkspaceServiceListItem from './WorkspaceServiceListItem'; 13import WorkspaceServiceListItem from './WorkspaceServiceListItem';
14import Request from '../../../stores/lib/Request'; 14import Request from '../../../stores/lib/Request';
15import { gaEvent } from '../../../lib/analytics'; 15
16import { GA_CATEGORY_WORKSPACES } from '../index'; 16import { KEEP_WS_LOADED_USID } from '../../../config';
17
18import Toggle from '../../../components/ui/Toggle';
17 19
18const messages = defineMessages({ 20const messages = defineMessages({
19 buttonDelete: { 21 buttonDelete: {
@@ -32,6 +34,14 @@ const messages = defineMessages({
32 id: 'settings.workspace.form.yourWorkspaces', 34 id: 'settings.workspace.form.yourWorkspaces',
33 defaultMessage: '!!!Your workspaces', 35 defaultMessage: '!!!Your workspaces',
34 }, 36 },
37 keepLoaded: {
38 id: 'settings.workspace.form.keepLoaded',
39 defaultMessage: '!!!Keep this workspace loaded*',
40 },
41 keepLoadedInfo: {
42 id: 'settings.workspace.form.keepLoadedInfo',
43 defaultMessage: '!!!*This option will be overwritten by the global "Keep all workspaces loaded" option.',
44 },
35 servicesInWorkspaceHeadline: { 45 servicesInWorkspaceHeadline: {
36 id: 'settings.workspace.form.servicesInWorkspaceHeadline', 46 id: 'settings.workspace.form.servicesInWorkspaceHeadline',
37 defaultMessage: '!!!Services in this Workspace', 47 defaultMessage: '!!!Services in this Workspace',
@@ -53,6 +63,9 @@ const styles = () => ({
53 serviceList: { 63 serviceList: {
54 height: 'auto', 64 height: 'auto',
55 }, 65 },
66 keepLoadedInfo: {
67 marginBottom: '2rem !important',
68 },
56}); 69});
57 70
58@injectSheet(styles) @observer 71@injectSheet(styles) @observer
@@ -90,6 +103,11 @@ class EditWorkspaceForm extends Component {
90 value: workspace.name, 103 value: workspace.name,
91 validators: [required], 104 validators: [required],
92 }, 105 },
106 keepLoaded: {
107 label: intl.formatMessage(messages.keepLoaded),
108 value: workspace.services.includes(KEEP_WS_LOADED_USID),
109 default: false,
110 },
93 services: { 111 services: {
94 value: workspace.services.slice(), 112 value: workspace.services.slice(),
95 }, 113 },
@@ -103,7 +121,6 @@ class EditWorkspaceForm extends Component {
103 const { onSave } = this.props; 121 const { onSave } = this.props;
104 const values = f.values(); 122 const values = f.values();
105 onSave(values); 123 onSave(values);
106 gaEvent(GA_CATEGORY_WORKSPACES, 'save');
107 }, 124 },
108 onError: async () => {}, 125 onError: async () => {},
109 }); 126 });
@@ -112,7 +129,6 @@ class EditWorkspaceForm extends Component {
112 delete() { 129 delete() {
113 const { onDelete } = this.props; 130 const { onDelete } = this.props;
114 onDelete(); 131 onDelete();
115 gaEvent(GA_CATEGORY_WORKSPACES, 'delete');
116 } 132 }
117 133
118 toggleService(service) { 134 toggleService(service) {
@@ -155,6 +171,10 @@ class EditWorkspaceForm extends Component {
155 <div className="settings__body"> 171 <div className="settings__body">
156 <div className={classes.nameInput}> 172 <div className={classes.nameInput}>
157 <Input {...form.$('name').bind()} /> 173 <Input {...form.$('name').bind()} />
174 <Toggle field={form.$('keepLoaded')} />
175 <p className={classes.keepLoadedInfo}>
176 { intl.formatMessage(messages.keepLoadedInfo) }
177 </p>
158 </div> 178 </div>
159 <h2>{intl.formatMessage(messages.servicesInWorkspaceHeadline)}</h2> 179 <h2>{intl.formatMessage(messages.servicesInWorkspaceHeadline)}</h2>
160 <div className={classes.serviceList}> 180 <div className={classes.serviceList}>
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index e7bc0b157..f4ee89a14 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -10,8 +10,7 @@ import ReactTooltip from 'react-tooltip';
10import { mdiPlusBox, mdiSettings } from '@mdi/js'; 10import { mdiPlusBox, mdiSettings } from '@mdi/js';
11import WorkspaceDrawerItem from './WorkspaceDrawerItem'; 11import WorkspaceDrawerItem from './WorkspaceDrawerItem';
12import { workspaceActions } from '../actions'; 12import { workspaceActions } from '../actions';
13import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index'; 13import { workspaceStore } from '../index';
14import { gaEvent } from '../../../lib/analytics';
15 14
16const messages = defineMessages({ 15const messages = defineMessages({
17 headline: { 16 headline: {
@@ -155,7 +154,6 @@ class WorkspaceDrawer extends Component {
155 className={classes.workspacesSettingsButton} 154 className={classes.workspacesSettingsButton}
156 onClick={() => { 155 onClick={() => {
157 workspaceActions.openWorkspaceSettings(); 156 workspaceActions.openWorkspaceSettings();
158 gaEvent(GA_CATEGORY_WORKSPACES, 'settings', 'drawerHeadline');
159 }} 157 }}
160 data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`} 158 data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`}
161 > 159 >
@@ -177,7 +175,6 @@ class WorkspaceDrawer extends Component {
177 icon="mdiStar" 175 icon="mdiStar"
178 onClick={() => { 176 onClick={() => {
179 onUpgradeAccountClick(); 177 onUpgradeAccountClick();
180 gaEvent('User', 'upgrade', 'workspaceDrawer');
181 }} 178 }}
182 /> 179 />
183 ) : ( 180 ) : (
@@ -188,7 +185,6 @@ class WorkspaceDrawer extends Component {
188 icon={mdiPlusBox} 185 icon={mdiPlusBox}
189 onClick={() => { 186 onClick={() => {
190 workspaceActions.openWorkspaceSettings(); 187 workspaceActions.openWorkspaceSettings();
191 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerPremiumCta');
192 }} 188 }}
193 /> 189 />
194 )} 190 )}
@@ -200,7 +196,6 @@ class WorkspaceDrawer extends Component {
200 onClick={() => { 196 onClick={() => {
201 workspaceActions.deactivate(); 197 workspaceActions.deactivate();
202 workspaceActions.toggleWorkspaceDrawer(); 198 workspaceActions.toggleWorkspaceDrawer();
203 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
204 }} 199 }}
205 services={getServicesForWorkspace(null)} 200 services={getServicesForWorkspace(null)}
206 isActive={actualWorkspace == null} 201 isActive={actualWorkspace == null}
@@ -214,7 +209,6 @@ class WorkspaceDrawer extends Component {
214 if (actualWorkspace === workspace) return; 209 if (actualWorkspace === workspace) return;
215 workspaceActions.activate({ workspace }); 210 workspaceActions.activate({ workspace });
216 workspaceActions.toggleWorkspaceDrawer(); 211 workspaceActions.toggleWorkspaceDrawer();
217 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
218 }} 212 }}
219 onContextMenuEditClick={() => workspaceActions.edit({ workspace })} 213 onContextMenuEditClick={() => workspaceActions.edit({ workspace })}
220 services={getServicesForWorkspace(workspace)} 214 services={getServicesForWorkspace(workspace)}
@@ -224,7 +218,6 @@ class WorkspaceDrawer extends Component {
224 className={classes.addNewWorkspaceLabel} 218 className={classes.addNewWorkspaceLabel}
225 onClick={() => { 219 onClick={() => {
226 workspaceActions.openWorkspaceSettings(); 220 workspaceActions.openWorkspaceSettings();
227 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel');
228 }} 221 }}
229 > 222 >
230 <Icon 223 <Icon
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
index 70e213912..977b23999 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.js
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -46,7 +46,7 @@ const messages = defineMessages({
46 }, 46 },
47 workspaceFeatureHeadline: { 47 workspaceFeatureHeadline: {
48 id: 'settings.workspaces.workspaceFeatureHeadline', 48 id: 'settings.workspaces.workspaceFeatureHeadline',
49 defaultMessage: '!!!Less is More: Introducing Franz Workspaces', 49 defaultMessage: '!!!Less is More: Introducing Ferdi Workspaces',
50 }, 50 },
51}); 51});
52 52
diff --git a/src/features/workspaces/containers/EditWorkspaceScreen.js b/src/features/workspaces/containers/EditWorkspaceScreen.js
index 248b40131..7eaabc1ea 100644
--- a/src/features/workspaces/containers/EditWorkspaceScreen.js
+++ b/src/features/workspaces/containers/EditWorkspaceScreen.js
@@ -33,7 +33,9 @@ class EditWorkspaceScreen extends Component {
33 const { workspaceBeingEdited } = workspaceStore; 33 const { workspaceBeingEdited } = workspaceStore;
34 const { actions } = this.props; 34 const { actions } = this.props;
35 const workspace = new Workspace( 35 const workspace = new Workspace(
36 Object.assign({}, workspaceBeingEdited, values), 36 Object.assign({
37 saving: true,
38 }, workspaceBeingEdited, values),
37 ); 39 );
38 actions.workspaces.update({ workspace }); 40 actions.workspaces.update({ workspace });
39 }; 41 };
diff --git a/src/features/workspaces/index.js b/src/features/workspaces/index.js
index ed3e52096..560b732ab 100644
--- a/src/features/workspaces/index.js
+++ b/src/features/workspaces/index.js
@@ -2,7 +2,7 @@ import { reaction } from 'mobx';
2import WorkspacesStore from './store'; 2import WorkspacesStore from './store';
3import { resetApiRequests } from './api'; 3import { resetApiRequests } from './api';
4 4
5const debug = require('debug')('Franz:feature:workspaces'); 5const debug = require('debug')('Ferdi:feature:workspaces');
6 6
7export const GA_CATEGORY_WORKSPACES = 'Workspaces'; 7export const GA_CATEGORY_WORKSPACES = 'Workspaces';
8export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false; 8export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false;
diff --git a/src/features/workspaces/models/Workspace.js b/src/features/workspaces/models/Workspace.js
index 6c73d7095..77c4e05f4 100644
--- a/src/features/workspaces/models/Workspace.js
+++ b/src/features/workspaces/models/Workspace.js
@@ -1,5 +1,7 @@
1import { observable } from 'mobx'; 1import { observable } from 'mobx';
2 2
3import { KEEP_WS_LOADED_USID } from '../../../config';
4
3export default class Workspace { 5export default class Workspace {
4 id = null; 6 id = null;
5 7
@@ -19,7 +21,17 @@ export default class Workspace {
19 this.id = data.id; 21 this.id = data.id;
20 this.name = data.name; 22 this.name = data.name;
21 this.order = data.order; 23 this.order = data.order;
22 this.services.replace(data.services); 24
25 let services = data.services;
26 if (data.saving && data.keepLoaded) {
27 // Keep workspaces loaded
28 services.push(KEEP_WS_LOADED_USID);
29 } else if (data.saving && data.services.includes(KEEP_WS_LOADED_USID)) {
30 // Don't keep loaded
31 services = services.filter(e => e !== KEEP_WS_LOADED_USID);
32 }
33 this.services.replace(services);
34
23 this.userId = data.userId; 35 this.userId = data.userId;
24 } 36 }
25} 37}
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js
index 7f41cfc88..949f8a792 100644
--- a/src/features/workspaces/store.js
+++ b/src/features/workspaces/store.js
@@ -17,16 +17,18 @@ import { WORKSPACES_ROUTES } from './index';
17import { createReactions } from '../../stores/lib/Reaction'; 17import { createReactions } from '../../stores/lib/Reaction';
18import { createActionBindings } from '../utils/ActionBinding'; 18import { createActionBindings } from '../utils/ActionBinding';
19 19
20const debug = require('debug')('Franz:feature:workspaces:store'); 20import { KEEP_WS_LOADED_USID } from '../../config';
21
22const debug = require('debug')('Ferdi:feature:workspaces:store');
21 23
22export default class WorkspacesStore extends FeatureStore { 24export default class WorkspacesStore extends FeatureStore {
23 @observable isFeatureEnabled = false; 25 @observable isFeatureEnabled = true;
24 26
25 @observable isFeatureActive = false; 27 @observable isFeatureActive = false;
26 28
27 @observable isPremiumFeature = true; 29 @observable isPremiumFeature = false;
28 30
29 @observable isPremiumUpgradeRequired = true; 31 @observable isPremiumUpgradeRequired = false;
30 32
31 @observable activeWorkspace = null; 33 @observable activeWorkspace = null;
32 34
@@ -54,7 +56,8 @@ export default class WorkspacesStore extends FeatureStore {
54 } 56 }
55 57
56 @computed get isUserAllowedToUseFeature() { 58 @computed get isUserAllowedToUseFeature() {
57 return !this.isPremiumUpgradeRequired; 59 return true;
60 // return !this.isPremiumUpgradeRequired;
58 } 61 }
59 62
60 @computed get isAnyWorkspaceActive() { 63 @computed get isAnyWorkspaceActive() {
@@ -258,10 +261,10 @@ export default class WorkspacesStore extends FeatureStore {
258 }; 261 };
259 262
260 _setIsPremiumFeatureReaction = () => { 263 _setIsPremiumFeatureReaction = () => {
261 const { features } = this.stores; 264 // const { features } = this.stores;
262 const { isWorkspaceIncludedInCurrentPlan } = features.features; 265 // const { isWorkspaceIncludedInCurrentPlan } = features.features;
263 this.isPremiumFeature = !isWorkspaceIncludedInCurrentPlan; 266 // this.isPremiumFeature = !isWorkspaceIncludedInCurrentPlan;
264 this.isPremiumUpgradeRequired = !isWorkspaceIncludedInCurrentPlan; 267 // this.isPremiumUpgradeRequired = !isWorkspaceIncludedInCurrentPlan;
265 }; 268 };
266 269
267 _setWorkspaceBeingEditedReaction = () => { 270 _setWorkspaceBeingEditedReaction = () => {
@@ -326,7 +329,7 @@ export default class WorkspacesStore extends FeatureStore {
326 // Loop through all workspaces and remove invalid service ids (locally) 329 // Loop through all workspaces and remove invalid service ids (locally)
327 this.workspaces.forEach((workspace) => { 330 this.workspaces.forEach((workspace) => {
328 workspace.services.forEach((serviceId) => { 331 workspace.services.forEach((serviceId) => {
329 if (servicesHaveBeenLoaded && !services.one(serviceId)) { 332 if (servicesHaveBeenLoaded && !services.one(serviceId) && serviceId !== KEEP_WS_LOADED_USID) {
330 workspace.services.remove(serviceId); 333 workspace.services.remove(serviceId);
331 } 334 }
332 }); 335 });
diff --git a/src/helpers/recipe-helpers.js b/src/helpers/recipe-helpers.js
index 257e322fb..a31c29e72 100644
--- a/src/helpers/recipe-helpers.js
+++ b/src/helpers/recipe-helpers.js
@@ -3,7 +3,7 @@ import { remote } from 'electron';
3 3
4// import ServiceModel from '../models/Service'; 4// import ServiceModel from '../models/Service';
5 5
6const app = remote.app; 6const { app } = remote;
7 7
8export function getRecipeDirectory(id = '') { 8export function getRecipeDirectory(id = '') {
9 return path.join(app.getPath('userData'), 'recipes', id); 9 return path.join(app.getPath('userData'), 'recipes', id);
diff --git a/src/helpers/service-helpers.js b/src/helpers/service-helpers.js
index 5f63f6b7c..83f89f108 100644
--- a/src/helpers/service-helpers.js
+++ b/src/helpers/service-helpers.js
@@ -2,7 +2,7 @@ import path from 'path';
2import { remote } from 'electron'; 2import { remote } from 'electron';
3import fs from 'fs-extra'; 3import fs from 'fs-extra';
4 4
5const app = remote.app; 5const { app } = remote;
6 6
7export function getServicePartitionsDirectory() { 7export function getServicePartitionsDirectory() {
8 return path.join(app.getPath('userData'), 'Partitions'); 8 return path.join(app.getPath('userData'), 'Partitions');
diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js
index 750d1f00c..2f429a25c 100644
--- a/src/helpers/url-helpers.js
+++ b/src/helpers/url-helpers.js
@@ -2,7 +2,7 @@ import { URL } from 'url';
2 2
3import { ALLOWED_PROTOCOLS } from '../config'; 3import { ALLOWED_PROTOCOLS } from '../config';
4 4
5const debug = require('debug')('Franz:Helpers:url'); 5const debug = require('debug')('Ferdi:Helpers:url');
6 6
7export function isValidExternalURL(url) { 7export function isValidExternalURL(url) {
8 const parsedUrl = new URL(url); 8 const parsedUrl = new URL(url);
diff --git a/src/helpers/validation-helpers.js b/src/helpers/validation-helpers.js
index ab2376b1b..f489ec65e 100644
--- a/src/helpers/validation-helpers.js
+++ b/src/helpers/validation-helpers.js
@@ -26,13 +26,13 @@ const messages = defineMessages({
26 26
27export function required({ field }) { 27export function required({ field }) {
28 const isValid = (field.value.trim() !== ''); 28 const isValid = (field.value.trim() !== '');
29 return [isValid, window.franz.intl.formatMessage(messages.required, { field: field.label })]; 29 return [isValid, window.ferdi.intl.formatMessage(messages.required, { field: field.label })];
30} 30}
31 31
32export function email({ field }) { 32export function email({ field }) {
33 const value = field.value.trim(); 33 const value = field.value.trim();
34 const isValid = isEmail(value); 34 const isValid = isEmail(value);
35 return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })]; 35 return [isValid, window.ferdi.intl.formatMessage(messages.email, { field: field.label })];
36} 36}
37 37
38export function url({ field }) { 38export function url({ field }) {
@@ -46,7 +46,7 @@ export function url({ field }) {
46 isValid = true; 46 isValid = true;
47 } 47 }
48 48
49 return [isValid, window.franz.intl.formatMessage(messages.url, { field: field.label })]; 49 return [isValid, window.ferdi.intl.formatMessage(messages.url, { field: field.label })];
50} 50}
51 51
52export function minLength(length) { 52export function minLength(length) {
@@ -55,13 +55,13 @@ export function minLength(length) {
55 if (field.touched) { 55 if (field.touched) {
56 isValid = field.value.length >= length; 56 isValid = field.value.length >= length;
57 } 57 }
58 return [isValid, window.franz.intl.formatMessage(messages.minLength, { field: field.label, length })]; 58 return [isValid, window.ferdi.intl.formatMessage(messages.minLength, { field: field.label, length })];
59 }; 59 };
60} 60}
61 61
62export function oneRequired(targets) { 62export function oneRequired(targets) {
63 return ({ field, form }) => { 63 return ({ field, form }) => {
64 const invalidFields = targets.filter(target => form.$(target).value === ''); 64 const invalidFields = targets.filter(target => form.$(target).value === '');
65 return [targets.length !== invalidFields.length, window.franz.intl.formatMessage(messages.required, { field: field.label })]; 65 return [targets.length !== invalidFields.length, window.ferdi.intl.formatMessage(messages.required, { field: field.label })];
66 }; 66 };
67} 67}
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js
index af8479c59..86fb9e18d 100644
--- a/src/i18n/globalMessages.js
+++ b/src/i18n/globalMessages.js
@@ -3,7 +3,7 @@ import { defineMessages } from 'react-intl';
3export default defineMessages({ 3export default defineMessages({
4 APIUnhealthy: { 4 APIUnhealthy: {
5 id: 'global.api.unhealthy', 5 id: 'global.api.unhealthy',
6 defaultMessage: '!!!Can\'t connect to Franz Online Services', 6 defaultMessage: '!!!Can\'t connect to Ferdi Online Services',
7 }, 7 },
8 notConnectedToTheInternet: { 8 notConnectedToTheInternet: {
9 id: 'global.notConnectedToTheInternet', 9 id: 'global.notConnectedToTheInternet',
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index c194c9c1f..4f1c5a052 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -7,7 +7,7 @@
7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", 7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional",
8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial",
9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action" : "Aconsegueix una llicència de suport per a Franz", 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.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 12 "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.",
13 "feature.shareFranz.action.email" : "Envia com a correu", 13 "feature.shareFranz.action.email" : "Envia com a correu",
@@ -20,7 +20,7 @@
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "No es pot connectar amb els serveis en línia de Franz", 23 "global.api.unhealthy" : "No es pot connectar amb els serveis en línia de Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", 25 "global.notConnectedToTheInternet" : "No esteu connectat a Internet.",
26 "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", 26 "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", 56 "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Sobre Franz", 59 "menu.app.about" : "Sobre Ferdi",
60 "menu.app.announcement" : "Què hi ha de nou?", 60 "menu.app.announcement" : "Què hi ha de nou?",
61 "menu.app.checkForUpdates" : "Comprova si hi ha actualitzacions", 61 "menu.app.checkForUpdates" : "Comprova si hi ha actualitzacions",
62 "menu.app.hide" : "Amaga", 62 "menu.app.hide" : "Amaga",
@@ -97,7 +97,7 @@
97 "menu.view" : "Visualitza", 97 "menu.view" : "Visualitza",
98 "menu.view.enterFullScreen" : "Inicia la pantalla completa", 98 "menu.view.enterFullScreen" : "Inicia la pantalla completa",
99 "menu.view.exitFullScreen" : "Surt de pantalla completa", 99 "menu.view.exitFullScreen" : "Surt de pantalla completa",
100 "menu.view.reloadFranz" : "Torna a carregar Franz", 100 "menu.view.reloadFranz" : "Torna a carregar Ferdi",
101 "menu.view.reloadService" : "Torna a carregar el servei", 101 "menu.view.reloadService" : "Torna a carregar el servei",
102 "menu.view.resetZoom" : "Mida real", 102 "menu.view.resetZoom" : "Mida real",
103 "menu.view.toggleDevTools" : "Activa serveis per a desenvolupadors", 103 "menu.view.toggleDevTools" : "Activa serveis per a desenvolupadors",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Introducció", 169 "services.getStarted" : "Introducció",
170 "services.welcome" : "Benvingut a Franz", 170 "services.welcome" : "Benvingut a Ferdi",
171 "settings.account.account.editButton" : "Editar Compte", 171 "settings.account.account.editButton" : "Editar Compte",
172 "settings.account.accountType.basic" : "Compte bàsic", 172 "settings.account.accountType.basic" : "Compte bàsic",
173 "settings.account.accountType.premium" : "Compte de Suport Premium", 173 "settings.account.accountType.premium" : "Compte de Suport Premium",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Buida la memòria cau", 198 "settings.app.buttonClearAllCache" : "Buida la memòria cau",
199 "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització", 199 "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització",
200 "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions", 200 "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions",
201 "settings.app.cacheInfo" : "La memòria cau de Franz està utilitzant {size} d'espai al disc", 201 "settings.app.cacheInfo" : "La memòria cau de Ferdi està utilitzant {size} d'espai al disc",
202 "settings.app.currentVersion" : "Versió actual:", 202 "settings.app.currentVersion" : "Versió actual:",
203 "settings.app.form.autoLaunchInBackground" : "Obrir en segon plà", 203 "settings.app.form.autoLaunchInBackground" : "Obrir en segon plà",
204 "settings.app.form.autoLaunchOnStart" : "Iniciar Franz a l'inici", 204 "settings.app.form.autoLaunchOnStart" : "Iniciar Ferdi a l'inici",
205 "settings.app.form.beta" : "Inclou versions beta", 205 "settings.app.form.beta" : "Inclou versions beta",
206 "settings.app.form.darkMode" : "Uneix-te al Cantó Fosc", 206 "settings.app.form.darkMode" : "Uneix-te al Cantó Fosc",
207 "settings.app.form.enableGPUAcceleration" : "Activar acceleració GPU", 207 "settings.app.form.enableGPUAcceleration" : "Activar acceleració GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Idioma", 212 "settings.app.form.language" : "Idioma",
213 "settings.app.form.minimizeToSystemTray" : "Minimitza Franz a la safata del sistema", 213 "settings.app.form.minimizeToSystemTray" : "Minimitza Ferdi a la safata del sistema",
214 "settings.app.form.runInBackground" : "Mantén a Franz en segon pla en tancar la finestra", 214 "settings.app.form.runInBackground" : "Mantén a Ferdi en segon pla en tancar la finestra",
215 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats", 215 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra la insígnia de missatges no llegits quan les notificacions estiguin desactivades", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra la insígnia de missatges no llegits quan les notificacions estiguin desactivades",
217 "settings.app.headline" : "Configuració", 217 "settings.app.headline" : "Configuració",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Els canvis requereixen reiniciar", 224 "settings.app.restartRequired" : "Els canvis requereixen reiniciar",
225 "settings.app.subheadlineCache" : "Memòria cau", 225 "settings.app.subheadlineCache" : "Memòria cau",
226 "settings.app.translationHelp" : "Ajuda'ns a traduir Franz en la teva llengua.", 226 "settings.app.translationHelp" : "Ajuda'ns a traduir Ferdi en la teva llengua.",
227 "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...", 227 "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...",
228 "settings.app.updateStatusSearching" : "Està buscant actualitzacions", 228 "settings.app.updateStatusSearching" : "Està buscant actualitzacions",
229 "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Franz", 229 "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Ferdi",
230 "settings.invite.headline" : "Convidar amics", 230 "settings.invite.headline" : "Convidar amics",
231 "settings.navigation.account" : "Compte", 231 "settings.navigation.account" : "Compte",
232 "settings.navigation.availableServices" : "Serveis disponibles", 232 "settings.navigation.availableServices" : "Serveis disponibles",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Afegir {name}", 256 "settings.service.form.addServiceHeadline" : "Afegir {name}",
257 "settings.service.form.availableServices" : "Serveis disponibles", 257 "settings.service.form.availableServices" : "Serveis disponibles",
258 "settings.service.form.customUrl" : "Servidor personalitzat", 258 "settings.service.form.customUrl" : "Servidor personalitzat",
259 "settings.service.form.customUrlPremiumInfo" : "Per afegir serveis allotjats per vosaltres mateixos, necessiteu un Compte Franz Premium Supporter.", 259 "settings.service.form.customUrlPremiumInfo" : "Per afegir serveis allotjats per vosaltres mateixos, necessiteu un Compte Ferdi Premium Supporter.",
260 "settings.service.form.customUrlUpgradeAccount" : "Actualitzeu el vostre compte", 260 "settings.service.form.customUrlUpgradeAccount" : "Actualitzeu el vostre compte",
261 "settings.service.form.customUrlValidationError" : "No s'ha pogut validar el servidor {name} personalitzat.", 261 "settings.service.form.customUrlValidationError" : "No s'ha pogut validar el servidor {name} personalitzat.",
262 "settings.service.form.deleteButton" : "Suprimeix el servei", 262 "settings.service.form.deleteButton" : "Suprimeix el servei",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Nom", 278 "settings.service.form.name" : "Nom",
279 "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS", 279 "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS",
280 "settings.service.form.proxy.host" : "Host Proxy \/ IP", 280 "settings.service.form.proxy.host" : "Host Proxy \/ IP",
281 "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz", 281 "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Ferdi",
282 "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", 282 "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy",
283 "settings.service.form.proxy.password" : "Contrasenya (opcional)", 283 "settings.service.form.proxy.password" : "Contrasenya (opcional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Siusplau, reinicieu el Franz després de canviar els ajustaments de proxy", 285 "settings.service.form.proxy.restartInfo" : "Siusplau, reinicieu el Ferdi després de canviar els ajustaments de proxy",
286 "settings.service.form.proxy.user" : "Usuari (opcional)", 286 "settings.service.form.proxy.user" : "Usuari (opcional)",
287 "settings.service.form.saveButton" : "Desa el servei", 287 "settings.service.form.saveButton" : "Desa el servei",
288 "settings.service.form.tabHosted" : "Allotjat", 288 "settings.service.form.tabHosted" : "Allotjat",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Tots els sons estan desactivats", 299 "settings.services.tooltip.isMuted" : "Tots els sons estan desactivats",
300 "settings.services.tooltip.notificationsDisabled" : "Les notificacions estan desactivades", 300 "settings.services.tooltip.notificationsDisabled" : "Les notificacions estan desactivades",
301 "settings.services.updatedInfo" : "S'han desat els canvis", 301 "settings.services.updatedInfo" : "S'han desat els canvis",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Equip", 304 "settings.team.headline" : "Equip",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Torna a provar-ho", 327 "settings.workspaces.tryReloadWorkspaces" : "Torna a provar-ho",
328 "settings.workspaces.updatedInfo" : "S'han desat els canvis", 328 "settings.workspaces.updatedInfo" : "S'han desat els canvis",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Afegeix nou servei", 332 "sidebar.addNewService" : "Afegeix nou servei",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "Ja teniu un compte, iniciar la sessió?", 348 "signup.link.login" : "Ja teniu un compte, iniciar la sessió?",
349 "signup.password.label" : "Contrasenya", 349 "signup.password.label" : "Contrasenya",
350 "signup.submit.label" : "Crea un compte", 350 "signup.submit.label" : "Crea un compte",
351 "subscription.euTaxInfo" : "Residents d'EU: es poden aplicar impostos locals",
352 "subscription.features.ads" : "Sense anuncis, mai!",
353 "subscription.features.comingSoon" : "properament",
354 "subscription.features.noInterruptions" : "Sense retards ni molestes actualitzacions de llicències ",
355 "subscription.features.onpremise.mattermost" : "Afegir serveis allotjats com Mattermost",
356 "subscription.features.proxy" : "Suport de Proxy per a serveis",
357 "subscription.features.spellchecker" : "Suport per corrector ortogràfic",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "El compte de pagament Ferdi Premium Supporter inclou",
360 "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament",
361 "subscription.submit.label" : "Vull donar suport al desenvolupament de Ferdi",
362 "subscription.type.free" : "gratuït",
363 "subscription.type.month" : "mes",
364 "subscription.type.year" : "any",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index 42fcdc622..4380df0d8 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Začněme", 169 "services.getStarted" : "Začněme",
170 "services.welcome" : "Vítejte v programu Franz", 170 "services.welcome" : "Vítejte v programu Ferdi",
171 "settings.account.account.editButton" : "Upravit účet", 171 "settings.account.account.editButton" : "Upravit účet",
172 "settings.account.accountType.basic" : "Základní účet", 172 "settings.account.accountType.basic" : "Základní účet",
173 "settings.account.accountType.premium" : "Prémiový účet podporovatele", 173 "settings.account.accountType.premium" : "Prémiový účet podporovatele",
174 "settings.account.buttonSave" : "Aktualizovat profil", 174 "settings.account.buttonSave" : "Aktualizovat profil",
175 "settings.account.deleteAccount" : "Smazat účet", 175 "settings.account.deleteAccount" : "Smazat účet",
176 "settings.account.deleteEmailSent" : "Na váš mail byl odeslán email s odkazem pro potvrzení smazání účtu. Váš účet a data poté nepůjde obnovit!", 176 "settings.account.deleteEmailSent" : "Na váš mail byl odeslán email s odkazem pro potvrzení smazání účtu. Váš účet a data poté nepůjde obnovit!",
177 "settings.account.deleteInfo" : "Pokud již nepotřebujete váš Franz účet, můžete zde váš účet, a všechna data v něm, smazat.", 177 "settings.account.deleteInfo" : "Pokud již nepotřebujete váš Ferdi účet, můžete zde váš účet, a všechna data v něm, smazat.",
178 "settings.account.headline" : "Účet", 178 "settings.account.headline" : "Účet",
179 "settings.account.headlineAccount" : "Informace o účtu", 179 "settings.account.headlineAccount" : "Informace o účtu",
180 "settings.account.headlineDangerZone" : "Nebezpečná zóna", 180 "settings.account.headlineDangerZone" : "Nebezpečná zóna",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti", 198 "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti",
199 "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", 199 "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace",
200 "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace", 200 "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace",
201 "settings.app.cacheInfo" : "Franz momentálně používá {size} místa na disku.", 201 "settings.app.cacheInfo" : "Ferdi momentálně používá {size} místa na disku.",
202 "settings.app.currentVersion" : "Aktuální verze:", 202 "settings.app.currentVersion" : "Aktuální verze:",
203 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadí", 203 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadí",
204 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu", 204 "settings.app.form.autoLaunchOnStart" : "Spustit Ferdi při startu",
205 "settings.app.form.beta" : "Zahrnout beta verze", 205 "settings.app.form.beta" : "Zahrnout beta verze",
206 "settings.app.form.darkMode" : "Připoj se k Temné straně", 206 "settings.app.form.darkMode" : "Připoj se k Temné straně",
207 "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlení", 207 "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlení",
@@ -210,7 +210,7 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Jazyk", 212 "settings.app.form.language" : "Jazyk",
213 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Franz do systémové lišty", 213 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Ferdi do systémové lišty",
214 "settings.app.form.runInBackground" : "Ponechat Franze v pozadí při zavírání okna", 214 "settings.app.form.runInBackground" : "Ponechat Franze v pozadí při zavírání okna",
215 "settings.app.form.showDisabledServices" : "Zobrazit záložky vypnutých služeb", 215 "settings.app.form.showDisabledServices" : "Zobrazit záložky vypnutých služeb",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepřečtené zprávy když jsou upozornění vypnutá", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepřečtené zprávy když jsou upozornění vypnutá",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Změny vyžadují restart", 224 "settings.app.restartRequired" : "Změny vyžadují restart",
225 "settings.app.subheadlineCache" : "Mezipaměť", 225 "settings.app.subheadlineCache" : "Mezipaměť",
226 "settings.app.translationHelp" : "Pomozte nám přeložit Franz do svého jazyka.", 226 "settings.app.translationHelp" : "Pomozte nám přeložit Ferdi do svého jazyka.",
227 "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahování...", 227 "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahování...",
228 "settings.app.updateStatusSearching" : "Hledá aktualizace", 228 "settings.app.updateStatusSearching" : "Hledá aktualizace",
229 "settings.app.updateStatusUpToDate" : "Používáte nejnovější verzi programu Franz", 229 "settings.app.updateStatusUpToDate" : "Používáte nejnovější verzi programu Ferdi",
230 "settings.invite.headline" : "Pozvi přátele", 230 "settings.invite.headline" : "Pozvi přátele",
231 "settings.navigation.account" : "Účet", 231 "settings.navigation.account" : "Účet",
232 "settings.navigation.availableServices" : "Dostupné služby", 232 "settings.navigation.availableServices" : "Dostupné služby",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Přidat {name}", 256 "settings.service.form.addServiceHeadline" : "Přidat {name}",
257 "settings.service.form.availableServices" : "Dostupné služby", 257 "settings.service.form.availableServices" : "Dostupné služby",
258 "settings.service.form.customUrl" : "Vlastní server", 258 "settings.service.form.customUrl" : "Vlastní server",
259 "settings.service.form.customUrlPremiumInfo" : "Chcete-li přidat vlastní hostované služby, potřebujete účet Franz Premium Supporter.", 259 "settings.service.form.customUrlPremiumInfo" : "Chcete-li přidat vlastní hostované služby, potřebujete účet Ferdi Premium Supporter.",
260 "settings.service.form.customUrlUpgradeAccount" : "Aktualizujte svůj účet", 260 "settings.service.form.customUrlUpgradeAccount" : "Aktualizujte svůj účet",
261 "settings.service.form.customUrlValidationError" : "Nepodařilo se ověřit vlastní server {name}.", 261 "settings.service.form.customUrlValidationError" : "Nepodařilo se ověřit vlastní server {name}.",
262 "settings.service.form.deleteButton" : "Odstranit službu", 262 "settings.service.form.deleteButton" : "Odstranit službu",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Jméno", 278 "settings.service.form.name" : "Jméno",
279 "settings.service.form.proxy.headline" : "Nastavení HTTP\/HTTPS Proxy", 279 "settings.service.form.proxy.headline" : "Nastavení HTTP\/HTTPS Proxy",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "Uložit službu", 287 "settings.service.form.saveButton" : "Uložit službu",
288 "settings.service.form.tabHosted" : "Hostováno", 288 "settings.service.form.tabHosted" : "Hostováno",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Všechny zvuky jsou ztišeny", 299 "settings.services.tooltip.isMuted" : "Všechny zvuky jsou ztišeny",
300 "settings.services.tooltip.notificationsDisabled" : "Oznámení jsou zakázána", 300 "settings.services.tooltip.notificationsDisabled" : "Oznámení jsou zakázána",
301 "settings.services.updatedInfo" : "Vaše změny byly uloženy", 301 "settings.services.updatedInfo" : "Vaše změny byly uloženy",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Tým", 304 "settings.team.headline" : "Tým",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Zkusit znovu", 327 "settings.workspaces.tryReloadWorkspaces" : "Zkusit znovu",
328 "settings.workspaces.updatedInfo" : "Vaše změny byly uloženy", 328 "settings.workspaces.updatedInfo" : "Vaše změny byly uloženy",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Přidat novou službu", 332 "sidebar.addNewService" : "Přidat novou službu",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,12 +342,26 @@
342 "signup.firstname.label" : "Jméno", 342 "signup.firstname.label" : "Jméno",
343 "signup.headline" : "Přihlásit se", 343 "signup.headline" : "Přihlásit se",
344 "signup.lastname.label" : "Příjmení", 344 "signup.lastname.label" : "Příjmení",
345 "signup.legal.info" : "Vytvořením účtu Franz souhlasíte s", 345 "signup.legal.info" : "Vytvořením účtu Ferdi souhlasíte s",
346 "signup.legal.privacy" : "Prohlášení o ochraně soukromí", 346 "signup.legal.privacy" : "Prohlášení o ochraně soukromí",
347 "signup.legal.terms" : "Podmínky služby", 347 "signup.legal.terms" : "Podmínky služby",
348 "signup.link.login" : "Již máte účet, přihlásit se?", 348 "signup.link.login" : "Již máte účet, přihlásit se?",
349 "signup.password.label" : "Heslo", 349 "signup.password.label" : "Heslo",
350 "signup.submit.label" : "Vytvořit účet", 350 "signup.submit.label" : "Vytvořit účet",
351 "subscription.euTaxInfo" : "Pro obyvatelé EU: mohou být aplikovány lokální daně",
352 "subscription.features.ads" : "Žádné reklamy, nikdy!",
353 "subscription.features.comingSoon" : "již brzy",
354 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
355 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
356 "subscription.features.proxy" : "Proxy support for services",
357 "subscription.features.spellchecker" : "Support for spellchecker",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "Placený účet Premium Supporter Ferdi zahrnuje",
360 "subscription.paymentSessionError" : "Nebylo možné inicializovat platbu od",
361 "subscription.submit.label" : "Chci podpořit vývoj aplikace Ferdi",
362 "subscription.type.free" : "zdarma",
363 "subscription.type.month" : "měsíc",
364 "subscription.type.year" : "rok",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 1a5625963..2908b7dab 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -29,7 +29,7 @@
29 "global.spellchecking.language" : "Sprache für Rechtschreibprüfung", 29 "global.spellchecking.language" : "Sprache für Rechtschreibprüfung",
30 "global.upgradeButton.upgradeToPro" : "Upgrade zu Franz Professional", 30 "global.upgradeButton.upgradeToPro" : "Upgrade zu Franz Professional",
31 "import.headline" : "Deine Franz-4-Dienste importieren", 31 "import.headline" : "Deine Franz-4-Dienste importieren",
32 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden", 32 "import.notSupportedHeadline" : "Dienste, die noch nicht von Ferdi 5 unterstützt werden",
33 "import.skip.label" : "Ich möchte Dienste selbst hinzufügen", 33 "import.skip.label" : "Ich möchte Dienste selbst hinzufügen",
34 "import.submit.label" : "Dienste importieren", 34 "import.submit.label" : "Dienste importieren",
35 "infobar.buttonChangelog" : "Was gibt es Neues?", 35 "infobar.buttonChangelog" : "Was gibt es Neues?",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", 56 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.",
57 "menu.Todoss.closeTodosDrawer" : "ToDos schließen", 57 "menu.Todoss.closeTodosDrawer" : "ToDos schließen",
58 "menu.Todoss.openTodosDrawer" : "ToDos öffnen", 58 "menu.Todoss.openTodosDrawer" : "ToDos öffnen",
59 "menu.app.about" : "Über Franz", 59 "menu.app.about" : "Über Ferdi",
60 "menu.app.announcement" : "Was ist neu?", 60 "menu.app.announcement" : "Was ist neu?",
61 "menu.app.checkForUpdates" : "Nach Updates suchen", 61 "menu.app.checkForUpdates" : "Nach Updates suchen",
62 "menu.app.hide" : "Ausblenden", 62 "menu.app.hide" : "Ausblenden",
@@ -97,7 +97,7 @@
97 "menu.view" : "Darstellung", 97 "menu.view" : "Darstellung",
98 "menu.view.enterFullScreen" : "Vollbildmodus", 98 "menu.view.enterFullScreen" : "Vollbildmodus",
99 "menu.view.exitFullScreen" : "Vollbildmodus aus", 99 "menu.view.exitFullScreen" : "Vollbildmodus aus",
100 "menu.view.reloadFranz" : "Franz neu laden", 100 "menu.view.reloadFranz" : "Ferdi neu laden",
101 "menu.view.reloadService" : "Dienst neu laden", 101 "menu.view.reloadService" : "Dienst neu laden",
102 "menu.view.resetZoom" : "Originalgröße", 102 "menu.view.resetZoom" : "Originalgröße",
103 "menu.view.toggleDevTools" : "Entwicklertools anzeigen", 103 "menu.view.toggleDevTools" : "Entwicklertools anzeigen",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Cache leeren", 198 "settings.app.buttonClearAllCache" : "Cache leeren",
199 "settings.app.buttonInstallUpdate" : "Neu starten & Update installieren", 199 "settings.app.buttonInstallUpdate" : "Neu starten & Update installieren",
200 "settings.app.buttonSearchForUpdate" : "Nach Updates suchen", 200 "settings.app.buttonSearchForUpdate" : "Nach Updates suchen",
201 "settings.app.cacheInfo" : "Der Franz Cache belegt derzeit {size}.", 201 "settings.app.cacheInfo" : "Der Ferdi Cache belegt derzeit {size}.",
202 "settings.app.currentVersion" : "Aktuelle Version:", 202 "settings.app.currentVersion" : "Aktuelle Version:",
203 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen", 203 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen",
204 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausführen", 204 "settings.app.form.autoLaunchOnStart" : "Ferdi beim Systemstart ausführen",
205 "settings.app.form.beta" : "Beta-Versionen einbeziehen", 205 "settings.app.form.beta" : "Beta-Versionen einbeziehen",
206 "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich! (Dark Mode)", 206 "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich! (Dark Mode)",
207 "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren", 207 "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Franz Todos aktivieren", 210 "settings.app.form.enableTodos" : "Franz Todos aktivieren",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Sprache", 212 "settings.app.form.language" : "Sprache",
213 "settings.app.form.minimizeToSystemTray" : "Franz in den Infobereich minimieren", 213 "settings.app.form.minimizeToSystemTray" : "Ferdi in den Infobereich minimieren",
214 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", 214 "settings.app.form.runInBackground" : "Ferdi im Hintergrund behalten, wenn das Fenster geschlossen wird",
215 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen", 215 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind",
217 "settings.app.headline" : "Einstellungen", 217 "settings.app.headline" : "Einstellungen",
@@ -220,13 +220,13 @@
220 "settings.app.headlineGeneral" : "Allgemeines", 220 "settings.app.headlineGeneral" : "Allgemeines",
221 "settings.app.headlineLanguage" : "Sprache", 221 "settings.app.headlineLanguage" : "Sprache",
222 "settings.app.headlineUpdates" : "Updates", 222 "settings.app.headlineUpdates" : "Updates",
223 "settings.app.languageDisclaimer" : "Offizielle Übersetzungen: Englisch & Deutsch. Alle anderen Sprachen sind Übersetzungen der Franz Community.", 223 "settings.app.languageDisclaimer" : "Offizielle Übersetzungen: Englisch & Deutsch. Alle anderen Sprachen sind Übersetzungen der Ferdi Community.",
224 "settings.app.restartRequired" : "Änderungen werden erst nach einem Neustart wirksam.", 224 "settings.app.restartRequired" : "Änderungen werden erst nach einem Neustart wirksam.",
225 "settings.app.subheadlineCache" : "Cache", 225 "settings.app.subheadlineCache" : "Cache",
226 "settings.app.translationHelp" : "Hilf uns, Franz in Deine Sprache zu übersetzen.", 226 "settings.app.translationHelp" : "Hilf uns, Ferdi in Deine Sprache zu übersetzen.",
227 "settings.app.updateStatusAvailable" : "Update verfügbar, lädt herunter ...", 227 "settings.app.updateStatusAvailable" : "Update verfügbar, lädt herunter ...",
228 "settings.app.updateStatusSearching" : "Suche nach Updates", 228 "settings.app.updateStatusSearching" : "Suche nach Updates",
229 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz", 229 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Ferdi",
230 "settings.invite.headline" : "Lade drei Deiner Freunde ein", 230 "settings.invite.headline" : "Lade drei Deiner Freunde ein",
231 "settings.navigation.account" : "Konto", 231 "settings.navigation.account" : "Konto",
232 "settings.navigation.availableServices" : "Verfügbare Dienste", 232 "settings.navigation.availableServices" : "Verfügbare Dienste",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "{name} hinzufügen", 256 "settings.service.form.addServiceHeadline" : "{name} hinzufügen",
257 "settings.service.form.availableServices" : "Verfügbare Dienste", 257 "settings.service.form.availableServices" : "Verfügbare Dienste",
258 "settings.service.form.customUrl" : "Eigener Server", 258 "settings.service.form.customUrl" : "Eigener Server",
259 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst Du ein Franz Premium Konto.", 259 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst Du ein Ferdi Premium Konto.",
260 "settings.service.form.customUrlUpgradeAccount" : "Dein Konto upgraden", 260 "settings.service.form.customUrlUpgradeAccount" : "Dein Konto upgraden",
261 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.", 261 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.",
262 "settings.service.form.deleteButton" : "Dienst löschen", 262 "settings.service.form.deleteButton" : "Dienst löschen",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Name", 278 "settings.service.form.name" : "Name",
279 "settings.service.form.proxy.headline" : "HTTP-\/HTTPS-Proxy-Einstellungen", 279 "settings.service.form.proxy.headline" : "HTTP-\/HTTPS-Proxy-Einstellungen",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy-Einstellungen werden nicht mit den Franz Servern synchronisiert.", 281 "settings.service.form.proxy.info" : "Proxy-Einstellungen werden nicht mit den Ferdi Servern synchronisiert.",
282 "settings.service.form.proxy.isEnabled" : "Proxy-Server verwenden", 282 "settings.service.form.proxy.isEnabled" : "Proxy-Server verwenden",
283 "settings.service.form.proxy.password" : "Passwort (optional)", 283 "settings.service.form.proxy.password" : "Passwort (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Bitte starte Franz nach dem Ändern der Proxy-Einstellungen neu.", 285 "settings.service.form.proxy.restartInfo" : "Bitte starte Ferdi nach dem Ändern der Proxy-Einstellungen neu.",
286 "settings.service.form.proxy.user" : "Benutzer (optional)", 286 "settings.service.form.proxy.user" : "Benutzer (optional)",
287 "settings.service.form.saveButton" : "Dienst speichern", 287 "settings.service.form.saveButton" : "Dienst speichern",
288 "settings.service.form.tabHosted" : "Gehostet", 288 "settings.service.form.tabHosted" : "Gehostet",
@@ -299,10 +299,10 @@
299 "settings.services.tooltip.isMuted" : "Alle Töne sind deaktiviert", 299 "settings.services.tooltip.isMuted" : "Alle Töne sind deaktiviert",
300 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert", 300 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert",
301 "settings.services.updatedInfo" : "Deine Änderungen wurden gespeichert", 301 "settings.services.updatedInfo" : "Deine Änderungen wurden gespeichert",
302 "settings.team.contentHeadline" : "Franz für Teams", 302 "settings.team.contentHeadline" : "Ferdi für Teams",
303 "settings.team.copy" : "Mit Franz für Teams kannst du Kolleginnen und Kollegen per Email-Invite in dein Team einladen und ihre Abonnments in den Einstellungen deines Accounts verwalten. Verschwende keine Zeit mehr damit, Lizenzen für jedes Teammitglied einzeln einzurichten, vergiss mehrfache Rechnungen und unterschiedliche Abrechnungszeiträume - alles unter einem Dach.", 303 "settings.team.copy" : "Mit Ferdi für Teams kannst du Kolleginnen und Kollegen per Email-Invite in dein Team einladen und ihre Abonnments in den Einstellungen deines Accounts verwalten. Verschwende keine Zeit mehr damit, Lizenzen für jedes Teammitglied einzeln einzurichten, vergiss mehrfache Rechnungen und unterschiedliche Abrechnungszeiträume - alles unter einem Dach.",
304 "settings.team.headline" : "Team", 304 "settings.team.headline" : "Team",
305 "settings.team.intro" : "Mit Franz für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.", 305 "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.",
306 "settings.team.manageAction" : "Verwalte dein Team auf meetfranz.com", 306 "settings.team.manageAction" : "Verwalte dein Team auf meetfranz.com",
307 "settings.team.upgradeAction" : "Account Upgrade durchführen", 307 "settings.team.upgradeAction" : "Account Upgrade durchführen",
308 "settings.user.form.accountType.company" : "Firma", 308 "settings.user.form.accountType.company" : "Firma",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Du hast noch keine Workspaces hinzugefügt", 326 "settings.workspaces.noWorkspacesAdded" : "Du hast noch keine Workspaces hinzugefügt",
327 "settings.workspaces.tryReloadWorkspaces" : "Erneut versuchen", 327 "settings.workspaces.tryReloadWorkspaces" : "Erneut versuchen",
328 "settings.workspaces.updatedInfo" : "Deine Änderungen wurden gespeichert", 328 "settings.workspaces.updatedInfo" : "Deine Änderungen wurden gespeichert",
329 "settings.workspaces.workspaceFeatureHeadline" : "Weniger ist mehr: Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Weniger ist mehr: Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Mit Franz Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.", 330 "settings.workspaces.workspaceFeatureInfo" : "Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.",
331 "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden", 331 "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden",
332 "sidebar.addNewService" : "Neuen Dienst hinzufügen", 332 "sidebar.addNewService" : "Neuen Dienst hinzufügen",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "Du hast bereits ein Konto? Melde Dich an.", 348 "signup.link.login" : "Du hast bereits ein Konto? Melde Dich an.",
349 "signup.password.label" : "Passwort", 349 "signup.password.label" : "Passwort",
350 "signup.submit.label" : "Konto erstellen", 350 "signup.submit.label" : "Konto erstellen",
351 "subscription.euTaxInfo" : "Preise zuzüglich allfälliger Steuern",
352 "subscription.features.ads" : "Werbefrei auf Lebenszeit!",
353 "subscription.features.comingSoon" : "folgt bald",
354 "subscription.features.noInterruptions" : "Verwende Ferdi ohne Wartezeiten",
355 "subscription.features.onpremise.mattermost" : "Integration von gehosteten Diensten wie Mattermost",
356 "subscription.features.proxy" : "Proxy Support für Dienste",
357 "subscription.features.spellchecker" : "Unterstützung für Rechtschreibprüfung",
358 "subscription.features.workspaces" : "Organisiere deine Services in Workspaces",
359 "subscription.includedFeatures" : "Bezahlte Ferdi Premium Lizenzen beinhalten",
360 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.",
361 "subscription.submit.label" : "Ich möchte die Entwicklung von Ferdi unterstützen",
362 "subscription.type.free" : "kostenlos",
363 "subscription.type.month" : "Monat",
364 "subscription.type.year" : "Jahr",
351 "subscription.cta.activateTrial" : "Ja, kostenlose Franz Professional Testlizenz starten", 365 "subscription.cta.activateTrial" : "Ja, kostenlose Franz Professional Testlizenz starten",
352 "subscription.cta.allOptions" : "Alle Optionen anzeigen", 366 "subscription.cta.allOptions" : "Alle Optionen anzeigen",
353 "subscription.cta.choosePlan" : "Wähle deine Lizenz", 367 "subscription.cta.choosePlan" : "Wähle deine Lizenz",
@@ -370,7 +384,7 @@
370 "validation.oneRequired" : "Mindestens ein Wert wird benötigt", 384 "validation.oneRequired" : "Mindestens ein Wert wird benötigt",
371 "validation.required" : "{field} wird benötigt", 385 "validation.required" : "{field} wird benötigt",
372 "validation.url" : "{field} ist keine gültige URL", 386 "validation.url" : "{field} ist keine gültige URL",
373 "welcome.loginButton" : "Bei Franz einloggen", 387 "welcome.loginButton" : "Bei Ferdi einloggen",
374 "welcome.signupButton" : "Kostenloses Konto erstellen", 388 "welcome.signupButton" : "Kostenloses Konto erstellen",
375 "workspaceDrawer.addNewWorkspaceLabel" : "Neuen Workspace hinzufügen", 389 "workspaceDrawer.addNewWorkspaceLabel" : "Neuen Workspace hinzufügen",
376 "workspaceDrawer.allServices" : "Alle Dienste", 390 "workspaceDrawer.allServices" : "Alle Dienste",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Erstelle deinen ersten Workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Erstelle deinen ersten Workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium Feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium Feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Premium Account aktivieren", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Premium Account aktivieren",
383 "workspaceDrawer.workspaceFeatureInfo" : "Mit Franz Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.", 397 "workspaceDrawer.workspaceFeatureInfo" : "Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Workspaces bearbeiten", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Workspaces bearbeiten",
385 "workspaces.switchingIndicator.switchingTo" : "Wechsle zu" 399 "workspaces.switchingIndicator.switchingTo" : "Wechsle zu"
386} 400}
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 0dfe2055a..ab1279964 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -2,7 +2,7 @@
2 { 2 {
3 "descriptors": [ 3 "descriptors": [
4 { 4 {
5 "defaultMessage": "!!!A new update for Franz is available.", 5 "defaultMessage": "!!!A new update for Ferdi is available.",
6 "end": { 6 "end": {
7 "column": 3, 7 "column": 3,
8 "line": 12 8 "line": 12
@@ -46,7 +46,7 @@
46 { 46 {
47 "descriptors": [ 47 "descriptors": [
48 { 48 {
49 "defaultMessage": "!!!Import your Franz 4 services", 49 "defaultMessage": "!!!Import your Ferdi 4 services",
50 "end": { 50 "end": {
51 "column": 3, 51 "column": 3,
52 "line": 16 52 "line": 16
@@ -59,7 +59,7 @@
59 } 59 }
60 }, 60 },
61 { 61 {
62 "defaultMessage": "!!!Services not yet supported in Franz 5", 62 "defaultMessage": "!!!Services not yet supported in Ferdi 5",
63 "end": { 63 "end": {
64 "column": 3, 64 "column": 3,
65 "line": 20 65 "line": 20
@@ -199,6 +199,76 @@
199 { 199 {
200 "descriptors": [ 200 "descriptors": [
201 { 201 {
202 "defaultMessage": "!!!Locked",
203 "end": {
204 "column": 3,
205 "line": 18
206 },
207 "file": "src/components/auth/Locked.js",
208 "id": "locked.headline",
209 "start": {
210 "column": 12,
211 "line": 15
212 }
213 },
214 {
215 "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
216 "end": {
217 "column": 3,
218 "line": 22
219 },
220 "file": "src/components/auth/Locked.js",
221 "id": "locked.info",
222 "start": {
223 "column": 8,
224 "line": 19
225 }
226 },
227 {
228 "defaultMessage": "!!!Password",
229 "end": {
230 "column": 3,
231 "line": 26
232 },
233 "file": "src/components/auth/Locked.js",
234 "id": "locked.password.label",
235 "start": {
236 "column": 17,
237 "line": 23
238 }
239 },
240 {
241 "defaultMessage": "!!!Unlock",
242 "end": {
243 "column": 3,
244 "line": 30
245 },
246 "file": "src/components/auth/Locked.js",
247 "id": "locked.submit.label",
248 "start": {
249 "column": 21,
250 "line": 27
251 }
252 },
253 {
254 "defaultMessage": "!!!Password invalid",
255 "end": {
256 "column": 3,
257 "line": 34
258 },
259 "file": "src/components/auth/Locked.js",
260 "id": "locked.invalidCredentials",
261 "start": {
262 "column": 22,
263 "line": 31
264 }
265 }
266 ],
267 "path": "src/components/auth/Locked.json"
268 },
269 {
270 "descriptors": [
271 {
202 "defaultMessage": "!!!Sign in", 272 "defaultMessage": "!!!Sign in",
203 "end": { 273 "end": {
204 "column": 3, 274 "column": 3,
@@ -264,55 +334,81 @@
264 } 334 }
265 }, 335 },
266 { 336 {
267 "defaultMessage": "!!!Your session expired, please login again.", 337 "defaultMessage": "!!!Using a custom Ferdi server?",
268 "end": { 338 "end": {
269 "column": 3, 339 "column": 3,
270 "line": 40 340 "line": 40
271 }, 341 },
272 "file": "src/components/auth/Login.js", 342 "file": "src/components/auth/Login.js",
343 "id": "login.customServerQuestion",
344 "start": {
345 "column": 24,
346 "line": 37
347 }
348 },
349 {
350 "defaultMessage": "!!!Try importing your Franz account",
351 "end": {
352 "column": 3,
353 "line": 44
354 },
355 "file": "src/components/auth/Login.js",
356 "id": "login.customServerSuggestion",
357 "start": {
358 "column": 26,
359 "line": 41
360 }
361 },
362 {
363 "defaultMessage": "!!!Your session expired, please login again.",
364 "end": {
365 "column": 3,
366 "line": 48
367 },
368 "file": "src/components/auth/Login.js",
273 "id": "login.tokenExpired", 369 "id": "login.tokenExpired",
274 "start": { 370 "start": {
275 "column": 16, 371 "column": 16,
276 "line": 37 372 "line": 45
277 } 373 }
278 }, 374 },
279 { 375 {
280 "defaultMessage": "!!!Your session expired, please login again.", 376 "defaultMessage": "!!!Your session expired, please login again.",
281 "end": { 377 "end": {
282 "column": 3, 378 "column": 3,
283 "line": 44 379 "line": 52
284 }, 380 },
285 "file": "src/components/auth/Login.js", 381 "file": "src/components/auth/Login.js",
286 "id": "login.serverLogout", 382 "id": "login.serverLogout",
287 "start": { 383 "start": {
288 "column": 16, 384 "column": 16,
289 "line": 41 385 "line": 49
290 } 386 }
291 }, 387 },
292 { 388 {
293 "defaultMessage": "!!!Create a free account", 389 "defaultMessage": "!!!Create a free account",
294 "end": { 390 "end": {
295 "column": 3, 391 "column": 3,
296 "line": 48 392 "line": 56
297 }, 393 },
298 "file": "src/components/auth/Login.js", 394 "file": "src/components/auth/Login.js",
299 "id": "login.link.signup", 395 "id": "login.link.signup",
300 "start": { 396 "start": {
301 "column": 14, 397 "column": 14,
302 "line": 45 398 "line": 53
303 } 399 }
304 }, 400 },
305 { 401 {
306 "defaultMessage": "!!!Forgot password", 402 "defaultMessage": "!!!Forgot password",
307 "end": { 403 "end": {
308 "column": 3, 404 "column": 3,
309 "line": 52 405 "line": 60
310 }, 406 },
311 "file": "src/components/auth/Login.js", 407 "file": "src/components/auth/Login.js",
312 "id": "login.link.password", 408 "id": "login.link.password",
313 "start": { 409 "start": {
314 "column": 16, 410 "column": 16,
315 "line": 49 411 "line": 57
316 } 412 }
317 } 413 }
318 ], 414 ],
@@ -508,7 +604,7 @@
508 } 604 }
509 }, 605 },
510 { 606 {
511 "defaultMessage": "!!!Continue to Franz", 607 "defaultMessage": "!!!Continue to Ferdi",
512 "end": { 608 "end": {
513 "column": 3, 609 "column": 3,
514 "line": 46 610 "line": 46
@@ -604,7 +700,7 @@
604 } 700 }
605 }, 701 },
606 { 702 {
607 "defaultMessage": "!!!By creating a Franz account you accept the", 703 "defaultMessage": "!!!By creating a Ferdi account you accept the",
608 "end": { 704 "end": {
609 "column": 3, 705 "column": 3,
610 "line": 44 706 "line": 44
@@ -721,39 +817,52 @@
721 "defaultMessage": "!!!Your services have been updated.", 817 "defaultMessage": "!!!Your services have been updated.",
722 "end": { 818 "end": {
723 "column": 3, 819 "column": 3,
724 "line": 31 820 "line": 30
725 }, 821 },
726 "file": "src/components/layout/AppLayout.js", 822 "file": "src/components/layout/AppLayout.js",
727 "id": "infobar.servicesUpdated", 823 "id": "infobar.servicesUpdated",
728 "start": { 824 "start": {
729 "column": 19, 825 "column": 19,
730 "line": 28 826 "line": 27
731 } 827 }
732 }, 828 },
733 { 829 {
734 "defaultMessage": "!!!Reload services", 830 "defaultMessage": "!!!Reload services",
735 "end": { 831 "end": {
736 "column": 3, 832 "column": 3,
737 "line": 35 833 "line": 34
738 }, 834 },
739 "file": "src/components/layout/AppLayout.js", 835 "file": "src/components/layout/AppLayout.js",
740 "id": "infobar.buttonReloadServices", 836 "id": "infobar.buttonReloadServices",
741 "start": { 837 "start": {
742 "column": 24, 838 "column": 24,
743 "line": 32 839 "line": 31
744 } 840 }
745 }, 841 },
746 { 842 {
747 "defaultMessage": "!!!Could not load services and user information", 843 "defaultMessage": "!!!Could not load services and user information",
748 "end": { 844 "end": {
749 "column": 3, 845 "column": 3,
750 "line": 39 846 "line": 38
751 }, 847 },
752 "file": "src/components/layout/AppLayout.js", 848 "file": "src/components/layout/AppLayout.js",
753 "id": "infobar.requiredRequestsFailed", 849 "id": "infobar.requiredRequestsFailed",
754 "start": { 850 "start": {
755 "column": 26, 851 "column": 26,
756 "line": 36 852 "line": 35
853 }
854 },
855 {
856 "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
857 "end": {
858 "column": 3,
859 "line": 42
860 },
861 "file": "src/components/layout/AppLayout.js",
862 "id": "infobar.authRequestFailed",
863 "start": {
864 "column": 21,
865 "line": 39
757 } 866 }
758 } 867 }
759 ], 868 ],
@@ -864,6 +973,19 @@
864 "column": 20, 973 "column": 20,
865 "line": 43 974 "line": 43
866 } 975 }
976 },
977 {
978 "defaultMessage": "!!!Lock Ferdi",
979 "end": {
980 "column": 3,
981 "line": 50
982 },
983 "file": "src/components/layout/Sidebar.js",
984 "id": "sidebar.lockFerdi",
985 "start": {
986 "column": 13,
987 "line": 47
988 }
867 } 989 }
868 ], 990 ],
869 "path": "src/components/layout/Sidebar.json" 991 "path": "src/components/layout/Sidebar.json"
@@ -1042,7 +1164,7 @@
1042 { 1164 {
1043 "descriptors": [ 1165 "descriptors": [
1044 { 1166 {
1045 "defaultMessage": "!!!Welcome to Franz", 1167 "defaultMessage": "!!!Welcome to Ferdi",
1046 "end": { 1168 "end": {
1047 "column": 3, 1169 "column": 3,
1048 "line": 17 1170 "line": 17
@@ -1066,6 +1188,32 @@
1066 "column": 14, 1188 "column": 14,
1067 "line": 18 1189 "line": 18
1068 } 1190 }
1191 },
1192 {
1193 "defaultMessage": "!!!Please login to use Ferdi.",
1194 "end": {
1195 "column": 3,
1196 "line": 25
1197 },
1198 "file": "src/components/services/content/Services.js",
1199 "id": "services.login",
1200 "start": {
1201 "column": 9,
1202 "line": 22
1203 }
1204 },
1205 {
1206 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
1207 "end": {
1208 "column": 3,
1209 "line": 29
1210 },
1211 "file": "src/components/services/content/Services.js",
1212 "id": "services.serverInfo",
1213 "start": {
1214 "column": 14,
1215 "line": 26
1216 }
1069 } 1217 }
1070 ], 1218 ],
1071 "path": "src/components/services/content/Services.json" 1219 "path": "src/components/services/content/Services.json"
@@ -1421,7 +1569,7 @@
1421 } 1569 }
1422 }, 1570 },
1423 { 1571 {
1424 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", 1572 "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
1425 "end": { 1573 "end": {
1426 "column": 3, 1574 "column": 3,
1427 "line": 73 1575 "line": 73
@@ -1930,7 +2078,7 @@
1930 } 2078 }
1931 }, 2079 },
1932 { 2080 {
1933 "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", 2081 "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.",
1934 "end": { 2082 "end": {
1935 "column": 3, 2083 "column": 3,
1936 "line": 67 2084 "line": 67
@@ -2060,7 +2208,7 @@
2060 } 2208 }
2061 }, 2209 },
2062 { 2210 {
2063 "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", 2211 "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.",
2064 "end": { 2212 "end": {
2065 "column": 3, 2213 "column": 3,
2066 "line": 107 2214 "line": 107
@@ -2073,7 +2221,7 @@
2073 } 2221 }
2074 }, 2222 },
2075 { 2223 {
2076 "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", 2224 "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.",
2077 "end": { 2225 "end": {
2078 "column": 3, 2226 "column": 3,
2079 "line": 111 2227 "line": 111
@@ -2317,234 +2465,286 @@
2317 "defaultMessage": "!!!Settings", 2465 "defaultMessage": "!!!Settings",
2318 "end": { 2466 "end": {
2319 "column": 3, 2467 "column": 3,
2320 "line": 19 2468 "line": 20
2321 }, 2469 },
2322 "file": "src/components/settings/settings/EditSettingsForm.js", 2470 "file": "src/components/settings/settings/EditSettingsForm.js",
2323 "id": "settings.app.headline", 2471 "id": "settings.app.headline",
2324 "start": { 2472 "start": {
2325 "column": 12, 2473 "column": 12,
2326 "line": 16 2474 "line": 17
2327 } 2475 }
2328 }, 2476 },
2329 { 2477 {
2330 "defaultMessage": "!!!General", 2478 "defaultMessage": "!!!General",
2331 "end": { 2479 "end": {
2332 "column": 3, 2480 "column": 3,
2333 "line": 23 2481 "line": 24
2334 }, 2482 },
2335 "file": "src/components/settings/settings/EditSettingsForm.js", 2483 "file": "src/components/settings/settings/EditSettingsForm.js",
2336 "id": "settings.app.headlineGeneral", 2484 "id": "settings.app.headlineGeneral",
2337 "start": { 2485 "start": {
2338 "column": 19, 2486 "column": 19,
2339 "line": 20 2487 "line": 21
2488 }
2489 },
2490 {
2491 "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.",
2492 "end": {
2493 "column": 3,
2494 "line": 28
2495 },
2496 "file": "src/components/settings/settings/EditSettingsForm.js",
2497 "id": "settings.app.serverInfo",
2498 "start": {
2499 "column": 14,
2500 "line": 25
2501 }
2502 },
2503 {
2504 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)",
2505 "end": {
2506 "column": 3,
2507 "line": 32
2508 },
2509 "file": "src/components/settings/settings/EditSettingsForm.js",
2510 "id": "settings.app.todoServerInfo",
2511 "start": {
2512 "column": 18,
2513 "line": 29
2514 }
2515 },
2516 {
2517 "defaultMessage": "!!!Ferdi Lock Password",
2518 "end": {
2519 "column": 3,
2520 "line": 36
2521 },
2522 "file": "src/components/settings/settings/EditSettingsForm.js",
2523 "id": "settings.app.lockedPassword",
2524 "start": {
2525 "column": 18,
2526 "line": 33
2527 }
2528 },
2529 {
2530 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
2531 "end": {
2532 "column": 3,
2533 "line": 40
2534 },
2535 "file": "src/components/settings/settings/EditSettingsForm.js",
2536 "id": "settings.app.lockedPasswordInfo",
2537 "start": {
2538 "column": 22,
2539 "line": 37
2340 } 2540 }
2341 }, 2541 },
2342 { 2542 {
2343 "defaultMessage": "!!!Language", 2543 "defaultMessage": "!!!Language",
2344 "end": { 2544 "end": {
2345 "column": 3, 2545 "column": 3,
2346 "line": 27 2546 "line": 44
2347 }, 2547 },
2348 "file": "src/components/settings/settings/EditSettingsForm.js", 2548 "file": "src/components/settings/settings/EditSettingsForm.js",
2349 "id": "settings.app.headlineLanguage", 2549 "id": "settings.app.headlineLanguage",
2350 "start": { 2550 "start": {
2351 "column": 20, 2551 "column": 20,
2352 "line": 24 2552 "line": 41
2353 } 2553 }
2354 }, 2554 },
2355 { 2555 {
2356 "defaultMessage": "!!!Updates", 2556 "defaultMessage": "!!!Updates",
2357 "end": { 2557 "end": {
2358 "column": 3, 2558 "column": 3,
2359 "line": 31 2559 "line": 48
2360 }, 2560 },
2361 "file": "src/components/settings/settings/EditSettingsForm.js", 2561 "file": "src/components/settings/settings/EditSettingsForm.js",
2362 "id": "settings.app.headlineUpdates", 2562 "id": "settings.app.headlineUpdates",
2363 "start": { 2563 "start": {
2364 "column": 19, 2564 "column": 19,
2365 "line": 28 2565 "line": 45
2366 } 2566 }
2367 }, 2567 },
2368 { 2568 {
2369 "defaultMessage": "!!!Appearance", 2569 "defaultMessage": "!!!Appearance",
2370 "end": { 2570 "end": {
2371 "column": 3, 2571 "column": 3,
2372 "line": 35 2572 "line": 52
2373 }, 2573 },
2374 "file": "src/components/settings/settings/EditSettingsForm.js", 2574 "file": "src/components/settings/settings/EditSettingsForm.js",
2375 "id": "settings.app.headlineAppearance", 2575 "id": "settings.app.headlineAppearance",
2376 "start": { 2576 "start": {
2377 "column": 22, 2577 "column": 22,
2378 "line": 32 2578 "line": 49
2379 } 2579 }
2380 }, 2580 },
2381 { 2581 {
2382 "defaultMessage": "!!!Advanced", 2582 "defaultMessage": "!!!Advanced",
2383 "end": { 2583 "end": {
2384 "column": 3, 2584 "column": 3,
2385 "line": 39 2585 "line": 56
2386 }, 2586 },
2387 "file": "src/components/settings/settings/EditSettingsForm.js", 2587 "file": "src/components/settings/settings/EditSettingsForm.js",
2388 "id": "settings.app.headlineAdvanced", 2588 "id": "settings.app.headlineAdvanced",
2389 "start": { 2589 "start": {
2390 "column": 20, 2590 "column": 20,
2391 "line": 36 2591 "line": 53
2392 } 2592 }
2393 }, 2593 },
2394 { 2594 {
2395 "defaultMessage": "!!!Help us to translate Franz into your language.", 2595 "defaultMessage": "!!!Help us to translate Ferdi into your language.",
2396 "end": { 2596 "end": {
2397 "column": 3, 2597 "column": 3,
2398 "line": 43 2598 "line": 60
2399 }, 2599 },
2400 "file": "src/components/settings/settings/EditSettingsForm.js", 2600 "file": "src/components/settings/settings/EditSettingsForm.js",
2401 "id": "settings.app.translationHelp", 2601 "id": "settings.app.translationHelp",
2402 "start": { 2602 "start": {
2403 "column": 19, 2603 "column": 19,
2404 "line": 40 2604 "line": 57
2405 } 2605 }
2406 }, 2606 },
2407 { 2607 {
2408 "defaultMessage": "!!!Cache", 2608 "defaultMessage": "!!!Cache",
2409 "end": { 2609 "end": {
2410 "column": 3, 2610 "column": 3,
2411 "line": 47 2611 "line": 64
2412 }, 2612 },
2413 "file": "src/components/settings/settings/EditSettingsForm.js", 2613 "file": "src/components/settings/settings/EditSettingsForm.js",
2414 "id": "settings.app.subheadlineCache", 2614 "id": "settings.app.subheadlineCache",
2415 "start": { 2615 "start": {
2416 "column": 20, 2616 "column": 20,
2417 "line": 44 2617 "line": 61
2418 } 2618 }
2419 }, 2619 },
2420 { 2620 {
2421 "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", 2621 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.",
2422 "end": { 2622 "end": {
2423 "column": 3, 2623 "column": 3,
2424 "line": 51 2624 "line": 68
2425 }, 2625 },
2426 "file": "src/components/settings/settings/EditSettingsForm.js", 2626 "file": "src/components/settings/settings/EditSettingsForm.js",
2427 "id": "settings.app.cacheInfo", 2627 "id": "settings.app.cacheInfo",
2428 "start": { 2628 "start": {
2429 "column": 13, 2629 "column": 13,
2430 "line": 48 2630 "line": 65
2431 } 2631 }
2432 }, 2632 },
2433 { 2633 {
2434 "defaultMessage": "!!!Clear cache", 2634 "defaultMessage": "!!!Clear cache",
2435 "end": { 2635 "end": {
2436 "column": 3, 2636 "column": 3,
2437 "line": 55 2637 "line": 72
2438 }, 2638 },
2439 "file": "src/components/settings/settings/EditSettingsForm.js", 2639 "file": "src/components/settings/settings/EditSettingsForm.js",
2440 "id": "settings.app.buttonClearAllCache", 2640 "id": "settings.app.buttonClearAllCache",
2441 "start": { 2641 "start": {
2442 "column": 23, 2642 "column": 23,
2443 "line": 52 2643 "line": 69
2444 } 2644 }
2445 }, 2645 },
2446 { 2646 {
2447 "defaultMessage": "!!!Check for updates", 2647 "defaultMessage": "!!!Check for updates",
2448 "end": { 2648 "end": {
2449 "column": 3, 2649 "column": 3,
2450 "line": 59 2650 "line": 76
2451 }, 2651 },
2452 "file": "src/components/settings/settings/EditSettingsForm.js", 2652 "file": "src/components/settings/settings/EditSettingsForm.js",
2453 "id": "settings.app.buttonSearchForUpdate", 2653 "id": "settings.app.buttonSearchForUpdate",
2454 "start": { 2654 "start": {
2455 "column": 25, 2655 "column": 25,
2456 "line": 56 2656 "line": 73
2457 } 2657 }
2458 }, 2658 },
2459 { 2659 {
2460 "defaultMessage": "!!!Restart & install update", 2660 "defaultMessage": "!!!Restart & install update",
2461 "end": { 2661 "end": {
2462 "column": 3, 2662 "column": 3,
2463 "line": 63 2663 "line": 80
2464 }, 2664 },
2465 "file": "src/components/settings/settings/EditSettingsForm.js", 2665 "file": "src/components/settings/settings/EditSettingsForm.js",
2466 "id": "settings.app.buttonInstallUpdate", 2666 "id": "settings.app.buttonInstallUpdate",
2467 "start": { 2667 "start": {
2468 "column": 23, 2668 "column": 23,
2469 "line": 60 2669 "line": 77
2470 } 2670 }
2471 }, 2671 },
2472 { 2672 {
2473 "defaultMessage": "!!!Is searching for update", 2673 "defaultMessage": "!!!Is searching for update",
2474 "end": { 2674 "end": {
2475 "column": 3, 2675 "column": 3,
2476 "line": 67 2676 "line": 84
2477 }, 2677 },
2478 "file": "src/components/settings/settings/EditSettingsForm.js", 2678 "file": "src/components/settings/settings/EditSettingsForm.js",
2479 "id": "settings.app.updateStatusSearching", 2679 "id": "settings.app.updateStatusSearching",
2480 "start": { 2680 "start": {
2481 "column": 25, 2681 "column": 25,
2482 "line": 64 2682 "line": 81
2483 } 2683 }
2484 }, 2684 },
2485 { 2685 {
2486 "defaultMessage": "!!!Update available, downloading...", 2686 "defaultMessage": "!!!Update available, downloading...",
2487 "end": { 2687 "end": {
2488 "column": 3, 2688 "column": 3,
2489 "line": 71 2689 "line": 88
2490 }, 2690 },
2491 "file": "src/components/settings/settings/EditSettingsForm.js", 2691 "file": "src/components/settings/settings/EditSettingsForm.js",
2492 "id": "settings.app.updateStatusAvailable", 2692 "id": "settings.app.updateStatusAvailable",
2493 "start": { 2693 "start": {
2494 "column": 25, 2694 "column": 25,
2495 "line": 68 2695 "line": 85
2496 } 2696 }
2497 }, 2697 },
2498 { 2698 {
2499 "defaultMessage": "!!!You are using the latest version of Franz", 2699 "defaultMessage": "!!!You are using the latest version of Ferdi",
2500 "end": { 2700 "end": {
2501 "column": 3, 2701 "column": 3,
2502 "line": 75 2702 "line": 92
2503 }, 2703 },
2504 "file": "src/components/settings/settings/EditSettingsForm.js", 2704 "file": "src/components/settings/settings/EditSettingsForm.js",
2505 "id": "settings.app.updateStatusUpToDate", 2705 "id": "settings.app.updateStatusUpToDate",
2506 "start": { 2706 "start": {
2507 "column": 24, 2707 "column": 24,
2508 "line": 72 2708 "line": 89
2509 } 2709 }
2510 }, 2710 },
2511 { 2711 {
2512 "defaultMessage": "!!!Current version:", 2712 "defaultMessage": "!!!Current version:",
2513 "end": { 2713 "end": {
2514 "column": 3, 2714 "column": 3,
2515 "line": 79 2715 "line": 96
2516 }, 2716 },
2517 "file": "src/components/settings/settings/EditSettingsForm.js", 2717 "file": "src/components/settings/settings/EditSettingsForm.js",
2518 "id": "settings.app.currentVersion", 2718 "id": "settings.app.currentVersion",
2519 "start": { 2719 "start": {
2520 "column": 18, 2720 "column": 18,
2521 "line": 76 2721 "line": 93
2522 } 2722 }
2523 }, 2723 },
2524 { 2724 {
2525 "defaultMessage": "!!!Changes require restart", 2725 "defaultMessage": "!!!Changes require restart",
2526 "end": { 2726 "end": {
2527 "column": 3, 2727 "column": 3,
2528 "line": 83 2728 "line": 100
2529 }, 2729 },
2530 "file": "src/components/settings/settings/EditSettingsForm.js", 2730 "file": "src/components/settings/settings/EditSettingsForm.js",
2531 "id": "settings.app.restartRequired", 2731 "id": "settings.app.restartRequired",
2532 "start": { 2732 "start": {
2533 "column": 29, 2733 "column": 29,
2534 "line": 80 2734 "line": 97
2535 } 2735 }
2536 }, 2736 },
2537 { 2737 {
2538 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", 2738 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
2539 "end": { 2739 "end": {
2540 "column": 3, 2740 "column": 3,
2541 "line": 87 2741 "line": 104
2542 }, 2742 },
2543 "file": "src/components/settings/settings/EditSettingsForm.js", 2743 "file": "src/components/settings/settings/EditSettingsForm.js",
2544 "id": "settings.app.languageDisclaimer", 2744 "id": "settings.app.languageDisclaimer",
2545 "start": { 2745 "start": {
2546 "column": 22, 2746 "column": 22,
2547 "line": 84 2747 "line": 101
2548 } 2748 }
2549 } 2749 }
2550 ], 2750 ],
@@ -2566,7 +2766,7 @@
2566 } 2766 }
2567 }, 2767 },
2568 { 2768 {
2569 "defaultMessage": "!!!Franz for Teams", 2769 "defaultMessage": "!!!Ferdi for Teams",
2570 "end": { 2770 "end": {
2571 "column": 3, 2771 "column": 3,
2572 "line": 24 2772 "line": 24
@@ -2592,7 +2792,7 @@
2592 } 2792 }
2593 }, 2793 },
2594 { 2794 {
2595 "defaultMessage": "!!!Franz 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!", 2795 "defaultMessage": "!!!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!",
2596 "end": { 2796 "end": {
2597 "column": 3, 2797 "column": 3,
2598 "line": 32 2798 "line": 32
@@ -2924,91 +3124,91 @@
2924 "defaultMessage": "!!!Get a Franz Supporter License", 3124 "defaultMessage": "!!!Get a Franz Supporter License",
2925 "end": { 3125 "end": {
2926 "column": 3, 3126 "column": 3,
2927 "line": 16 3127 "line": 15
2928 }, 3128 },
2929 "file": "src/components/ui/ActivateTrialButton/index.js", 3129 "file": "src/components/ui/ActivateTrialButton/index.js",
2930 "id": "feature.delayApp.upgrade.action", 3130 "id": "feature.delayApp.upgrade.action",
2931 "start": { 3131 "start": {
2932 "column": 10, 3132 "column": 10,
2933 "line": 13 3133 "line": 12
2934 } 3134 }
2935 }, 3135 },
2936 { 3136 {
2937 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", 3137 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional",
2938 "end": { 3138 "end": {
2939 "column": 3, 3139 "column": 3,
2940 "line": 20 3140 "line": 19
2941 }, 3141 },
2942 "file": "src/components/ui/ActivateTrialButton/index.js", 3142 "file": "src/components/ui/ActivateTrialButton/index.js",
2943 "id": "feature.delayApp.trial.action", 3143 "id": "feature.delayApp.trial.action",
2944 "start": { 3144 "start": {
2945 "column": 15, 3145 "column": 15,
2946 "line": 17 3146 "line": 16
2947 } 3147 }
2948 }, 3148 },
2949 { 3149 {
2950 "defaultMessage": "!!!Upgrade account", 3150 "defaultMessage": "!!!Upgrade account",
2951 "end": { 3151 "end": {
2952 "column": 3, 3152 "column": 3,
2953 "line": 24 3153 "line": 23
2954 }, 3154 },
2955 "file": "src/components/ui/ActivateTrialButton/index.js", 3155 "file": "src/components/ui/ActivateTrialButton/index.js",
2956 "id": "feature.delayApp.upgrade.actionShort", 3156 "id": "feature.delayApp.upgrade.actionShort",
2957 "start": { 3157 "start": {
2958 "column": 15, 3158 "column": 15,
2959 "line": 21 3159 "line": 20
2960 } 3160 }
2961 }, 3161 },
2962 { 3162 {
2963 "defaultMessage": "!!!Activate the free Franz Professional trial", 3163 "defaultMessage": "!!!Activate the free Franz Professional trial",
2964 "end": { 3164 "end": {
2965 "column": 3, 3165 "column": 3,
2966 "line": 28 3166 "line": 27
2967 }, 3167 },
2968 "file": "src/components/ui/ActivateTrialButton/index.js", 3168 "file": "src/components/ui/ActivateTrialButton/index.js",
2969 "id": "feature.delayApp.trial.actionShort", 3169 "id": "feature.delayApp.trial.actionShort",
2970 "start": { 3170 "start": {
2971 "column": 20, 3171 "column": 20,
2972 "line": 25 3172 "line": 24
2973 } 3173 }
2974 }, 3174 },
2975 { 3175 {
2976 "defaultMessage": "!!!No strings attached", 3176 "defaultMessage": "!!!No strings attached",
2977 "end": { 3177 "end": {
2978 "column": 3, 3178 "column": 3,
2979 "line": 32 3179 "line": 31
2980 }, 3180 },
2981 "file": "src/components/ui/ActivateTrialButton/index.js", 3181 "file": "src/components/ui/ActivateTrialButton/index.js",
2982 "id": "pricing.trial.terms.headline", 3182 "id": "pricing.trial.terms.headline",
2983 "start": { 3183 "start": {
2984 "column": 29, 3184 "column": 29,
2985 "line": 29 3185 "line": 28
2986 } 3186 }
2987 }, 3187 },
2988 { 3188 {
2989 "defaultMessage": "!!!No credit card required", 3189 "defaultMessage": "!!!No credit card required",
2990 "end": { 3190 "end": {
2991 "column": 3, 3191 "column": 3,
2992 "line": 36 3192 "line": 35
2993 }, 3193 },
2994 "file": "src/components/ui/ActivateTrialButton/index.js", 3194 "file": "src/components/ui/ActivateTrialButton/index.js",
2995 "id": "pricing.trial.terms.noCreditCard", 3195 "id": "pricing.trial.terms.noCreditCard",
2996 "start": { 3196 "start": {
2997 "column": 16, 3197 "column": 16,
2998 "line": 33 3198 "line": 32
2999 } 3199 }
3000 }, 3200 },
3001 { 3201 {
3002 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 3202 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
3003 "end": { 3203 "end": {
3004 "column": 3, 3204 "column": 3,
3005 "line": 40 3205 "line": 39
3006 }, 3206 },
3007 "file": "src/components/ui/ActivateTrialButton/index.js", 3207 "file": "src/components/ui/ActivateTrialButton/index.js",
3008 "id": "pricing.trial.terms.automaticTrialEnd", 3208 "id": "pricing.trial.terms.automaticTrialEnd",
3009 "start": { 3209 "start": {
3010 "column": 21, 3210 "column": 21,
3011 "line": 37 3211 "line": 36
3012 } 3212 }
3013 } 3213 }
3014 ], 3214 ],
@@ -3155,13 +3355,13 @@
3155 "defaultMessage": "!!!Upgrade account", 3355 "defaultMessage": "!!!Upgrade account",
3156 "end": { 3356 "end": {
3157 "column": 3, 3357 "column": 3,
3158 "line": 19 3358 "line": 18
3159 }, 3359 },
3160 "file": "src/components/ui/PremiumFeatureContainer/index.js", 3360 "file": "src/components/ui/PremiumFeatureContainer/index.js",
3161 "id": "premiumFeature.button.upgradeAccount", 3361 "id": "premiumFeature.button.upgradeAccount",
3162 "start": { 3362 "start": {
3163 "column": 10, 3363 "column": 10,
3164 "line": 16 3364 "line": 15
3165 } 3365 }
3166 } 3366 }
3167 ], 3367 ],
@@ -3173,13 +3373,13 @@
3173 "defaultMessage": "!!!Upgrade to Franz Professional", 3373 "defaultMessage": "!!!Upgrade to Franz Professional",
3174 "end": { 3374 "end": {
3175 "column": 3, 3375 "column": 3,
3176 "line": 16 3376 "line": 15
3177 }, 3377 },
3178 "file": "src/components/ui/UpgradeButton/index.js", 3378 "file": "src/components/ui/UpgradeButton/index.js",
3179 "id": "global.upgradeButton.upgradeToPro", 3379 "id": "global.upgradeButton.upgradeToPro",
3180 "start": { 3380 "start": {
3181 "column": 16, 3381 "column": 16,
3182 "line": 13 3382 "line": 12
3183 } 3383 }
3184 } 3384 }
3185 ], 3385 ],
@@ -3437,185 +3637,250 @@
3437 { 3637 {
3438 "descriptors": [ 3638 "descriptors": [
3439 { 3639 {
3440 "defaultMessage": "!!!Launch Franz on start", 3640 "defaultMessage": "!!!Launch Ferdi on start",
3441 "end": { 3641 "end": {
3442 "column": 3, 3642 "column": 3,
3443 "line": 29 3643 "line": 31
3444 }, 3644 },
3445 "file": "src/containers/settings/EditSettingsScreen.js", 3645 "file": "src/containers/settings/EditSettingsScreen.js",
3446 "id": "settings.app.form.autoLaunchOnStart", 3646 "id": "settings.app.form.autoLaunchOnStart",
3447 "start": { 3647 "start": {
3448 "column": 21, 3648 "column": 21,
3449 "line": 26 3649 "line": 28
3450 } 3650 }
3451 }, 3651 },
3452 { 3652 {
3453 "defaultMessage": "!!!Open in background", 3653 "defaultMessage": "!!!Open in background",
3454 "end": { 3654 "end": {
3455 "column": 3, 3655 "column": 3,
3456 "line": 33 3656 "line": 35
3457 }, 3657 },
3458 "file": "src/containers/settings/EditSettingsScreen.js", 3658 "file": "src/containers/settings/EditSettingsScreen.js",
3459 "id": "settings.app.form.autoLaunchInBackground", 3659 "id": "settings.app.form.autoLaunchInBackground",
3460 "start": { 3660 "start": {
3461 "column": 26, 3661 "column": 26,
3462 "line": 30 3662 "line": 32
3463 } 3663 }
3464 }, 3664 },
3465 { 3665 {
3466 "defaultMessage": "!!!Keep Franz in background when closing the window", 3666 "defaultMessage": "!!!Keep Ferdi in background when closing the window",
3467 "end": { 3667 "end": {
3468 "column": 3, 3668 "column": 3,
3469 "line": 37 3669 "line": 39
3470 }, 3670 },
3471 "file": "src/containers/settings/EditSettingsScreen.js", 3671 "file": "src/containers/settings/EditSettingsScreen.js",
3472 "id": "settings.app.form.runInBackground", 3672 "id": "settings.app.form.runInBackground",
3473 "start": { 3673 "start": {
3474 "column": 19, 3674 "column": 19,
3475 "line": 34 3675 "line": 36
3476 } 3676 }
3477 }, 3677 },
3478 { 3678 {
3479 "defaultMessage": "!!!Show Franz in system tray", 3679 "defaultMessage": "!!!Show Ferdi in system tray",
3480 "end": { 3680 "end": {
3481 "column": 3, 3681 "column": 3,
3482 "line": 41 3682 "line": 43
3483 }, 3683 },
3484 "file": "src/containers/settings/EditSettingsScreen.js", 3684 "file": "src/containers/settings/EditSettingsScreen.js",
3485 "id": "settings.app.form.enableSystemTray", 3685 "id": "settings.app.form.enableSystemTray",
3486 "start": { 3686 "start": {
3487 "column": 20, 3687 "column": 20,
3488 "line": 38 3688 "line": 40
3489 } 3689 }
3490 }, 3690 },
3491 { 3691 {
3492 "defaultMessage": "!!!Minimize Franz to system tray", 3692 "defaultMessage": "!!!Minimize Ferdi to system tray",
3493 "end": { 3693 "end": {
3494 "column": 3, 3694 "column": 3,
3495 "line": 45 3695 "line": 47
3496 }, 3696 },
3497 "file": "src/containers/settings/EditSettingsScreen.js", 3697 "file": "src/containers/settings/EditSettingsScreen.js",
3498 "id": "settings.app.form.minimizeToSystemTray", 3698 "id": "settings.app.form.minimizeToSystemTray",
3499 "start": { 3699 "start": {
3500 "column": 24, 3700 "column": 24,
3501 "line": 42 3701 "line": 44
3702 }
3703 },
3704 {
3705 "defaultMessage": "!!!Don't show message content in notifications",
3706 "end": {
3707 "column": 3,
3708 "line": 51
3709 },
3710 "file": "src/containers/settings/EditSettingsScreen.js",
3711 "id": "settings.app.form.privateNotifications",
3712 "start": {
3713 "column": 24,
3714 "line": 48
3715 }
3716 },
3717 {
3718 "defaultMessage": "!!!Server",
3719 "end": {
3720 "column": 3,
3721 "line": 55
3722 },
3723 "file": "src/containers/settings/EditSettingsScreen.js",
3724 "id": "settings.app.form.server",
3725 "start": {
3726 "column": 10,
3727 "line": 52
3728 }
3729 },
3730 {
3731 "defaultMessage": "!!!Todo Server",
3732 "end": {
3733 "column": 3,
3734 "line": 59
3735 },
3736 "file": "src/containers/settings/EditSettingsScreen.js",
3737 "id": "settings.app.form.todoServer",
3738 "start": {
3739 "column": 14,
3740 "line": 56
3741 }
3742 },
3743 {
3744 "defaultMessage": "!!!Enable Ferdi password lock",
3745 "end": {
3746 "column": 3,
3747 "line": 63
3748 },
3749 "file": "src/containers/settings/EditSettingsScreen.js",
3750 "id": "settings.app.form.enableLock",
3751 "start": {
3752 "column": 14,
3753 "line": 60
3754 }
3755 },
3756 {
3757 "defaultMessage": "!!!Ferdi Lock password",
3758 "end": {
3759 "column": 3,
3760 "line": 67
3761 },
3762 "file": "src/containers/settings/EditSettingsScreen.js",
3763 "id": "settings.app.form.lockPassword",
3764 "start": {
3765 "column": 16,
3766 "line": 64
3502 } 3767 }
3503 }, 3768 },
3504 { 3769 {
3505 "defaultMessage": "!!!Language", 3770 "defaultMessage": "!!!Language",
3506 "end": { 3771 "end": {
3507 "column": 3, 3772 "column": 3,
3508 "line": 49 3773 "line": 71
3509 }, 3774 },
3510 "file": "src/containers/settings/EditSettingsScreen.js", 3775 "file": "src/containers/settings/EditSettingsScreen.js",
3511 "id": "settings.app.form.language", 3776 "id": "settings.app.form.language",
3512 "start": { 3777 "start": {
3513 "column": 12, 3778 "column": 12,
3514 "line": 46 3779 "line": 68
3515 } 3780 }
3516 }, 3781 },
3517 { 3782 {
3518 "defaultMessage": "!!!Dark Mode", 3783 "defaultMessage": "!!!Dark Mode",
3519 "end": { 3784 "end": {
3520 "column": 3, 3785 "column": 3,
3521 "line": 53 3786 "line": 75
3522 }, 3787 },
3523 "file": "src/containers/settings/EditSettingsScreen.js", 3788 "file": "src/containers/settings/EditSettingsScreen.js",
3524 "id": "settings.app.form.darkMode", 3789 "id": "settings.app.form.darkMode",
3525 "start": { 3790 "start": {
3526 "column": 12, 3791 "column": 12,
3527 "line": 50 3792 "line": 72
3528 } 3793 }
3529 }, 3794 },
3530 { 3795 {
3531 "defaultMessage": "!!!Display disabled services tabs", 3796 "defaultMessage": "!!!Display disabled services tabs",
3532 "end": { 3797 "end": {
3533 "column": 3, 3798 "column": 3,
3534 "line": 57 3799 "line": 79
3535 }, 3800 },
3536 "file": "src/containers/settings/EditSettingsScreen.js", 3801 "file": "src/containers/settings/EditSettingsScreen.js",
3537 "id": "settings.app.form.showDisabledServices", 3802 "id": "settings.app.form.showDisabledServices",
3538 "start": { 3803 "start": {
3539 "column": 24, 3804 "column": 24,
3540 "line": 54 3805 "line": 76
3541 } 3806 }
3542 }, 3807 },
3543 { 3808 {
3544 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 3809 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
3545 "end": { 3810 "end": {
3546 "column": 3, 3811 "column": 3,
3547 "line": 61 3812 "line": 83
3548 }, 3813 },
3549 "file": "src/containers/settings/EditSettingsScreen.js", 3814 "file": "src/containers/settings/EditSettingsScreen.js",
3550 "id": "settings.app.form.showMessagesBadgesWhenMuted", 3815 "id": "settings.app.form.showMessagesBadgesWhenMuted",
3551 "start": { 3816 "start": {
3552 "column": 29, 3817 "column": 29,
3553 "line": 58 3818 "line": 80
3554 } 3819 }
3555 }, 3820 },
3556 { 3821 {
3557 "defaultMessage": "!!!Enable spell checking", 3822 "defaultMessage": "!!!Enable spell checking",
3558 "end": { 3823 "end": {
3559 "column": 3, 3824 "column": 3,
3560 "line": 65 3825 "line": 87
3561 }, 3826 },
3562 "file": "src/containers/settings/EditSettingsScreen.js", 3827 "file": "src/containers/settings/EditSettingsScreen.js",
3563 "id": "settings.app.form.enableSpellchecking", 3828 "id": "settings.app.form.enableSpellchecking",
3564 "start": { 3829 "start": {
3565 "column": 23, 3830 "column": 23,
3566 "line": 62 3831 "line": 84
3567 } 3832 }
3568 }, 3833 },
3569 { 3834 {
3570 "defaultMessage": "!!!Enable GPU Acceleration", 3835 "defaultMessage": "!!!Enable GPU Acceleration",
3571 "end": { 3836 "end": {
3572 "column": 3, 3837 "column": 3,
3573 "line": 69 3838 "line": 91
3574 }, 3839 },
3575 "file": "src/containers/settings/EditSettingsScreen.js", 3840 "file": "src/containers/settings/EditSettingsScreen.js",
3576 "id": "settings.app.form.enableGPUAcceleration", 3841 "id": "settings.app.form.enableGPUAcceleration",
3577 "start": { 3842 "start": {
3578 "column": 25, 3843 "column": 25,
3579 "line": 66 3844 "line": 88
3580 } 3845 }
3581 }, 3846 },
3582 { 3847 {
3583 "defaultMessage": "!!!Include beta versions", 3848 "defaultMessage": "!!!Include beta versions",
3584 "end": { 3849 "end": {
3585 "column": 3, 3850 "column": 3,
3586 "line": 73 3851 "line": 95
3587 }, 3852 },
3588 "file": "src/containers/settings/EditSettingsScreen.js", 3853 "file": "src/containers/settings/EditSettingsScreen.js",
3589 "id": "settings.app.form.beta", 3854 "id": "settings.app.form.beta",
3590 "start": { 3855 "start": {
3591 "column": 8, 3856 "column": 8,
3592 "line": 70 3857 "line": 92
3593 } 3858 }
3594 }, 3859 },
3595 { 3860 {
3596 "defaultMessage": "!!!Enable Franz Todos", 3861 "defaultMessage": "!!!Enable Franz Todos",
3597 "end": { 3862 "end": {
3598 "column": 3, 3863 "column": 3,
3599 "line": 77 3864 "line": 99
3600 }, 3865 },
3601 "file": "src/containers/settings/EditSettingsScreen.js", 3866 "file": "src/containers/settings/EditSettingsScreen.js",
3602 "id": "settings.app.form.enableTodos", 3867 "id": "settings.app.form.enableTodos",
3603 "start": { 3868 "start": {
3604 "column": 15, 3869 "column": 15,
3605 "line": 74 3870 "line": 96
3606 } 3871 }
3607 }, 3872 },
3608 { 3873 {
3609 "defaultMessage": "!!!Keep all workspaces loaded", 3874 "defaultMessage": "!!!Keep all workspaces loaded",
3610 "end": { 3875 "end": {
3611 "column": 3, 3876 "column": 3,
3612 "line": 81 3877 "line": 103
3613 }, 3878 },
3614 "file": "src/containers/settings/EditSettingsScreen.js", 3879 "file": "src/containers/settings/EditSettingsScreen.js",
3615 "id": "settings.app.form.keepAllWorkspacesLoaded", 3880 "id": "settings.app.form.keepAllWorkspacesLoaded",
3616 "start": { 3881 "start": {
3617 "column": 27, 3882 "column": 27,
3618 "line": 78 3883 "line": 100
3619 } 3884 }
3620 } 3885 }
3621 ], 3886 ],
@@ -3746,16 +4011,16 @@
3746 { 4011 {
3747 "descriptors": [ 4012 "descriptors": [
3748 { 4013 {
3749 "defaultMessage": "!!!Changes in Franz {version}", 4014 "defaultMessage": "!!!Changes in Ferdi {version}",
3750 "end": { 4015 "end": {
3751 "column": 3, 4016 "column": 3,
3752 "line": 23 4017 "line": 22
3753 }, 4018 },
3754 "file": "src/features/announcements/components/AnnouncementScreen.js", 4019 "file": "src/features/announcements/components/AnnouncementScreen.js",
3755 "id": "feature.announcements.changelog.headline", 4020 "id": "feature.announcements.changelog.headline",
3756 "start": { 4021 "start": {
3757 "column": 12, 4022 "column": 12,
3758 "line": 20 4023 "line": 19
3759 } 4024 }
3760 } 4025 }
3761 ], 4026 ],
@@ -3767,65 +4032,65 @@
3767 "defaultMessage": "!!!Please purchase license to skip waiting", 4032 "defaultMessage": "!!!Please purchase license to skip waiting",
3768 "end": { 4033 "end": {
3769 "column": 3, 4034 "column": 3,
3770 "line": 20 4035 "line": 17
3771 }, 4036 },
3772 "file": "src/features/delayApp/Component.js", 4037 "file": "src/features/delayApp/Component.js",
3773 "id": "feature.delayApp.headline", 4038 "id": "feature.delayApp.headline",
3774 "start": { 4039 "start": {
3775 "column": 12, 4040 "column": 12,
3776 "line": 17 4041 "line": 14
3777 } 4042 }
3778 }, 4043 },
3779 { 4044 {
3780 "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line", 4045 "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line",
3781 "end": { 4046 "end": {
3782 "column": 3, 4047 "column": 3,
3783 "line": 24 4048 "line": 21
3784 }, 4049 },
3785 "file": "src/features/delayApp/Component.js", 4050 "file": "src/features/delayApp/Component.js",
3786 "id": "feature.delayApp.trial.headline", 4051 "id": "feature.delayApp.trial.headline",
3787 "start": { 4052 "start": {
3788 "column": 17, 4053 "column": 17,
3789 "line": 21 4054 "line": 18
3790 } 4055 }
3791 }, 4056 },
3792 { 4057 {
3793 "defaultMessage": "!!!Get a Franz Supporter License", 4058 "defaultMessage": "!!!Get a Franz Supporter License",
3794 "end": { 4059 "end": {
3795 "column": 3, 4060 "column": 3,
3796 "line": 28 4061 "line": 25
3797 }, 4062 },
3798 "file": "src/features/delayApp/Component.js", 4063 "file": "src/features/delayApp/Component.js",
3799 "id": "feature.delayApp.upgrade.action", 4064 "id": "feature.delayApp.upgrade.action",
3800 "start": { 4065 "start": {
3801 "column": 10, 4066 "column": 10,
3802 "line": 25 4067 "line": 22
3803 } 4068 }
3804 }, 4069 },
3805 { 4070 {
3806 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", 4071 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional",
3807 "end": { 4072 "end": {
3808 "column": 3, 4073 "column": 3,
3809 "line": 32 4074 "line": 29
3810 }, 4075 },
3811 "file": "src/features/delayApp/Component.js", 4076 "file": "src/features/delayApp/Component.js",
3812 "id": "feature.delayApp.trial.action", 4077 "id": "feature.delayApp.trial.action",
3813 "start": { 4078 "start": {
3814 "column": 15, 4079 "column": 15,
3815 "line": 29 4080 "line": 26
3816 } 4081 }
3817 }, 4082 },
3818 { 4083 {
3819 "defaultMessage": "!!!Franz will continue in {seconds} seconds.", 4084 "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.",
3820 "end": { 4085 "end": {
3821 "column": 3, 4086 "column": 3,
3822 "line": 36 4087 "line": 33
3823 }, 4088 },
3824 "file": "src/features/delayApp/Component.js", 4089 "file": "src/features/delayApp/Component.js",
3825 "id": "feature.delayApp.text", 4090 "id": "feature.delayApp.text",
3826 "start": { 4091 "start": {
3827 "column": 8, 4092 "column": 8,
3828 "line": 33 4093 "line": 30
3829 } 4094 }
3830 } 4095 }
3831 ], 4096 ],
@@ -3855,26 +4120,26 @@
3855 "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", 4120 "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.",
3856 "end": { 4121 "end": {
3857 "column": 3, 4122 "column": 3,
3858 "line": 14 4123 "line": 12
3859 }, 4124 },
3860 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", 4125 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js",
3861 "id": "feature.serviceLimit.limitReached", 4126 "id": "feature.serviceLimit.limitReached",
3862 "start": { 4127 "start": {
3863 "column": 16, 4128 "column": 16,
3864 "line": 11 4129 "line": 9
3865 } 4130 }
3866 }, 4131 },
3867 { 4132 {
3868 "defaultMessage": "!!!Upgrade account", 4133 "defaultMessage": "!!!Upgrade account",
3869 "end": { 4134 "end": {
3870 "column": 3, 4135 "column": 3,
3871 "line": 18 4136 "line": 16
3872 }, 4137 },
3873 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", 4138 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js",
3874 "id": "premiumFeature.button.upgradeAccount", 4139 "id": "premiumFeature.button.upgradeAccount",
3875 "start": { 4140 "start": {
3876 "column": 10, 4141 "column": 10,
3877 "line": 15 4142 "line": 13
3878 } 4143 }
3879 } 4144 }
3880 ], 4145 ],
@@ -3883,94 +4148,94 @@
3883 { 4148 {
3884 "descriptors": [ 4149 "descriptors": [
3885 { 4150 {
3886 "defaultMessage": "!!!Franz is better together!", 4151 "defaultMessage": "!!!Ferdi is better together!",
3887 "end": { 4152 "end": {
3888 "column": 3, 4153 "column": 3,
3889 "line": 21 4154 "line": 20
3890 }, 4155 },
3891 "file": "src/features/shareFranz/Component.js", 4156 "file": "src/features/shareFranz/Component.js",
3892 "id": "feature.shareFranz.headline", 4157 "id": "feature.shareFranz.headline",
3893 "start": { 4158 "start": {
3894 "column": 12, 4159 "column": 12,
3895 "line": 18 4160 "line": 17
3896 } 4161 }
3897 }, 4162 },
3898 { 4163 {
3899 "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 4164 "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
3900 "end": { 4165 "end": {
3901 "column": 3, 4166 "column": 3,
3902 "line": 25 4167 "line": 24
3903 }, 4168 },
3904 "file": "src/features/shareFranz/Component.js", 4169 "file": "src/features/shareFranz/Component.js",
3905 "id": "feature.shareFranz.text", 4170 "id": "feature.shareFranz.text",
3906 "start": { 4171 "start": {
3907 "column": 8, 4172 "column": 8,
3908 "line": 22 4173 "line": 21
3909 } 4174 }
3910 }, 4175 },
3911 { 4176 {
3912 "defaultMessage": "!!!Share as email", 4177 "defaultMessage": "!!!Share as email",
3913 "end": { 4178 "end": {
3914 "column": 3, 4179 "column": 3,
3915 "line": 29 4180 "line": 28
3916 }, 4181 },
3917 "file": "src/features/shareFranz/Component.js", 4182 "file": "src/features/shareFranz/Component.js",
3918 "id": "feature.shareFranz.action.email", 4183 "id": "feature.shareFranz.action.email",
3919 "start": { 4184 "start": {
3920 "column": 16, 4185 "column": 16,
3921 "line": 26 4186 "line": 25
3922 } 4187 }
3923 }, 4188 },
3924 { 4189 {
3925 "defaultMessage": "!!!Share on Facebook", 4190 "defaultMessage": "!!!Share on Facebook",
3926 "end": { 4191 "end": {
3927 "column": 3, 4192 "column": 3,
3928 "line": 33 4193 "line": 32
3929 }, 4194 },
3930 "file": "src/features/shareFranz/Component.js", 4195 "file": "src/features/shareFranz/Component.js",
3931 "id": "feature.shareFranz.action.facebook", 4196 "id": "feature.shareFranz.action.facebook",
3932 "start": { 4197 "start": {
3933 "column": 19, 4198 "column": 19,
3934 "line": 30 4199 "line": 29
3935 } 4200 }
3936 }, 4201 },
3937 { 4202 {
3938 "defaultMessage": "!!!Share on Twitter", 4203 "defaultMessage": "!!!Share on Twitter",
3939 "end": { 4204 "end": {
3940 "column": 3, 4205 "column": 3,
3941 "line": 37 4206 "line": 36
3942 }, 4207 },
3943 "file": "src/features/shareFranz/Component.js", 4208 "file": "src/features/shareFranz/Component.js",
3944 "id": "feature.shareFranz.action.twitter", 4209 "id": "feature.shareFranz.action.twitter",
3945 "start": { 4210 "start": {
3946 "column": 18, 4211 "column": 18,
3947 "line": 34 4212 "line": 33
3948 } 4213 }
3949 }, 4214 },
3950 { 4215 {
3951 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 4216 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
3952 "end": { 4217 "end": {
3953 "column": 3, 4218 "column": 3,
3954 "line": 41 4219 "line": 40
3955 }, 4220 },
3956 "file": "src/features/shareFranz/Component.js", 4221 "file": "src/features/shareFranz/Component.js",
3957 "id": "feature.shareFranz.shareText.email", 4222 "id": "feature.shareFranz.shareText.email",
3958 "start": { 4223 "start": {
3959 "column": 18, 4224 "column": 18,
3960 "line": 38 4225 "line": 37
3961 } 4226 }
3962 }, 4227 },
3963 { 4228 {
3964 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", 4229 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
3965 "end": { 4230 "end": {
3966 "column": 3, 4231 "column": 3,
3967 "line": 45 4232 "line": 44
3968 }, 4233 },
3969 "file": "src/features/shareFranz/Component.js", 4234 "file": "src/features/shareFranz/Component.js",
3970 "id": "feature.shareFranz.shareText.twitter", 4235 "id": "feature.shareFranz.shareText.twitter",
3971 "start": { 4236 "start": {
3972 "column": 20, 4237 "column": 20,
3973 "line": 42 4238 "line": 41
3974 } 4239 }
3975 } 4240 }
3976 ], 4241 ],
@@ -3982,39 +4247,39 @@
3982 "defaultMessage": "!!!Franz Todos are available to premium users now!", 4247 "defaultMessage": "!!!Franz Todos are available to premium users now!",
3983 "end": { 4248 "end": {
3984 "column": 3, 4249 "column": 3,
3985 "line": 18 4250 "line": 20
3986 }, 4251 },
3987 "file": "src/features/todos/components/TodosWebview.js", 4252 "file": "src/features/todos/components/TodosWebview.js",
3988 "id": "feature.todos.premium.info", 4253 "id": "feature.todos.premium.info",
3989 "start": { 4254 "start": {
3990 "column": 15, 4255 "column": 15,
3991 "line": 15 4256 "line": 17
3992 } 4257 }
3993 }, 4258 },
3994 { 4259 {
3995 "defaultMessage": "!!!Upgrade Account", 4260 "defaultMessage": "!!!Upgrade Account",
3996 "end": { 4261 "end": {
3997 "column": 3, 4262 "column": 3,
3998 "line": 22 4263 "line": 24
3999 }, 4264 },
4000 "file": "src/features/todos/components/TodosWebview.js", 4265 "file": "src/features/todos/components/TodosWebview.js",
4001 "id": "feature.todos.premium.upgrade", 4266 "id": "feature.todos.premium.upgrade",
4002 "start": { 4267 "start": {
4003 "column": 14, 4268 "column": 14,
4004 "line": 19 4269 "line": 21
4005 } 4270 }
4006 }, 4271 },
4007 { 4272 {
4008 "defaultMessage": "!!!Everyone else will have to wait a little longer.", 4273 "defaultMessage": "!!!Everyone else will have to wait a little longer.",
4009 "end": { 4274 "end": {
4010 "column": 3, 4275 "column": 3,
4011 "line": 26 4276 "line": 28
4012 }, 4277 },
4013 "file": "src/features/todos/components/TodosWebview.js", 4278 "file": "src/features/todos/components/TodosWebview.js",
4014 "id": "feature.todos.premium.rollout", 4279 "id": "feature.todos.premium.rollout",
4015 "start": { 4280 "start": {
4016 "column": 15, 4281 "column": 15,
4017 "line": 23 4282 "line": 25
4018 } 4283 }
4019 } 4284 }
4020 ], 4285 ],
@@ -4026,26 +4291,26 @@
4026 "defaultMessage": "!!!Create workspace", 4291 "defaultMessage": "!!!Create workspace",
4027 "end": { 4292 "end": {
4028 "column": 3, 4293 "column": 3,
4029 "line": 16 4294 "line": 15
4030 }, 4295 },
4031 "file": "src/features/workspaces/components/CreateWorkspaceForm.js", 4296 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
4032 "id": "settings.workspace.add.form.submitButton", 4297 "id": "settings.workspace.add.form.submitButton",
4033 "start": { 4298 "start": {
4034 "column": 16, 4299 "column": 16,
4035 "line": 13 4300 "line": 12
4036 } 4301 }
4037 }, 4302 },
4038 { 4303 {
4039 "defaultMessage": "!!!Name", 4304 "defaultMessage": "!!!Name",
4040 "end": { 4305 "end": {
4041 "column": 3, 4306 "column": 3,
4042 "line": 20 4307 "line": 19
4043 }, 4308 },
4044 "file": "src/features/workspaces/components/CreateWorkspaceForm.js", 4309 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
4045 "id": "settings.workspace.add.form.name", 4310 "id": "settings.workspace.add.form.name",
4046 "start": { 4311 "start": {
4047 "column": 8, 4312 "column": 8,
4048 "line": 17 4313 "line": 16
4049 } 4314 }
4050 } 4315 }
4051 ], 4316 ],
@@ -4057,91 +4322,91 @@
4057 "defaultMessage": "!!!Delete workspace", 4322 "defaultMessage": "!!!Delete workspace",
4058 "end": { 4323 "end": {
4059 "column": 3, 4324 "column": 3,
4060 "line": 22 4325 "line": 24
4061 }, 4326 },
4062 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4327 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4063 "id": "settings.workspace.form.buttonDelete", 4328 "id": "settings.workspace.form.buttonDelete",
4064 "start": { 4329 "start": {
4065 "column": 16, 4330 "column": 16,
4066 "line": 19 4331 "line": 21
4067 } 4332 }
4068 }, 4333 },
4069 { 4334 {
4070 "defaultMessage": "!!!Save workspace", 4335 "defaultMessage": "!!!Save workspace",
4071 "end": { 4336 "end": {
4072 "column": 3, 4337 "column": 3,
4073 "line": 26 4338 "line": 28
4074 }, 4339 },
4075 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4340 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4076 "id": "settings.workspace.form.buttonSave", 4341 "id": "settings.workspace.form.buttonSave",
4077 "start": { 4342 "start": {
4078 "column": 14, 4343 "column": 14,
4079 "line": 23 4344 "line": 25
4080 } 4345 }
4081 }, 4346 },
4082 { 4347 {
4083 "defaultMessage": "!!!Name", 4348 "defaultMessage": "!!!Name",
4084 "end": { 4349 "end": {
4085 "column": 3, 4350 "column": 3,
4086 "line": 30 4351 "line": 32
4087 }, 4352 },
4088 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4353 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4089 "id": "settings.workspace.form.name", 4354 "id": "settings.workspace.form.name",
4090 "start": { 4355 "start": {
4091 "column": 8, 4356 "column": 8,
4092 "line": 27 4357 "line": 29
4093 } 4358 }
4094 }, 4359 },
4095 { 4360 {
4096 "defaultMessage": "!!!Your workspaces", 4361 "defaultMessage": "!!!Your workspaces",
4097 "end": { 4362 "end": {
4098 "column": 3, 4363 "column": 3,
4099 "line": 34 4364 "line": 36
4100 }, 4365 },
4101 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4366 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4102 "id": "settings.workspace.form.yourWorkspaces", 4367 "id": "settings.workspace.form.yourWorkspaces",
4103 "start": { 4368 "start": {
4104 "column": 18, 4369 "column": 18,
4105 "line": 31 4370 "line": 33
4106 } 4371 }
4107 }, 4372 },
4108 { 4373 {
4109 "defaultMessage": "!!!Services in this Workspace", 4374 "defaultMessage": "!!!Services in this Workspace",
4110 "end": { 4375 "end": {
4111 "column": 3, 4376 "column": 3,
4112 "line": 38 4377 "line": 40
4113 }, 4378 },
4114 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4379 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4115 "id": "settings.workspace.form.servicesInWorkspaceHeadline", 4380 "id": "settings.workspace.form.servicesInWorkspaceHeadline",
4116 "start": { 4381 "start": {
4117 "column": 31, 4382 "column": 31,
4118 "line": 35 4383 "line": 37
4119 } 4384 }
4120 }, 4385 },
4121 { 4386 {
4122 "defaultMessage": "!!!You haven't added any services yet.", 4387 "defaultMessage": "!!!You haven't added any services yet.",
4123 "end": { 4388 "end": {
4124 "column": 3, 4389 "column": 3,
4125 "line": 42 4390 "line": 44
4126 }, 4391 },
4127 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4392 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4128 "id": "settings.services.noServicesAdded", 4393 "id": "settings.services.noServicesAdded",
4129 "start": { 4394 "start": {
4130 "column": 19, 4395 "column": 19,
4131 "line": 39 4396 "line": 41
4132 } 4397 }
4133 }, 4398 },
4134 { 4399 {
4135 "defaultMessage": "!!!Discover services", 4400 "defaultMessage": "!!!Discover services",
4136 "end": { 4401 "end": {
4137 "column": 3, 4402 "column": 3,
4138 "line": 46 4403 "line": 48
4139 }, 4404 },
4140 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 4405 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
4141 "id": "settings.services.discoverServices", 4406 "id": "settings.services.discoverServices",
4142 "start": { 4407 "start": {
4143 "column": 20, 4408 "column": 20,
4144 "line": 43 4409 "line": 45
4145 } 4410 }
4146 } 4411 }
4147 ], 4412 ],
@@ -4153,104 +4418,104 @@
4153 "defaultMessage": "!!!Workspaces", 4418 "defaultMessage": "!!!Workspaces",
4154 "end": { 4419 "end": {
4155 "column": 3, 4420 "column": 3,
4156 "line": 20 4421 "line": 19
4157 }, 4422 },
4158 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4423 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4159 "id": "workspaceDrawer.headline", 4424 "id": "workspaceDrawer.headline",
4160 "start": { 4425 "start": {
4161 "column": 12, 4426 "column": 12,
4162 "line": 17 4427 "line": 16
4163 } 4428 }
4164 }, 4429 },
4165 { 4430 {
4166 "defaultMessage": "!!!All services", 4431 "defaultMessage": "!!!All services",
4167 "end": { 4432 "end": {
4168 "column": 3, 4433 "column": 3,
4169 "line": 24 4434 "line": 23
4170 }, 4435 },
4171 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4436 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4172 "id": "workspaceDrawer.allServices", 4437 "id": "workspaceDrawer.allServices",
4173 "start": { 4438 "start": {
4174 "column": 15, 4439 "column": 15,
4175 "line": 21 4440 "line": 20
4176 } 4441 }
4177 }, 4442 },
4178 { 4443 {
4179 "defaultMessage": "!!!Workspaces settings", 4444 "defaultMessage": "!!!Workspaces settings",
4180 "end": { 4445 "end": {
4181 "column": 3, 4446 "column": 3,
4182 "line": 28 4447 "line": 27
4183 }, 4448 },
4184 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4449 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4185 "id": "workspaceDrawer.workspacesSettingsTooltip", 4450 "id": "workspaceDrawer.workspacesSettingsTooltip",
4186 "start": { 4451 "start": {
4187 "column": 29, 4452 "column": 29,
4188 "line": 25 4453 "line": 24
4189 } 4454 }
4190 }, 4455 },
4191 { 4456 {
4192 "defaultMessage": "!!!Info about workspace feature", 4457 "defaultMessage": "!!!Info about workspace feature",
4193 "end": { 4458 "end": {
4194 "column": 3, 4459 "column": 3,
4195 "line": 32 4460 "line": 31
4196 }, 4461 },
4197 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4462 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4198 "id": "workspaceDrawer.workspaceFeatureInfo", 4463 "id": "workspaceDrawer.workspaceFeatureInfo",
4199 "start": { 4464 "start": {
4200 "column": 24, 4465 "column": 24,
4201 "line": 29 4466 "line": 28
4202 } 4467 }
4203 }, 4468 },
4204 { 4469 {
4205 "defaultMessage": "!!!Create your first workspace", 4470 "defaultMessage": "!!!Create your first workspace",
4206 "end": { 4471 "end": {
4207 "column": 3, 4472 "column": 3,
4208 "line": 36 4473 "line": 35
4209 }, 4474 },
4210 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4475 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4211 "id": "workspaceDrawer.premiumCtaButtonLabel", 4476 "id": "workspaceDrawer.premiumCtaButtonLabel",
4212 "start": { 4477 "start": {
4213 "column": 25, 4478 "column": 25,
4214 "line": 33 4479 "line": 32
4215 } 4480 }
4216 }, 4481 },
4217 { 4482 {
4218 "defaultMessage": "!!!Reactivate premium account", 4483 "defaultMessage": "!!!Reactivate premium account",
4219 "end": { 4484 "end": {
4220 "column": 3, 4485 "column": 3,
4221 "line": 40 4486 "line": 39
4222 }, 4487 },
4223 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4488 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4224 "id": "workspaceDrawer.reactivatePremiumAccountLabel", 4489 "id": "workspaceDrawer.reactivatePremiumAccountLabel",
4225 "start": { 4490 "start": {
4226 "column": 28, 4491 "column": 28,
4227 "line": 37 4492 "line": 36
4228 } 4493 }
4229 }, 4494 },
4230 { 4495 {
4231 "defaultMessage": "!!!add new workspace", 4496 "defaultMessage": "!!!add new workspace",
4232 "end": { 4497 "end": {
4233 "column": 3, 4498 "column": 3,
4234 "line": 44 4499 "line": 43
4235 }, 4500 },
4236 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4501 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4237 "id": "workspaceDrawer.addNewWorkspaceLabel", 4502 "id": "workspaceDrawer.addNewWorkspaceLabel",
4238 "start": { 4503 "start": {
4239 "column": 24, 4504 "column": 24,
4240 "line": 41 4505 "line": 40
4241 } 4506 }
4242 }, 4507 },
4243 { 4508 {
4244 "defaultMessage": "!!!Premium feature", 4509 "defaultMessage": "!!!Premium feature",
4245 "end": { 4510 "end": {
4246 "column": 3, 4511 "column": 3,
4247 "line": 48 4512 "line": 47
4248 }, 4513 },
4249 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 4514 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
4250 "id": "workspaceDrawer.proFeatureBadge", 4515 "id": "workspaceDrawer.proFeatureBadge",
4251 "start": { 4516 "start": {
4252 "column": 23, 4517 "column": 23,
4253 "line": 45 4518 "line": 44
4254 } 4519 }
4255 } 4520 }
4256 ], 4521 ],
@@ -4381,7 +4646,7 @@
4381 } 4646 }
4382 }, 4647 },
4383 { 4648 {
4384 "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", 4649 "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces",
4385 "end": { 4650 "end": {
4386 "column": 3, 4651 "column": 3,
4387 "line": 50 4652 "line": 50
@@ -4627,7 +4892,7 @@
4627 { 4892 {
4628 "descriptors": [ 4893 "descriptors": [
4629 { 4894 {
4630 "defaultMessage": "!!!Can't connect to Franz Online Services", 4895 "defaultMessage": "!!!Can't connect to Ferdi Online Services",
4631 "end": { 4896 "end": {
4632 "column": 3, 4897 "column": 3,
4633 "line": 7 4898 "line": 7
@@ -4726,806 +4991,858 @@
4726 "defaultMessage": "!!!Edit", 4991 "defaultMessage": "!!!Edit",
4727 "end": { 4992 "end": {
4728 "column": 3, 4993 "column": 3,
4729 "line": 20 4994 "line": 19
4730 }, 4995 },
4731 "file": "src/lib/Menu.js", 4996 "file": "src/lib/Menu.js",
4732 "id": "menu.edit", 4997 "id": "menu.edit",
4733 "start": { 4998 "start": {
4734 "column": 8, 4999 "column": 8,
4735 "line": 17 5000 "line": 16
4736 } 5001 }
4737 }, 5002 },
4738 { 5003 {
4739 "defaultMessage": "!!!Undo", 5004 "defaultMessage": "!!!Undo",
4740 "end": { 5005 "end": {
4741 "column": 3, 5006 "column": 3,
4742 "line": 24 5007 "line": 23
4743 }, 5008 },
4744 "file": "src/lib/Menu.js", 5009 "file": "src/lib/Menu.js",
4745 "id": "menu.edit.undo", 5010 "id": "menu.edit.undo",
4746 "start": { 5011 "start": {
4747 "column": 8, 5012 "column": 8,
4748 "line": 21 5013 "line": 20
4749 } 5014 }
4750 }, 5015 },
4751 { 5016 {
4752 "defaultMessage": "!!!Redo", 5017 "defaultMessage": "!!!Redo",
4753 "end": { 5018 "end": {
4754 "column": 3, 5019 "column": 3,
4755 "line": 28 5020 "line": 27
4756 }, 5021 },
4757 "file": "src/lib/Menu.js", 5022 "file": "src/lib/Menu.js",
4758 "id": "menu.edit.redo", 5023 "id": "menu.edit.redo",
4759 "start": { 5024 "start": {
4760 "column": 8, 5025 "column": 8,
4761 "line": 25 5026 "line": 24
4762 } 5027 }
4763 }, 5028 },
4764 { 5029 {
4765 "defaultMessage": "!!!Cut", 5030 "defaultMessage": "!!!Cut",
4766 "end": { 5031 "end": {
4767 "column": 3, 5032 "column": 3,
4768 "line": 32 5033 "line": 31
4769 }, 5034 },
4770 "file": "src/lib/Menu.js", 5035 "file": "src/lib/Menu.js",
4771 "id": "menu.edit.cut", 5036 "id": "menu.edit.cut",
4772 "start": { 5037 "start": {
4773 "column": 7, 5038 "column": 7,
4774 "line": 29 5039 "line": 28
4775 } 5040 }
4776 }, 5041 },
4777 { 5042 {
4778 "defaultMessage": "!!!Copy", 5043 "defaultMessage": "!!!Copy",
4779 "end": { 5044 "end": {
4780 "column": 3, 5045 "column": 3,
4781 "line": 36 5046 "line": 35
4782 }, 5047 },
4783 "file": "src/lib/Menu.js", 5048 "file": "src/lib/Menu.js",
4784 "id": "menu.edit.copy", 5049 "id": "menu.edit.copy",
4785 "start": { 5050 "start": {
4786 "column": 8, 5051 "column": 8,
4787 "line": 33 5052 "line": 32
4788 } 5053 }
4789 }, 5054 },
4790 { 5055 {
4791 "defaultMessage": "!!!Paste", 5056 "defaultMessage": "!!!Paste",
4792 "end": { 5057 "end": {
4793 "column": 3, 5058 "column": 3,
4794 "line": 40 5059 "line": 39
4795 }, 5060 },
4796 "file": "src/lib/Menu.js", 5061 "file": "src/lib/Menu.js",
4797 "id": "menu.edit.paste", 5062 "id": "menu.edit.paste",
4798 "start": { 5063 "start": {
4799 "column": 9, 5064 "column": 9,
4800 "line": 37 5065 "line": 36
4801 } 5066 }
4802 }, 5067 },
4803 { 5068 {
4804 "defaultMessage": "!!!Paste And Match Style", 5069 "defaultMessage": "!!!Paste And Match Style",
4805 "end": { 5070 "end": {
4806 "column": 3, 5071 "column": 3,
4807 "line": 44 5072 "line": 43
4808 }, 5073 },
4809 "file": "src/lib/Menu.js", 5074 "file": "src/lib/Menu.js",
4810 "id": "menu.edit.pasteAndMatchStyle", 5075 "id": "menu.edit.pasteAndMatchStyle",
4811 "start": { 5076 "start": {
4812 "column": 22, 5077 "column": 22,
4813 "line": 41 5078 "line": 40
4814 } 5079 }
4815 }, 5080 },
4816 { 5081 {
4817 "defaultMessage": "!!!Delete", 5082 "defaultMessage": "!!!Delete",
4818 "end": { 5083 "end": {
4819 "column": 3, 5084 "column": 3,
4820 "line": 48 5085 "line": 47
4821 }, 5086 },
4822 "file": "src/lib/Menu.js", 5087 "file": "src/lib/Menu.js",
4823 "id": "menu.edit.delete", 5088 "id": "menu.edit.delete",
4824 "start": { 5089 "start": {
4825 "column": 10, 5090 "column": 10,
4826 "line": 45 5091 "line": 44
4827 } 5092 }
4828 }, 5093 },
4829 { 5094 {
4830 "defaultMessage": "!!!Select All", 5095 "defaultMessage": "!!!Select All",
4831 "end": { 5096 "end": {
4832 "column": 3, 5097 "column": 3,
4833 "line": 52 5098 "line": 51
4834 }, 5099 },
4835 "file": "src/lib/Menu.js", 5100 "file": "src/lib/Menu.js",
4836 "id": "menu.edit.selectAll", 5101 "id": "menu.edit.selectAll",
4837 "start": { 5102 "start": {
4838 "column": 13, 5103 "column": 13,
4839 "line": 49 5104 "line": 48
4840 } 5105 }
4841 }, 5106 },
4842 { 5107 {
4843 "defaultMessage": "!!!Speech", 5108 "defaultMessage": "!!!Speech",
4844 "end": { 5109 "end": {
4845 "column": 3, 5110 "column": 3,
4846 "line": 56 5111 "line": 55
4847 }, 5112 },
4848 "file": "src/lib/Menu.js", 5113 "file": "src/lib/Menu.js",
4849 "id": "menu.edit.speech", 5114 "id": "menu.edit.speech",
4850 "start": { 5115 "start": {
4851 "column": 10, 5116 "column": 10,
4852 "line": 53 5117 "line": 52
4853 } 5118 }
4854 }, 5119 },
4855 { 5120 {
4856 "defaultMessage": "!!!Start Speaking", 5121 "defaultMessage": "!!!Start Speaking",
4857 "end": { 5122 "end": {
4858 "column": 3, 5123 "column": 3,
4859 "line": 60 5124 "line": 59
4860 }, 5125 },
4861 "file": "src/lib/Menu.js", 5126 "file": "src/lib/Menu.js",
4862 "id": "menu.edit.startSpeaking", 5127 "id": "menu.edit.startSpeaking",
4863 "start": { 5128 "start": {
4864 "column": 17, 5129 "column": 17,
4865 "line": 57 5130 "line": 56
4866 } 5131 }
4867 }, 5132 },
4868 { 5133 {
4869 "defaultMessage": "!!!Stop Speaking", 5134 "defaultMessage": "!!!Stop Speaking",
4870 "end": { 5135 "end": {
4871 "column": 3, 5136 "column": 3,
4872 "line": 64 5137 "line": 63
4873 }, 5138 },
4874 "file": "src/lib/Menu.js", 5139 "file": "src/lib/Menu.js",
4875 "id": "menu.edit.stopSpeaking", 5140 "id": "menu.edit.stopSpeaking",
4876 "start": { 5141 "start": {
4877 "column": 16, 5142 "column": 16,
4878 "line": 61 5143 "line": 60
4879 } 5144 }
4880 }, 5145 },
4881 { 5146 {
4882 "defaultMessage": "!!!Start Dictation", 5147 "defaultMessage": "!!!Start Dictation",
4883 "end": { 5148 "end": {
4884 "column": 3, 5149 "column": 3,
4885 "line": 68 5150 "line": 67
4886 }, 5151 },
4887 "file": "src/lib/Menu.js", 5152 "file": "src/lib/Menu.js",
4888 "id": "menu.edit.startDictation", 5153 "id": "menu.edit.startDictation",
4889 "start": { 5154 "start": {
4890 "column": 18, 5155 "column": 18,
4891 "line": 65 5156 "line": 64
4892 } 5157 }
4893 }, 5158 },
4894 { 5159 {
4895 "defaultMessage": "!!!Emoji & Symbols", 5160 "defaultMessage": "!!!Emoji & Symbols",
4896 "end": { 5161 "end": {
4897 "column": 3, 5162 "column": 3,
4898 "line": 72 5163 "line": 71
4899 }, 5164 },
4900 "file": "src/lib/Menu.js", 5165 "file": "src/lib/Menu.js",
4901 "id": "menu.edit.emojiSymbols", 5166 "id": "menu.edit.emojiSymbols",
4902 "start": { 5167 "start": {
4903 "column": 16, 5168 "column": 16,
4904 "line": 69 5169 "line": 68
4905 } 5170 }
4906 }, 5171 },
4907 { 5172 {
4908 "defaultMessage": "!!!Actual Size", 5173 "defaultMessage": "!!!Back",
4909 "end": { 5174 "end": {
4910 "column": 3, 5175 "column": 3,
5176 "line": 75
5177 },
5178 "file": "src/lib/Menu.js",
5179 "id": "menu.view.back",
5180 "start": {
5181 "column": 8,
5182 "line": 72
5183 }
5184 },
5185 {
5186 "defaultMessage": "!!!Forward",
5187 "end": {
5188 "column": 3,
5189 "line": 79
5190 },
5191 "file": "src/lib/Menu.js",
5192 "id": "menu.view.forward",
5193 "start": {
5194 "column": 11,
4911 "line": 76 5195 "line": 76
5196 }
5197 },
5198 {
5199 "defaultMessage": "!!!Actual Size",
5200 "end": {
5201 "column": 3,
5202 "line": 83
4912 }, 5203 },
4913 "file": "src/lib/Menu.js", 5204 "file": "src/lib/Menu.js",
4914 "id": "menu.view.resetZoom", 5205 "id": "menu.view.resetZoom",
4915 "start": { 5206 "start": {
4916 "column": 13, 5207 "column": 13,
4917 "line": 73 5208 "line": 80
4918 } 5209 }
4919 }, 5210 },
4920 { 5211 {
4921 "defaultMessage": "!!!Zoom In", 5212 "defaultMessage": "!!!Zoom In",
4922 "end": { 5213 "end": {
4923 "column": 3, 5214 "column": 3,
4924 "line": 80 5215 "line": 87
4925 }, 5216 },
4926 "file": "src/lib/Menu.js", 5217 "file": "src/lib/Menu.js",
4927 "id": "menu.view.zoomIn", 5218 "id": "menu.view.zoomIn",
4928 "start": { 5219 "start": {
4929 "column": 10, 5220 "column": 10,
4930 "line": 77 5221 "line": 84
4931 } 5222 }
4932 }, 5223 },
4933 { 5224 {
4934 "defaultMessage": "!!!Zoom Out", 5225 "defaultMessage": "!!!Zoom Out",
4935 "end": { 5226 "end": {
4936 "column": 3, 5227 "column": 3,
4937 "line": 84 5228 "line": 91
4938 }, 5229 },
4939 "file": "src/lib/Menu.js", 5230 "file": "src/lib/Menu.js",
4940 "id": "menu.view.zoomOut", 5231 "id": "menu.view.zoomOut",
4941 "start": { 5232 "start": {
4942 "column": 11, 5233 "column": 11,
4943 "line": 81 5234 "line": 88
4944 } 5235 }
4945 }, 5236 },
4946 { 5237 {
4947 "defaultMessage": "!!!Enter Full Screen", 5238 "defaultMessage": "!!!Enter Full Screen",
4948 "end": { 5239 "end": {
4949 "column": 3, 5240 "column": 3,
4950 "line": 88 5241 "line": 95
4951 }, 5242 },
4952 "file": "src/lib/Menu.js", 5243 "file": "src/lib/Menu.js",
4953 "id": "menu.view.enterFullScreen", 5244 "id": "menu.view.enterFullScreen",
4954 "start": { 5245 "start": {
4955 "column": 19, 5246 "column": 19,
4956 "line": 85 5247 "line": 92
4957 } 5248 }
4958 }, 5249 },
4959 { 5250 {
4960 "defaultMessage": "!!!Exit Full Screen", 5251 "defaultMessage": "!!!Exit Full Screen",
4961 "end": { 5252 "end": {
4962 "column": 3, 5253 "column": 3,
4963 "line": 92 5254 "line": 99
4964 }, 5255 },
4965 "file": "src/lib/Menu.js", 5256 "file": "src/lib/Menu.js",
4966 "id": "menu.view.exitFullScreen", 5257 "id": "menu.view.exitFullScreen",
4967 "start": { 5258 "start": {
4968 "column": 18, 5259 "column": 18,
4969 "line": 89 5260 "line": 96
4970 } 5261 }
4971 }, 5262 },
4972 { 5263 {
4973 "defaultMessage": "!!!Toggle Full Screen", 5264 "defaultMessage": "!!!Toggle Full Screen",
4974 "end": { 5265 "end": {
4975 "column": 3, 5266 "column": 3,
4976 "line": 96 5267 "line": 103
4977 }, 5268 },
4978 "file": "src/lib/Menu.js", 5269 "file": "src/lib/Menu.js",
4979 "id": "menu.view.toggleFullScreen", 5270 "id": "menu.view.toggleFullScreen",
4980 "start": { 5271 "start": {
4981 "column": 20, 5272 "column": 20,
4982 "line": 93 5273 "line": 100
4983 } 5274 }
4984 }, 5275 },
4985 { 5276 {
4986 "defaultMessage": "!!!Toggle Developer Tools", 5277 "defaultMessage": "!!!Toggle Developer Tools",
4987 "end": { 5278 "end": {
4988 "column": 3, 5279 "column": 3,
4989 "line": 100 5280 "line": 107
4990 }, 5281 },
4991 "file": "src/lib/Menu.js", 5282 "file": "src/lib/Menu.js",
4992 "id": "menu.view.toggleDevTools", 5283 "id": "menu.view.toggleDevTools",
4993 "start": { 5284 "start": {
4994 "column": 18, 5285 "column": 18,
4995 "line": 97 5286 "line": 104
4996 } 5287 }
4997 }, 5288 },
4998 { 5289 {
4999 "defaultMessage": "!!!Toggle Todos Developer Tools", 5290 "defaultMessage": "!!!Toggle Todos Developer Tools",
5000 "end": { 5291 "end": {
5001 "column": 3, 5292 "column": 3,
5002 "line": 104 5293 "line": 111
5003 }, 5294 },
5004 "file": "src/lib/Menu.js", 5295 "file": "src/lib/Menu.js",
5005 "id": "menu.view.toggleTodosDevTools", 5296 "id": "menu.view.toggleTodosDevTools",
5006 "start": { 5297 "start": {
5007 "column": 23, 5298 "column": 23,
5008 "line": 101 5299 "line": 108
5009 } 5300 }
5010 }, 5301 },
5011 { 5302 {
5012 "defaultMessage": "!!!Toggle Service Developer Tools", 5303 "defaultMessage": "!!!Toggle Service Developer Tools",
5013 "end": { 5304 "end": {
5014 "column": 3, 5305 "column": 3,
5015 "line": 108 5306 "line": 115
5016 }, 5307 },
5017 "file": "src/lib/Menu.js", 5308 "file": "src/lib/Menu.js",
5018 "id": "menu.view.toggleServiceDevTools", 5309 "id": "menu.view.toggleServiceDevTools",
5019 "start": { 5310 "start": {
5020 "column": 25, 5311 "column": 25,
5021 "line": 105 5312 "line": 112
5022 } 5313 }
5023 }, 5314 },
5024 { 5315 {
5025 "defaultMessage": "!!!Reload Service", 5316 "defaultMessage": "!!!Reload Service",
5026 "end": { 5317 "end": {
5027 "column": 3, 5318 "column": 3,
5028 "line": 112 5319 "line": 119
5029 }, 5320 },
5030 "file": "src/lib/Menu.js", 5321 "file": "src/lib/Menu.js",
5031 "id": "menu.view.reloadService", 5322 "id": "menu.view.reloadService",
5032 "start": { 5323 "start": {
5033 "column": 17, 5324 "column": 17,
5034 "line": 109 5325 "line": 116
5035 } 5326 }
5036 }, 5327 },
5037 { 5328 {
5038 "defaultMessage": "!!!Reload Franz", 5329 "defaultMessage": "!!!Reload Ferdi",
5039 "end": { 5330 "end": {
5040 "column": 3, 5331 "column": 3,
5041 "line": 116 5332 "line": 123
5042 }, 5333 },
5043 "file": "src/lib/Menu.js", 5334 "file": "src/lib/Menu.js",
5044 "id": "menu.view.reloadFranz", 5335 "id": "menu.view.reloadFranz",
5045 "start": { 5336 "start": {
5046 "column": 15, 5337 "column": 15,
5047 "line": 113 5338 "line": 120
5339 }
5340 },
5341 {
5342 "defaultMessage": "!!!Lock Ferdi",
5343 "end": {
5344 "column": 3,
5345 "line": 127
5346 },
5347 "file": "src/lib/Menu.js",
5348 "id": "menu.view.lockFerdi",
5349 "start": {
5350 "column": 13,
5351 "line": 124
5048 } 5352 }
5049 }, 5353 },
5050 { 5354 {
5051 "defaultMessage": "!!!Minimize", 5355 "defaultMessage": "!!!Minimize",
5052 "end": { 5356 "end": {
5053 "column": 3, 5357 "column": 3,
5054 "line": 120 5358 "line": 131
5055 }, 5359 },
5056 "file": "src/lib/Menu.js", 5360 "file": "src/lib/Menu.js",
5057 "id": "menu.window.minimize", 5361 "id": "menu.window.minimize",
5058 "start": { 5362 "start": {
5059 "column": 12, 5363 "column": 12,
5060 "line": 117 5364 "line": 128
5061 } 5365 }
5062 }, 5366 },
5063 { 5367 {
5064 "defaultMessage": "!!!Close", 5368 "defaultMessage": "!!!Close",
5065 "end": { 5369 "end": {
5066 "column": 3, 5370 "column": 3,
5067 "line": 124 5371 "line": 135
5068 }, 5372 },
5069 "file": "src/lib/Menu.js", 5373 "file": "src/lib/Menu.js",
5070 "id": "menu.window.close", 5374 "id": "menu.window.close",
5071 "start": { 5375 "start": {
5072 "column": 9, 5376 "column": 9,
5073 "line": 121 5377 "line": 132
5074 } 5378 }
5075 }, 5379 },
5076 { 5380 {
5077 "defaultMessage": "!!!Learn More", 5381 "defaultMessage": "!!!Learn More",
5078 "end": { 5382 "end": {
5079 "column": 3, 5383 "column": 3,
5080 "line": 128 5384 "line": 139
5081 }, 5385 },
5082 "file": "src/lib/Menu.js", 5386 "file": "src/lib/Menu.js",
5083 "id": "menu.help.learnMore", 5387 "id": "menu.help.learnMore",
5084 "start": { 5388 "start": {
5085 "column": 13, 5389 "column": 13,
5086 "line": 125 5390 "line": 136
5087 } 5391 }
5088 }, 5392 },
5089 { 5393 {
5090 "defaultMessage": "!!!Changelog", 5394 "defaultMessage": "!!!Changelog",
5091 "end": { 5395 "end": {
5092 "column": 3, 5396 "column": 3,
5093 "line": 132 5397 "line": 143
5094 }, 5398 },
5095 "file": "src/lib/Menu.js", 5399 "file": "src/lib/Menu.js",
5096 "id": "menu.help.changelog", 5400 "id": "menu.help.changelog",
5097 "start": { 5401 "start": {
5098 "column": 13, 5402 "column": 13,
5099 "line": 129 5403 "line": 140
5100 } 5404 }
5101 }, 5405 },
5102 { 5406 {
5103 "defaultMessage": "!!!Support", 5407 "defaultMessage": "!!!Support",
5104 "end": { 5408 "end": {
5105 "column": 3, 5409 "column": 3,
5106 "line": 136 5410 "line": 147
5107 }, 5411 },
5108 "file": "src/lib/Menu.js", 5412 "file": "src/lib/Menu.js",
5109 "id": "menu.help.support", 5413 "id": "menu.help.support",
5110 "start": { 5414 "start": {
5111 "column": 11, 5415 "column": 11,
5112 "line": 133 5416 "line": 144
5113 } 5417 }
5114 }, 5418 },
5115 { 5419 {
5116 "defaultMessage": "!!!Copy Debug Information", 5420 "defaultMessage": "!!!Copy Debug Information",
5117 "end": { 5421 "end": {
5118 "column": 3, 5422 "column": 3,
5119 "line": 140 5423 "line": 151
5120 }, 5424 },
5121 "file": "src/lib/Menu.js", 5425 "file": "src/lib/Menu.js",
5122 "id": "menu.help.debugInfo", 5426 "id": "menu.help.debugInfo",
5123 "start": { 5427 "start": {
5124 "column": 13, 5428 "column": 13,
5125 "line": 137 5429 "line": 148
5126 } 5430 }
5127 }, 5431 },
5128 { 5432 {
5129 "defaultMessage": "!!!Franz Debug Information", 5433 "defaultMessage": "!!!Ferdi Debug Information",
5130 "end": { 5434 "end": {
5131 "column": 3, 5435 "column": 3,
5132 "line": 144 5436 "line": 155
5133 }, 5437 },
5134 "file": "src/lib/Menu.js", 5438 "file": "src/lib/Menu.js",
5135 "id": "menu.help.debugInfoCopiedHeadline", 5439 "id": "menu.help.debugInfoCopiedHeadline",
5136 "start": { 5440 "start": {
5137 "column": 27, 5441 "column": 27,
5138 "line": 141 5442 "line": 152
5139 } 5443 }
5140 }, 5444 },
5141 { 5445 {
5142 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 5446 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
5143 "end": { 5447 "end": {
5144 "column": 3, 5448 "column": 3,
5145 "line": 148 5449 "line": 159
5146 }, 5450 },
5147 "file": "src/lib/Menu.js", 5451 "file": "src/lib/Menu.js",
5148 "id": "menu.help.debugInfoCopiedBody", 5452 "id": "menu.help.debugInfoCopiedBody",
5149 "start": { 5453 "start": {
5150 "column": 23, 5454 "column": 23,
5151 "line": 145 5455 "line": 156
5152 } 5456 }
5153 }, 5457 },
5154 { 5458 {
5155 "defaultMessage": "!!!Terms of Service", 5459 "defaultMessage": "!!!Terms of Service",
5156 "end": { 5460 "end": {
5157 "column": 3, 5461 "column": 3,
5158 "line": 152 5462 "line": 163
5159 }, 5463 },
5160 "file": "src/lib/Menu.js", 5464 "file": "src/lib/Menu.js",
5161 "id": "menu.help.tos", 5465 "id": "menu.help.tos",
5162 "start": { 5466 "start": {
5163 "column": 7, 5467 "column": 7,
5164 "line": 149 5468 "line": 160
5165 } 5469 }
5166 }, 5470 },
5167 { 5471 {
5168 "defaultMessage": "!!!Privacy Statement", 5472 "defaultMessage": "!!!Privacy Statement",
5169 "end": { 5473 "end": {
5170 "column": 3, 5474 "column": 3,
5171 "line": 156 5475 "line": 167
5172 }, 5476 },
5173 "file": "src/lib/Menu.js", 5477 "file": "src/lib/Menu.js",
5174 "id": "menu.help.privacy", 5478 "id": "menu.help.privacy",
5175 "start": { 5479 "start": {
5176 "column": 11, 5480 "column": 11,
5177 "line": 153 5481 "line": 164
5178 } 5482 }
5179 }, 5483 },
5180 { 5484 {
5181 "defaultMessage": "!!!File", 5485 "defaultMessage": "!!!File",
5182 "end": { 5486 "end": {
5183 "column": 3, 5487 "column": 3,
5184 "line": 160 5488 "line": 171
5185 }, 5489 },
5186 "file": "src/lib/Menu.js", 5490 "file": "src/lib/Menu.js",
5187 "id": "menu.file", 5491 "id": "menu.file",
5188 "start": { 5492 "start": {
5189 "column": 8, 5493 "column": 8,
5190 "line": 157 5494 "line": 168
5191 } 5495 }
5192 }, 5496 },
5193 { 5497 {
5194 "defaultMessage": "!!!View", 5498 "defaultMessage": "!!!View",
5195 "end": { 5499 "end": {
5196 "column": 3, 5500 "column": 3,
5197 "line": 164 5501 "line": 175
5198 }, 5502 },
5199 "file": "src/lib/Menu.js", 5503 "file": "src/lib/Menu.js",
5200 "id": "menu.view", 5504 "id": "menu.view",
5201 "start": { 5505 "start": {
5202 "column": 8, 5506 "column": 8,
5203 "line": 161 5507 "line": 172
5204 } 5508 }
5205 }, 5509 },
5206 { 5510 {
5207 "defaultMessage": "!!!Services", 5511 "defaultMessage": "!!!Services",
5208 "end": { 5512 "end": {
5209 "column": 3, 5513 "column": 3,
5210 "line": 168 5514 "line": 179
5211 }, 5515 },
5212 "file": "src/lib/Menu.js", 5516 "file": "src/lib/Menu.js",
5213 "id": "menu.services", 5517 "id": "menu.services",
5214 "start": { 5518 "start": {
5215 "column": 12, 5519 "column": 12,
5216 "line": 165 5520 "line": 176
5217 } 5521 }
5218 }, 5522 },
5219 { 5523 {
5220 "defaultMessage": "!!!Window", 5524 "defaultMessage": "!!!Window",
5221 "end": { 5525 "end": {
5222 "column": 3, 5526 "column": 3,
5223 "line": 172 5527 "line": 183
5224 }, 5528 },
5225 "file": "src/lib/Menu.js", 5529 "file": "src/lib/Menu.js",
5226 "id": "menu.window", 5530 "id": "menu.window",
5227 "start": { 5531 "start": {
5228 "column": 10, 5532 "column": 10,
5229 "line": 169 5533 "line": 180
5230 } 5534 }
5231 }, 5535 },
5232 { 5536 {
5233 "defaultMessage": "!!!Help", 5537 "defaultMessage": "!!!Help",
5234 "end": { 5538 "end": {
5235 "column": 3, 5539 "column": 3,
5236 "line": 176 5540 "line": 187
5237 }, 5541 },
5238 "file": "src/lib/Menu.js", 5542 "file": "src/lib/Menu.js",
5239 "id": "menu.help", 5543 "id": "menu.help",
5240 "start": { 5544 "start": {
5241 "column": 8, 5545 "column": 8,
5242 "line": 173 5546 "line": 184
5243 } 5547 }
5244 }, 5548 },
5245 { 5549 {
5246 "defaultMessage": "!!!About Franz", 5550 "defaultMessage": "!!!About Ferdi",
5247 "end": { 5551 "end": {
5248 "column": 3, 5552 "column": 3,
5249 "line": 180 5553 "line": 191
5250 }, 5554 },
5251 "file": "src/lib/Menu.js", 5555 "file": "src/lib/Menu.js",
5252 "id": "menu.app.about", 5556 "id": "menu.app.about",
5253 "start": { 5557 "start": {
5254 "column": 9, 5558 "column": 9,
5255 "line": 177 5559 "line": 188
5256 } 5560 }
5257 }, 5561 },
5258 { 5562 {
5259 "defaultMessage": "!!!What's new?", 5563 "defaultMessage": "!!!What's new?",
5260 "end": { 5564 "end": {
5261 "column": 3, 5565 "column": 3,
5262 "line": 184 5566 "line": 195
5263 }, 5567 },
5264 "file": "src/lib/Menu.js", 5568 "file": "src/lib/Menu.js",
5265 "id": "menu.app.announcement", 5569 "id": "menu.app.announcement",
5266 "start": { 5570 "start": {
5267 "column": 16, 5571 "column": 16,
5268 "line": 181 5572 "line": 192
5269 } 5573 }
5270 }, 5574 },
5271 { 5575 {
5272 "defaultMessage": "!!!Settings", 5576 "defaultMessage": "!!!Settings",
5273 "end": { 5577 "end": {
5274 "column": 3, 5578 "column": 3,
5275 "line": 188 5579 "line": 199
5276 }, 5580 },
5277 "file": "src/lib/Menu.js", 5581 "file": "src/lib/Menu.js",
5278 "id": "menu.app.settings", 5582 "id": "menu.app.settings",
5279 "start": { 5583 "start": {
5280 "column": 12, 5584 "column": 12,
5281 "line": 185 5585 "line": 196
5282 } 5586 }
5283 }, 5587 },
5284 { 5588 {
5285 "defaultMessage": "!!!Check for updates", 5589 "defaultMessage": "!!!Check for updates",
5286 "end": { 5590 "end": {
5287 "column": 3, 5591 "column": 3,
5288 "line": 192 5592 "line": 203
5289 }, 5593 },
5290 "file": "src/lib/Menu.js", 5594 "file": "src/lib/Menu.js",
5291 "id": "menu.app.checkForUpdates", 5595 "id": "menu.app.checkForUpdates",
5292 "start": { 5596 "start": {
5293 "column": 19, 5597 "column": 19,
5294 "line": 189 5598 "line": 200
5295 } 5599 }
5296 }, 5600 },
5297 { 5601 {
5298 "defaultMessage": "!!!Hide", 5602 "defaultMessage": "!!!Hide",
5299 "end": { 5603 "end": {
5300 "column": 3, 5604 "column": 3,
5301 "line": 196 5605 "line": 207
5302 }, 5606 },
5303 "file": "src/lib/Menu.js", 5607 "file": "src/lib/Menu.js",
5304 "id": "menu.app.hide", 5608 "id": "menu.app.hide",
5305 "start": { 5609 "start": {
5306 "column": 8, 5610 "column": 8,
5307 "line": 193 5611 "line": 204
5308 } 5612 }
5309 }, 5613 },
5310 { 5614 {
5311 "defaultMessage": "!!!Hide Others", 5615 "defaultMessage": "!!!Hide Others",
5312 "end": { 5616 "end": {
5313 "column": 3, 5617 "column": 3,
5314 "line": 200 5618 "line": 211
5315 }, 5619 },
5316 "file": "src/lib/Menu.js", 5620 "file": "src/lib/Menu.js",
5317 "id": "menu.app.hideOthers", 5621 "id": "menu.app.hideOthers",
5318 "start": { 5622 "start": {
5319 "column": 14, 5623 "column": 14,
5320 "line": 197 5624 "line": 208
5321 } 5625 }
5322 }, 5626 },
5323 { 5627 {
5324 "defaultMessage": "!!!Unhide", 5628 "defaultMessage": "!!!Unhide",
5325 "end": { 5629 "end": {
5326 "column": 3, 5630 "column": 3,
5327 "line": 204 5631 "line": 215
5328 }, 5632 },
5329 "file": "src/lib/Menu.js", 5633 "file": "src/lib/Menu.js",
5330 "id": "menu.app.unhide", 5634 "id": "menu.app.unhide",
5331 "start": { 5635 "start": {
5332 "column": 10, 5636 "column": 10,
5333 "line": 201 5637 "line": 212
5638 }
5639 },
5640 {
5641 "defaultMessage": "!!!Auto-hide menu bar",
5642 "end": {
5643 "column": 3,
5644 "line": 219
5645 },
5646 "file": "src/lib/Menu.js",
5647 "id": "menu.app.autohideMenuBar",
5648 "start": {
5649 "column": 19,
5650 "line": 216
5334 } 5651 }
5335 }, 5652 },
5336 { 5653 {
5337 "defaultMessage": "!!!Quit", 5654 "defaultMessage": "!!!Quit",
5338 "end": { 5655 "end": {
5339 "column": 3, 5656 "column": 3,
5340 "line": 208 5657 "line": 223
5341 }, 5658 },
5342 "file": "src/lib/Menu.js", 5659 "file": "src/lib/Menu.js",
5343 "id": "menu.app.quit", 5660 "id": "menu.app.quit",
5344 "start": { 5661 "start": {
5345 "column": 8, 5662 "column": 8,
5346 "line": 205 5663 "line": 220
5347 } 5664 }
5348 }, 5665 },
5349 { 5666 {
5350 "defaultMessage": "!!!Add New Service...", 5667 "defaultMessage": "!!!Add New Service...",
5351 "end": { 5668 "end": {
5352 "column": 3, 5669 "column": 3,
5353 "line": 212 5670 "line": 227
5354 }, 5671 },
5355 "file": "src/lib/Menu.js", 5672 "file": "src/lib/Menu.js",
5356 "id": "menu.services.addNewService", 5673 "id": "menu.services.addNewService",
5357 "start": { 5674 "start": {
5358 "column": 17, 5675 "column": 17,
5359 "line": 209 5676 "line": 224
5360 } 5677 }
5361 }, 5678 },
5362 { 5679 {
5363 "defaultMessage": "!!!Add New Workspace...", 5680 "defaultMessage": "!!!Add New Workspace...",
5364 "end": { 5681 "end": {
5365 "column": 3, 5682 "column": 3,
5366 "line": 216 5683 "line": 231
5367 }, 5684 },
5368 "file": "src/lib/Menu.js", 5685 "file": "src/lib/Menu.js",
5369 "id": "menu.workspaces.addNewWorkspace", 5686 "id": "menu.workspaces.addNewWorkspace",
5370 "start": { 5687 "start": {
5371 "column": 19, 5688 "column": 19,
5372 "line": 213 5689 "line": 228
5373 } 5690 }
5374 }, 5691 },
5375 { 5692 {
5376 "defaultMessage": "!!!Open workspace drawer", 5693 "defaultMessage": "!!!Open workspace drawer",
5377 "end": { 5694 "end": {
5378 "column": 3, 5695 "column": 3,
5379 "line": 220 5696 "line": 235
5380 }, 5697 },
5381 "file": "src/lib/Menu.js", 5698 "file": "src/lib/Menu.js",
5382 "id": "menu.workspaces.openWorkspaceDrawer", 5699 "id": "menu.workspaces.openWorkspaceDrawer",
5383 "start": { 5700 "start": {
5384 "column": 23, 5701 "column": 23,
5385 "line": 217 5702 "line": 232
5386 } 5703 }
5387 }, 5704 },
5388 { 5705 {
5389 "defaultMessage": "!!!Close workspace drawer", 5706 "defaultMessage": "!!!Close workspace drawer",
5390 "end": { 5707 "end": {
5391 "column": 3, 5708 "column": 3,
5392 "line": 224 5709 "line": 239
5393 }, 5710 },
5394 "file": "src/lib/Menu.js", 5711 "file": "src/lib/Menu.js",
5395 "id": "menu.workspaces.closeWorkspaceDrawer", 5712 "id": "menu.workspaces.closeWorkspaceDrawer",
5396 "start": { 5713 "start": {
5397 "column": 24, 5714 "column": 24,
5398 "line": 221 5715 "line": 236
5399 } 5716 }
5400 }, 5717 },
5401 { 5718 {
5402 "defaultMessage": "!!!Activate next service...", 5719 "defaultMessage": "!!!Activate next service...",
5403 "end": { 5720 "end": {
5404 "column": 3, 5721 "column": 3,
5405 "line": 228 5722 "line": 243
5406 }, 5723 },
5407 "file": "src/lib/Menu.js", 5724 "file": "src/lib/Menu.js",
5408 "id": "menu.services.setNextServiceActive", 5725 "id": "menu.services.setNextServiceActive",
5409 "start": { 5726 "start": {
5410 "column": 23, 5727 "column": 23,
5411 "line": 225 5728 "line": 240
5412 } 5729 }
5413 }, 5730 },
5414 { 5731 {
5415 "defaultMessage": "!!!Activate previous service...", 5732 "defaultMessage": "!!!Activate previous service...",
5416 "end": { 5733 "end": {
5417 "column": 3, 5734 "column": 3,
5418 "line": 232 5735 "line": 247
5419 }, 5736 },
5420 "file": "src/lib/Menu.js", 5737 "file": "src/lib/Menu.js",
5421 "id": "menu.services.activatePreviousService", 5738 "id": "menu.services.activatePreviousService",
5422 "start": { 5739 "start": {
5423 "column": 27, 5740 "column": 27,
5424 "line": 229 5741 "line": 244
5425 } 5742 }
5426 }, 5743 },
5427 { 5744 {
5428 "defaultMessage": "!!!Disable notifications & audio", 5745 "defaultMessage": "!!!Disable notifications & audio",
5429 "end": { 5746 "end": {
5430 "column": 3, 5747 "column": 3,
5431 "line": 236 5748 "line": 251
5432 }, 5749 },
5433 "file": "src/lib/Menu.js", 5750 "file": "src/lib/Menu.js",
5434 "id": "sidebar.muteApp", 5751 "id": "sidebar.muteApp",
5435 "start": { 5752 "start": {
5436 "column": 11, 5753 "column": 11,
5437 "line": 233 5754 "line": 248
5438 } 5755 }
5439 }, 5756 },
5440 { 5757 {
5441 "defaultMessage": "!!!Enable notifications & audio", 5758 "defaultMessage": "!!!Enable notifications & audio",
5442 "end": { 5759 "end": {
5443 "column": 3, 5760 "column": 3,
5444 "line": 240 5761 "line": 255
5445 }, 5762 },
5446 "file": "src/lib/Menu.js", 5763 "file": "src/lib/Menu.js",
5447 "id": "sidebar.unmuteApp", 5764 "id": "sidebar.unmuteApp",
5448 "start": { 5765 "start": {
5449 "column": 13, 5766 "column": 13,
5450 "line": 237 5767 "line": 252
5451 } 5768 }
5452 }, 5769 },
5453 { 5770 {
5454 "defaultMessage": "!!!Workspaces", 5771 "defaultMessage": "!!!Workspaces",
5455 "end": { 5772 "end": {
5456 "column": 3, 5773 "column": 3,
5457 "line": 244 5774 "line": 259
5458 }, 5775 },
5459 "file": "src/lib/Menu.js", 5776 "file": "src/lib/Menu.js",
5460 "id": "menu.workspaces", 5777 "id": "menu.workspaces",
5461 "start": { 5778 "start": {
5462 "column": 14, 5779 "column": 14,
5463 "line": 241 5780 "line": 256
5464 } 5781 }
5465 }, 5782 },
5466 { 5783 {
5467 "defaultMessage": "!!!Default", 5784 "defaultMessage": "!!!Default",
5468 "end": { 5785 "end": {
5469 "column": 3, 5786 "column": 3,
5470 "line": 248 5787 "line": 263
5471 }, 5788 },
5472 "file": "src/lib/Menu.js", 5789 "file": "src/lib/Menu.js",
5473 "id": "menu.workspaces.defaultWorkspace", 5790 "id": "menu.workspaces.defaultWorkspace",
5474 "start": { 5791 "start": {
5475 "column": 20, 5792 "column": 20,
5476 "line": 245 5793 "line": 260
5477 } 5794 }
5478 }, 5795 },
5479 { 5796 {
5480 "defaultMessage": "!!!Todos", 5797 "defaultMessage": "!!!Todos",
5481 "end": { 5798 "end": {
5482 "column": 3, 5799 "column": 3,
5483 "line": 252 5800 "line": 267
5484 }, 5801 },
5485 "file": "src/lib/Menu.js", 5802 "file": "src/lib/Menu.js",
5486 "id": "menu.todos", 5803 "id": "menu.todos",
5487 "start": { 5804 "start": {
5488 "column": 9, 5805 "column": 9,
5489 "line": 249 5806 "line": 264
5490 } 5807 }
5491 }, 5808 },
5492 { 5809 {
5493 "defaultMessage": "!!!Open Todos drawer", 5810 "defaultMessage": "!!!Open Todos drawer",
5494 "end": { 5811 "end": {
5495 "column": 3, 5812 "column": 3,
5496 "line": 256 5813 "line": 271
5497 }, 5814 },
5498 "file": "src/lib/Menu.js", 5815 "file": "src/lib/Menu.js",
5499 "id": "menu.Todoss.openTodosDrawer", 5816 "id": "menu.Todoss.openTodosDrawer",
5500 "start": { 5817 "start": {
5501 "column": 19, 5818 "column": 19,
5502 "line": 253 5819 "line": 268
5503 } 5820 }
5504 }, 5821 },
5505 { 5822 {
5506 "defaultMessage": "!!!Close Todos drawer", 5823 "defaultMessage": "!!!Close Todos drawer",
5507 "end": { 5824 "end": {
5508 "column": 3, 5825 "column": 3,
5509 "line": 260 5826 "line": 275
5510 }, 5827 },
5511 "file": "src/lib/Menu.js", 5828 "file": "src/lib/Menu.js",
5512 "id": "menu.Todoss.closeTodosDrawer", 5829 "id": "menu.Todoss.closeTodosDrawer",
5513 "start": { 5830 "start": {
5514 "column": 20, 5831 "column": 20,
5515 "line": 257 5832 "line": 272
5516 } 5833 }
5517 }, 5834 },
5518 { 5835 {
5519 "defaultMessage": "!!!Enable Todos", 5836 "defaultMessage": "!!!Enable Todos",
5520 "end": { 5837 "end": {
5521 "column": 3, 5838 "column": 3,
5522 "line": 264 5839 "line": 279
5523 }, 5840 },
5524 "file": "src/lib/Menu.js", 5841 "file": "src/lib/Menu.js",
5525 "id": "menu.todos.enableTodos", 5842 "id": "menu.todos.enableTodos",
5526 "start": { 5843 "start": {
5527 "column": 15, 5844 "column": 15,
5528 "line": 261 5845 "line": 276
5529 } 5846 }
5530 } 5847 }
5531 ], 5848 ],
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index ac2747ee5..e28a9c65c 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -13,14 +13,14 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Franz", 23 "global.api.unhealthy" : "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", 25 "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο",
26 "global.spellchecker.useDefault" : "Use System Default ({default})", 26 "global.spellchecker.useDefault" : "Use System Default ({default})",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Η συνεδρία σας έληξε, συνδεθείτε ξανά.", 56 "login.tokenExpired" : "Η συνεδρία σας έληξε, συνδεθείτε ξανά.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Σχετικά με το Franz", 59 "menu.app.about" : "Σχετικά με το Ferdi",
60 "menu.app.announcement" : "What's new?", 60 "menu.app.announcement" : "What's new?",
61 "menu.app.checkForUpdates" : "Έλεγχος για ενημερώσεις", 61 "menu.app.checkForUpdates" : "Έλεγχος για ενημερώσεις",
62 "menu.app.hide" : "Απόκρυψη", 62 "menu.app.hide" : "Απόκρυψη",
@@ -97,7 +97,7 @@
97 "menu.view" : "Προβολή", 97 "menu.view" : "Προβολή",
98 "menu.view.enterFullScreen" : "Πλήρης Οθόνη", 98 "menu.view.enterFullScreen" : "Πλήρης Οθόνη",
99 "menu.view.exitFullScreen" : "Έξοδος από πλήρη οθόνη", 99 "menu.view.exitFullScreen" : "Έξοδος από πλήρη οθόνη",
100 "menu.view.reloadFranz" : "Ανανέωση Franz", 100 "menu.view.reloadFranz" : "Ανανέωση Ferdi",
101 "menu.view.reloadService" : "Ανανέωση Υπηρεσίας", 101 "menu.view.reloadService" : "Ανανέωση Υπηρεσίας",
102 "menu.view.resetZoom" : "Πραγματικό μέγεθος", 102 "menu.view.resetZoom" : "Πραγματικό μέγεθος",
103 "menu.view.toggleDevTools" : "Άνοιγμα Εργαλειοθήκη Προγραμματιστών", 103 "menu.view.toggleDevTools" : "Άνοιγμα Εργαλειοθήκη Προγραμματιστών",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Ξεκινήστε", 169 "services.getStarted" : "Ξεκινήστε",
170 "services.welcome" : "Καλώς ορίσατε στον Franz", 170 "services.welcome" : "Καλώς ορίσατε στον Ferdi",
171 "settings.account.account.editButton" : "Επεξεργασία λογαριασμού", 171 "settings.account.account.editButton" : "Επεξεργασία λογαριασμού",
172 "settings.account.accountType.basic" : "Βασικός λογαριασμός", 172 "settings.account.accountType.basic" : "Βασικός λογαριασμός",
173 "settings.account.accountType.premium" : "Λογαριασμός Premium Υποστηρικτή", 173 "settings.account.accountType.premium" : "Λογαριασμός Premium Υποστηρικτή",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Καθαρισμός λανθάνουσας μνήμης", 198 "settings.app.buttonClearAllCache" : "Καθαρισμός λανθάνουσας μνήμης",
199 "settings.app.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημερώσεων", 199 "settings.app.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημερώσεων",
200 "settings.app.buttonSearchForUpdate" : "Έλεγχος για ενημερώσεις", 200 "settings.app.buttonSearchForUpdate" : "Έλεγχος για ενημερώσεις",
201 "settings.app.cacheInfo" : "Το Franz χρησιμοποιεί αυτήν τη στιγμή {size} χώρου στο δίσκο.", 201 "settings.app.cacheInfo" : "Το Ferdi χρησιμοποιεί αυτήν τη στιγμή {size} χώρου στο δίσκο.",
202 "settings.app.currentVersion" : "Τρέχουσα έκδοση:", 202 "settings.app.currentVersion" : "Τρέχουσα έκδοση:",
203 "settings.app.form.autoLaunchInBackground" : "Άνοιγμα στο παρασκήνιο", 203 "settings.app.form.autoLaunchInBackground" : "Άνοιγμα στο παρασκήνιο",
204 "settings.app.form.autoLaunchOnStart" : "Εκκίνηση του Franz κατά την εκκίνηση του συστήματος", 204 "settings.app.form.autoLaunchOnStart" : "Εκκίνηση του Ferdi κατά την εκκίνηση του συστήματος",
205 "settings.app.form.beta" : "Συμπεριλάβετε εκδόσεις beta", 205 "settings.app.form.beta" : "Συμπεριλάβετε εκδόσεις beta",
206 "settings.app.form.darkMode" : "Join the Dark Side", 206 "settings.app.form.darkMode" : "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Ενεργοποιήση Ενίσχυσης GPU ", 207 "settings.app.form.enableGPUAcceleration" : "Ενεργοποιήση Ενίσχυσης GPU ",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Γλώσσα", 212 "settings.app.form.language" : "Γλώσσα",
213 "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Franz στη γραμμή ειδοποιήσεων", 213 "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Ferdi στη γραμμή ειδοποιήσεων",
214 "settings.app.form.runInBackground" : "Κρατήστε το Franz στο παρασκήνιο κατά το κλείσιμο του παραθύρου", 214 "settings.app.form.runInBackground" : "Κρατήστε το Ferdi στο παρασκήνιο κατά το κλείσιμο του παραθύρου",
215 "settings.app.form.showDisabledServices" : "Προβολή καρτελών των απενεργοποιημένων υπηρεσιών", 215 "settings.app.form.showDisabledServices" : "Προβολή καρτελών των απενεργοποιημένων υπηρεσιών",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Προβολή του εικονιδίου μη αναγνωσμένου μηνύματος όταν οι ειδοποιήσεις είναι απενεργοποιημένες", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Προβολή του εικονιδίου μη αναγνωσμένου μηνύματος όταν οι ειδοποιήσεις είναι απενεργοποιημένες",
217 "settings.app.headline" : "Ρυθμίσεις", 217 "settings.app.headline" : "Ρυθμίσεις",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Οι αλλαγές απαιτούν επανεκκίνηση", 224 "settings.app.restartRequired" : "Οι αλλαγές απαιτούν επανεκκίνηση",
225 "settings.app.subheadlineCache" : "Λανθάνουσα μνήμη", 225 "settings.app.subheadlineCache" : "Λανθάνουσα μνήμη",
226 "settings.app.translationHelp" : "Βοηθήστε μας να μεταφράσουμε το Franz στη δική σας γλώσσα.", 226 "settings.app.translationHelp" : "Βοηθήστε μας να μεταφράσουμε το Ferdi στη δική σας γλώσσα.",
227 "settings.app.updateStatusAvailable" : "Υπάρχει διαθέσιμη ενημέρωση, γίνεται λήψη...", 227 "settings.app.updateStatusAvailable" : "Υπάρχει διαθέσιμη ενημέρωση, γίνεται λήψη...",
228 "settings.app.updateStatusSearching" : " Γίνεται αναζήτηση για ενημέρωση", 228 "settings.app.updateStatusSearching" : " Γίνεται αναζήτηση για ενημέρωση",
229 "settings.app.updateStatusUpToDate" : "Χρησιμοποιείτε την τελευταία έκδοση του Franz", 229 "settings.app.updateStatusUpToDate" : "Χρησιμοποιείτε την τελευταία έκδοση του Ferdi",
230 "settings.invite.headline" : "Προσκαλέστε Φίλους", 230 "settings.invite.headline" : "Προσκαλέστε Φίλους",
231 "settings.navigation.account" : "Λογαριασμός", 231 "settings.navigation.account" : "Λογαριασμός",
232 "settings.navigation.availableServices" : "Διαθέσιμες υπηρεσίες", 232 "settings.navigation.availableServices" : "Διαθέσιμες υπηρεσίες",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Όνομα", 278 "settings.service.form.name" : "Όνομα",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "Αποθήκευση υπηρεσίας", 287 "settings.service.form.saveButton" : "Αποθήκευση υπηρεσίας",
288 "settings.service.form.tabHosted" : "Φιλοξενείται", 288 "settings.service.form.tabHosted" : "Φιλοξενείται",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Όλοι οι ήχοι είναι απενεργοποιημένοι", 299 "settings.services.tooltip.isMuted" : "Όλοι οι ήχοι είναι απενεργοποιημένοι",
300 "settings.services.tooltip.notificationsDisabled" : "Οι ειδοποιήσεις είναι απενεργοποιημένες", 300 "settings.services.tooltip.notificationsDisabled" : "Οι ειδοποιήσεις είναι απενεργοποιημένες",
301 "settings.services.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί", 301 "settings.services.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Ομάδα", 304 "settings.team.headline" : "Ομάδα",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Δοκιμάστε ξανά", 327 "settings.workspaces.tryReloadWorkspaces" : "Δοκιμάστε ξανά",
328 "settings.workspaces.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί", 328 "settings.workspaces.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Προσθήκη νέας υπηρεσίας", 332 "sidebar.addNewService" : "Προσθήκη νέας υπηρεσίας",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,12 +342,26 @@
342 "signup.firstname.label" : "Όνομα", 342 "signup.firstname.label" : "Όνομα",
343 "signup.headline" : "Εγγραφή", 343 "signup.headline" : "Εγγραφή",
344 "signup.lastname.label" : "Επίθετο", 344 "signup.lastname.label" : "Επίθετο",
345 "signup.legal.info" : "Δημιουργώντας έναν λογαριασμό Franz αποδέχεστε τους", 345 "signup.legal.info" : "Δημιουργώντας έναν λογαριασμό Ferdi αποδέχεστε τους",
346 "signup.legal.privacy" : "Δήλωση απορρήτου", 346 "signup.legal.privacy" : "Δήλωση απορρήτου",
347 "signup.legal.terms" : "Όροι υπηρεσίας", 347 "signup.legal.terms" : "Όροι υπηρεσίας",
348 "signup.link.login" : "Έχετε ήδη λογαριασμό? Συνδεθείτε.", 348 "signup.link.login" : "Έχετε ήδη λογαριασμό? Συνδεθείτε.",
349 "signup.password.label" : "Κωδικός πρόσβασης", 349 "signup.password.label" : "Κωδικός πρόσβασης",
350 "signup.submit.label" : "Δημιουργία λογαριασμού", 350 "signup.submit.label" : "Δημιουργία λογαριασμού",
351 "subscription.euTaxInfo" : "Πολίτες Ε.Ε.: Στις τιμές δεν περιλαμβάνονται τυχόν φόροι και άλλες τοπικές επιβαρύνσεις",
352 "subscription.features.ads" : "Τέλος στις διαφημίσεις",
353 "subscription.features.comingSoon" : "σύντομα",
354 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
355 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
356 "subscription.features.proxy" : "Proxy support for services",
357 "subscription.features.spellchecker" : "Support for spellchecker",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "Ο Premium λογαριασμός υποστήριξης Ferdi περιλαμβάνει",
360 "subscription.paymentSessionError" : "Δεν ήταν δυνατή η προετοιμασία της φόρμας πληρωμής",
361 "subscription.submit.label" : "Θέλω να βοηθήσω στην ανάπτυξη του Ferdi",
362 "subscription.type.free" : "δωρεάν",
363 "subscription.type.month" : "μήνας",
364 "subscription.type.year" : "έτος",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index dcb9d92a2..122739d03 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -1,50 +1,58 @@
1{ 1{
2 "app.errorHandler.action": "Reload", 2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "Something went wrong", 3 "app.errorHandler.headline": "Something went wrong",
4 "feature.announcements.changelog.headline": "Changes in Franz {version}", 4 "feature.announcements.changelog.headline": "Changes in Ferdi {version}",
5 "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting",
6 "feature.delayApp.text": "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.text": "Ferdi will continue in {seconds} seconds.",
7 "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Franz Professional", 7 "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional",
8 "feature.delayApp.trial.actionShort": "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial",
9 "feature.delayApp.trial.headline": "Get the free Franz 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 Franz 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.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 12 "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.",
13 "feature.shareFranz.action.email": "Send as email", 13 "feature.shareFranz.action.email": "Send as email",
14 "feature.shareFranz.action.facebook": "Share on Facebook", 14 "feature.shareFranz.action.facebook": "Share on Facebook",
15 "feature.shareFranz.action.twitter": "Share on Twitter", 15 "feature.shareFranz.action.twitter": "Share on Twitter",
16 "feature.shareFranz.headline": "Franz is better together!", 16 "feature.shareFranz.headline": "Ferdi is better together!",
17 "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
19 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
20 "feature.todos.premium.info": "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info": "Ferdi Todos are available to premium users now!",
21 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade": "Upgrade Account", 22 "feature.todos.premium.upgrade": "Upgrade Account",
23 "global.api.unhealthy": "Can't connect to Franz online services", 23 "global.api.unhealthy": "Can't connect to Ferdi online services",
24 "global.franzProRequired": "Franz Professional Required", 24 "global.franzProRequired": "Ferdi Professional Required",
25 "global.notConnectedToTheInternet": "You are not connected to the internet.", 25 "global.notConnectedToTheInternet": "You are not connected to the internet.",
26 "global.spellchecker.useDefault": "Use System Default ({default})", 26 "global.spellchecker.useDefault": "Use System Default ({default})",
27 "global.spellchecking.autodetect": "Detect language automatically", 27 "global.spellchecking.autodetect": "Detect language automatically",
28 "global.spellchecking.autodetect.short": "Automatic", 28 "global.spellchecking.autodetect.short": "Automatic",
29 "global.spellchecking.language": "Spell checking language", 29 "global.spellchecking.language": "Spell checking language",
30 "global.upgradeButton.upgradeToPro": "Upgrade to Franz Professional", 30 "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional",
31 "import.headline": "Import your Franz 4 services", 31 "import.headline": "Import your Ferdi 4 services",
32 "import.notSupportedHeadline": "Services not yet supported in Franz 5", 32 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
33 "import.skip.label": "I want to add services manually", 33 "import.skip.label": "I want to add services manually",
34 "import.submit.label": "Import services", 34 "import.submit.label": "Import services",
35 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
35 "infobar.buttonChangelog": "What is new?", 36 "infobar.buttonChangelog": "What is new?",
36 "infobar.buttonInstallUpdate": "Restart & install update", 37 "infobar.buttonInstallUpdate": "Restart & install update",
37 "infobar.buttonReloadServices": "Reload services", 38 "infobar.buttonReloadServices": "Reload services",
38 "infobar.requiredRequestsFailed": "Could not load services and user information", 39 "infobar.requiredRequestsFailed": "Could not load services and user information",
39 "infobar.servicesUpdated": "Your services have been updated.", 40 "infobar.servicesUpdated": "Your services have been updated.",
40 "infobar.trialActivated": "Your trial was successfully activated. Happy messaging!", 41 "infobar.trialActivated": "Your trial was successfully activated. Happy messaging!",
41 "infobar.updateAvailable": "A new update for Franz is available.", 42 "infobar.updateAvailable": "A new update for Ferdi is available.",
42 "invite.email.label": "Email address", 43 "invite.email.label": "Email address",
43 "invite.headline.friends": "Invite 3 of your friends or colleagues", 44 "invite.headline.friends": "Invite 3 of your friends or colleagues",
44 "invite.name.label": "Name", 45 "invite.name.label": "Name",
45 "invite.skip.label": "I want to do this later", 46 "invite.skip.label": "I want to do this later",
46 "invite.submit.label": "Send invites", 47 "invite.submit.label": "Send invites",
47 "invite.successInfo": "Invitations sent successfully", 48 "invite.successInfo": "Invitations sent successfully",
49 "locked.headline": "Locked",
50 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
51 "locked.invalidCredentials": "Password invalid",
52 "locked.password.label": "Password",
53 "locked.submit.label": "Unlock",
54 "login.customServerQuestion": "Using a custom Ferdi server?",
55 "login.customServerSuggestion": "Try importing your Franz account",
48 "login.email.label": "Email address", 56 "login.email.label": "Email address",
49 "login.headline": "Sign in", 57 "login.headline": "Sign in",
50 "login.invalidCredentials": "Email or password not valid", 58 "login.invalidCredentials": "Email or password not valid",
@@ -56,8 +64,9 @@
56 "login.tokenExpired": "Your session expired, please login again.", 64 "login.tokenExpired": "Your session expired, please login again.",
57 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 65 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 66 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
59 "menu.app.about": "About Franz", 67 "menu.app.about": "About Ferdi",
60 "menu.app.announcement": "What's new?", 68 "menu.app.announcement": "What's new?",
69 "menu.app.autohideMenuBar": "Auto-hide menu bar",
61 "menu.app.checkForUpdates": "Check for updates", 70 "menu.app.checkForUpdates": "Check for updates",
62 "menu.app.hide": "Hide", 71 "menu.app.hide": "Hide",
63 "menu.app.hideOthers": "Hide Others", 72 "menu.app.hideOthers": "Hide Others",
@@ -83,7 +92,7 @@
83 "menu.help.changelog": "Changelog", 92 "menu.help.changelog": "Changelog",
84 "menu.help.debugInfo": "Copy Debug Information", 93 "menu.help.debugInfo": "Copy Debug Information",
85 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 94 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
86 "menu.help.debugInfoCopiedHeadline": "Franz Debug Information", 95 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
87 "menu.help.learnMore": "Learn More", 96 "menu.help.learnMore": "Learn More",
88 "menu.help.privacy": "Privacy Statement", 97 "menu.help.privacy": "Privacy Statement",
89 "menu.help.support": "Support", 98 "menu.help.support": "Support",
@@ -95,9 +104,12 @@
95 "menu.todos": "Todos", 104 "menu.todos": "Todos",
96 "menu.todos.enableTodos": "Enable Todos", 105 "menu.todos.enableTodos": "Enable Todos",
97 "menu.view": "View", 106 "menu.view": "View",
107 "menu.view.back": "Back",
98 "menu.view.enterFullScreen": "Enter Full Screen", 108 "menu.view.enterFullScreen": "Enter Full Screen",
99 "menu.view.exitFullScreen": "Exit Full Screen", 109 "menu.view.exitFullScreen": "Exit Full Screen",
100 "menu.view.reloadFranz": "Reload Franz", 110 "menu.view.forward": "Forward",
111 "menu.view.lockFerdi": "Lock Ferdi",
112 "menu.view.reloadFranz": "Reload Ferdi",
101 "menu.view.reloadService": "Reload Service", 113 "menu.view.reloadService": "Reload Service",
102 "menu.view.resetZoom": "Actual Size", 114 "menu.view.resetZoom": "Actual Size",
103 "menu.view.toggleDevTools": "Toggle Developer Tools", 115 "menu.view.toggleDevTools": "Toggle Developer Tools",
@@ -132,19 +144,19 @@
132 "pricing.features.thirdPartyServices": "Install 3rd party services", 144 "pricing.features.thirdPartyServices": "Install 3rd party services",
133 "pricing.features.unlimitedServices": "Add unlimited services", 145 "pricing.features.unlimitedServices": "Add unlimited services",
134 "pricing.features.workspaces": "Workspaces", 146 "pricing.features.workspaces": "Workspaces",
135 "pricing.plan.free": "Franz Free", 147 "pricing.plan.free": "Ferdi Free",
136 "pricing.plan.legacy": "Franz Premium", 148 "pricing.plan.legacy": "Ferdi Premium",
137 "pricing.plan.personal": "Franz Personal", 149 "pricing.plan.personal": "Ferdi Personal",
138 "pricing.plan.personal-monthly": "Franz Personal Monthly", 150 "pricing.plan.personal-monthly": "Ferdi Personal Monthly",
139 "pricing.plan.personal-yearly": "Franz Personal Yearly", 151 "pricing.plan.personal-yearly": "Ferdi Personal Yearly",
140 "pricing.plan.pro": "Franz Professional", 152 "pricing.plan.pro": "Ferdi Professional",
141 "pricing.plan.pro-monthly": "Franz Professional Monthly", 153 "pricing.plan.pro-monthly": "Ferdi Professional Monthly",
142 "pricing.plan.pro-yearly": "Franz Professional Yearly", 154 "pricing.plan.pro-yearly": "Ferdi Professional Yearly",
143 "pricing.trial.cta.accept": "Yes, upgrade my account to Franz Professional", 155 "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional",
144 "pricing.trial.cta.skip": "Continue to Franz", 156 "pricing.trial.cta.skip": "Continue to Ferdi",
145 "pricing.trial.error": "Sorry, we could not activate your trial!", 157 "pricing.trial.error": "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline": "Franz Professional includes:", 158 "pricing.trial.features.headline": "Ferdi Professional includes:",
147 "pricing.trial.headline": "Franz Professional", 159 "pricing.trial.headline": "Ferdi Professional",
148 "pricing.trial.subheadline": "Your personal welcome offer:", 160 "pricing.trial.subheadline": "Your personal welcome offer:",
149 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 161 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
150 "pricing.trial.terms.headline": "No strings attached", 162 "pricing.trial.terms.headline": "No strings attached",
@@ -161,20 +173,22 @@
161 "service.errorHandler.message": "Error", 173 "service.errorHandler.message": "Error",
162 "service.errorHandler.text": "{name} has failed to load.", 174 "service.errorHandler.text": "{name} has failed to load.",
163 "service.restrictedHandler.action": "Upgrade Account", 175 "service.restrictedHandler.action": "Upgrade Account",
164 "service.restrictedHandler.customUrl.headline": "Franz Professional Plan required", 176 "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required",
165 "service.restrictedHandler.customUrl.text": "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", 177 "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.",
166 "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.", 178 "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.",
167 "service.restrictedHandler.serviceLimit.text": "Please upgrade your account to use more than {count} services.", 179 "service.restrictedHandler.serviceLimit.text": "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading": "Loading", 180 "service.webviewLoader.loading": "Loading",
169 "services.getStarted": "Get started", 181 "services.getStarted": "Get started",
170 "services.welcome": "Welcome to Franz", 182 "services.login": "Please login to use Ferdi.",
183 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
184 "services.welcome": "Welcome to Ferdi",
171 "settings.account.account.editButton": "Edit account", 185 "settings.account.account.editButton": "Edit account",
172 "settings.account.accountType.basic": "Basic Account", 186 "settings.account.accountType.basic": "Basic Account",
173 "settings.account.accountType.premium": "Premium Supporter Account", 187 "settings.account.accountType.premium": "Premium Supporter Account",
174 "settings.account.buttonSave": "Update profile", 188 "settings.account.buttonSave": "Update profile",
175 "settings.account.deleteAccount": "Delete account", 189 "settings.account.deleteAccount": "Delete account",
176 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", 190 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
177 "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.", 191 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
178 "settings.account.headline": "Account", 192 "settings.account.headline": "Account",
179 "settings.account.headlineAccount": "Account information", 193 "settings.account.headlineAccount": "Account information",
180 "settings.account.headlineDangerZone": "Danger Zone", 194 "settings.account.headlineDangerZone": "Danger Zone",
@@ -182,8 +196,8 @@
182 "settings.account.headlinePassword": "Change password", 196 "settings.account.headlinePassword": "Change password",
183 "settings.account.headlineProfile": "Update profile", 197 "settings.account.headlineProfile": "Update profile",
184 "settings.account.headlineSubscription": "Your subscription", 198 "settings.account.headlineSubscription": "Your subscription",
185 "settings.account.headlineTrialUpgrade": "Get the free 14 day Franz Professional Trial", 199 "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial",
186 "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Franz experience", 200 "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Ferdi experience",
187 "settings.account.invoiceDownload": "Download", 201 "settings.account.invoiceDownload": "Download",
188 "settings.account.manageSubscription.label": "Manage your subscription", 202 "settings.account.manageSubscription.label": "Manage your subscription",
189 "settings.account.successInfo": "Your changes have been saved", 203 "settings.account.successInfo": "Your changes have been saved",
@@ -192,28 +206,33 @@
192 "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", 206 "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.",
193 "settings.account.tryReloadServices": "Try again", 207 "settings.account.tryReloadServices": "Try again",
194 "settings.account.tryReloadUserInfoRequest": "Try again", 208 "settings.account.tryReloadUserInfoRequest": "Try again",
195 "settings.account.upgradeToPro.label": "Upgrade to Franz Professional", 209 "settings.account.upgradeToPro.label": "Upgrade to Ferdi Professional",
196 "settings.account.userInfoRequestFailed": "Could not load user information", 210 "settings.account.userInfoRequestFailed": "Could not load user information",
197 "settings.account.yourLicense": "Your Franz License", 211 "settings.account.yourLicense": "Your Ferdi License",
198 "settings.app.buttonClearAllCache": "Clear cache", 212 "settings.app.buttonClearAllCache": "Clear cache",
199 "settings.app.buttonInstallUpdate": "Restart & install update", 213 "settings.app.buttonInstallUpdate": "Restart & install update",
200 "settings.app.buttonSearchForUpdate": "Check for updates", 214 "settings.app.buttonSearchForUpdate": "Check for updates",
201 "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.", 215 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
202 "settings.app.currentVersion": "Current version:", 216 "settings.app.currentVersion": "Current version:",
203 "settings.app.form.autoLaunchInBackground": "Open in background", 217 "settings.app.form.autoLaunchInBackground": "Open in background",
204 "settings.app.form.autoLaunchOnStart": "Launch Franz on start", 218 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start",
205 "settings.app.form.beta": "Include beta versions", 219 "settings.app.form.beta": "Include beta versions",
206 "settings.app.form.darkMode": "Join the Dark Side", 220 "settings.app.form.darkMode": "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 221 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
222 "settings.app.form.enableLock": "Enable Ferdi password lock",
208 "settings.app.form.enableSpellchecking": "Enable spell checking", 223 "settings.app.form.enableSpellchecking": "Enable spell checking",
209 "settings.app.form.enableSystemTray": "Show Franz in system tray", 224 "settings.app.form.enableSystemTray": "Show Ferdi in system tray",
210 "settings.app.form.enableTodos": "Enable Franz Todos", 225 "settings.app.form.enableTodos": "Enable Ferdi Todos",
211 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 226 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
212 "settings.app.form.language": "Language", 227 "settings.app.form.language": "Language",
213 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", 228 "settings.app.form.lockPassword": "Ferdi Lock password",
214 "settings.app.form.runInBackground": "Keep Franz in background when closing the window", 229 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
230 "settings.app.form.privateNotifications": "Don't show message content in notifications",
231 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
232 "settings.app.form.server": "Server",
215 "settings.app.form.showDisabledServices": "Display disabled services tabs", 233 "settings.app.form.showDisabledServices": "Display disabled services tabs",
216 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 234 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
235 "settings.app.form.todoServer": "Todo Server",
217 "settings.app.headline": "Settings", 236 "settings.app.headline": "Settings",
218 "settings.app.headlineAdvanced": "Advanced", 237 "settings.app.headlineAdvanced": "Advanced",
219 "settings.app.headlineAppearance": "Appearance", 238 "settings.app.headlineAppearance": "Appearance",
@@ -221,12 +240,16 @@
221 "settings.app.headlineLanguage": "Language", 240 "settings.app.headlineLanguage": "Language",
222 "settings.app.headlineUpdates": "Updates", 241 "settings.app.headlineUpdates": "Updates",
223 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", 242 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
243 "settings.app.lockedPassword": "Ferdi Lock Password",
244 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
224 "settings.app.restartRequired": "Changes require restart", 245 "settings.app.restartRequired": "Changes require restart",
246 "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.",
225 "settings.app.subheadlineCache": "Cache", 247 "settings.app.subheadlineCache": "Cache",
226 "settings.app.translationHelp": "Help us to translate Franz into your language.", 248 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)",
249 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
227 "settings.app.updateStatusAvailable": "Update available, downloading...", 250 "settings.app.updateStatusAvailable": "Update available, downloading...",
228 "settings.app.updateStatusSearching": "Is searching for update", 251 "settings.app.updateStatusSearching": "Is searching for update",
229 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", 252 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi",
230 "settings.invite.headline": "Invite Friends", 253 "settings.invite.headline": "Invite Friends",
231 "settings.navigation.account": "Account", 254 "settings.navigation.account": "Account",
232 "settings.navigation.availableServices": "Available services", 255 "settings.navigation.availableServices": "Available services",
@@ -256,7 +279,7 @@
256 "settings.service.form.addServiceHeadline": "Add {name}", 279 "settings.service.form.addServiceHeadline": "Add {name}",
257 "settings.service.form.availableServices": "Available services", 280 "settings.service.form.availableServices": "Available services",
258 "settings.service.form.customUrl": "Custom server", 281 "settings.service.form.customUrl": "Custom server",
259 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", 282 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Ferdi Premium Supporter Account.",
260 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", 283 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account",
261 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", 284 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
262 "settings.service.form.deleteButton": "Delete service", 285 "settings.service.form.deleteButton": "Delete service",
@@ -278,11 +301,11 @@
278 "settings.service.form.name": "Name", 301 "settings.service.form.name": "Name",
279 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", 302 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host": "Proxy Host/IP", 303 "settings.service.form.proxy.host": "Proxy Host/IP",
281 "settings.service.form.proxy.info": "Proxy settings will not synced with the Franz servers.", 304 "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled": "Use Proxy", 305 "settings.service.form.proxy.isEnabled": "Use Proxy",
283 "settings.service.form.proxy.password": "Password (optional)", 306 "settings.service.form.proxy.password": "Password (optional)",
284 "settings.service.form.proxy.port": "Port", 307 "settings.service.form.proxy.port": "Port",
285 "settings.service.form.proxy.restartInfo": "Please restart Franz after changing proxy Settings.", 308 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user": "User (optional)", 309 "settings.service.form.proxy.user": "User (optional)",
287 "settings.service.form.saveButton": "Save service", 310 "settings.service.form.saveButton": "Save service",
288 "settings.service.form.tabHosted": "Hosted", 311 "settings.service.form.tabHosted": "Hosted",
@@ -299,8 +322,8 @@
299 "settings.services.tooltip.isMuted": "All sounds are muted", 322 "settings.services.tooltip.isMuted": "All sounds are muted",
300 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 323 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
301 "settings.services.updatedInfo": "Your changes have been saved", 324 "settings.services.updatedInfo": "Your changes have been saved",
302 "settings.team.contentHeadline": "Franz for Teams", 325 "settings.team.contentHeadline": "Ferdi for Teams",
303 "settings.team.copy": "Franz 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!", 326 "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!",
304 "settings.team.headline": "Team", 327 "settings.team.headline": "Team",
305 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 328 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction": "Manage your Team on meetfranz.com", 329 "settings.team.manageAction": "Manage your Team on meetfranz.com",
@@ -318,6 +341,8 @@
318 "settings.workspace.add.form.submitButton": "Create workspace", 341 "settings.workspace.add.form.submitButton": "Create workspace",
319 "settings.workspace.form.buttonDelete": "Delete workspace", 342 "settings.workspace.form.buttonDelete": "Delete workspace",
320 "settings.workspace.form.buttonSave": "Save workspace", 343 "settings.workspace.form.buttonSave": "Save workspace",
344 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
345 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
321 "settings.workspace.form.name": "Name", 346 "settings.workspace.form.name": "Name",
322 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", 347 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
323 "settings.workspace.form.yourWorkspaces": "Your workspaces", 348 "settings.workspace.form.yourWorkspaces": "Your workspaces",
@@ -326,14 +351,15 @@
326 "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", 351 "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces": "Try again", 352 "settings.workspaces.tryReloadWorkspaces": "Try again",
328 "settings.workspaces.updatedInfo": "Your changes have been saved", 353 "settings.workspaces.updatedInfo": "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Franz Workspaces", 354 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo": "Franz 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.", 355 "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.",
331 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", 356 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
332 "sidebar.addNewService": "Add new service", 357 "sidebar.addNewService": "Add new service",
333 "sidebar.closeTodosDrawer": "Close Franz Todos", 358 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
334 "sidebar.closeWorkspaceDrawer": "Close workspace drawer", 359 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
360 "sidebar.lockFerdi": "Lock Ferdi",
335 "sidebar.muteApp": "Disable notifications & audio", 361 "sidebar.muteApp": "Disable notifications & audio",
336 "sidebar.openTodosDrawer": "Open Franz Todos", 362 "sidebar.openTodosDrawer": "Open Ferdi Todos",
337 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 363 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
338 "sidebar.settings": "Settings", 364 "sidebar.settings": "Settings",
339 "sidebar.unmuteApp": "Enable notifications & audio", 365 "sidebar.unmuteApp": "Enable notifications & audio",
@@ -342,18 +368,18 @@
342 "signup.firstname.label": "First Name", 368 "signup.firstname.label": "First Name",
343 "signup.headline": "Sign up", 369 "signup.headline": "Sign up",
344 "signup.lastname.label": "Last Name", 370 "signup.lastname.label": "Last Name",
345 "signup.legal.info": "By creating a Franz account you accept the", 371 "signup.legal.info": "By creating a Ferdi account you accept the",
346 "signup.legal.privacy": "Privacy Statement", 372 "signup.legal.privacy": "Privacy Statement",
347 "signup.legal.terms": "Terms of service", 373 "signup.legal.terms": "Terms of service",
348 "signup.link.login": "Already have an account, sign in?", 374 "signup.link.login": "Already have an account, sign in?",
349 "signup.password.label": "Password", 375 "signup.password.label": "Password",
350 "signup.submit.label": "Create account", 376 "signup.submit.label": "Create account",
351 "subscription.cta.activateTrial": "Yes, start the free Franz Professional trial", 377 "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial",
352 "subscription.cta.allOptions": "See all options", 378 "subscription.cta.allOptions": "See all options",
353 "subscription.cta.choosePlan": "Choose your plan", 379 "subscription.cta.choosePlan": "Choose your plan",
354 "subscription.includedProFeatures": "The Franz Professional Plan includes:", 380 "subscription.includedProFeatures": "The Ferdi Professional Plan includes:",
355 "subscription.teaser.includedFeatures": "Paid Franz Plans include:", 381 "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:",
356 "subscription.teaser.intro": "Franz 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!", 382 "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!",
357 "subscriptionPopup.buttonCancel": "Cancel", 383 "subscriptionPopup.buttonCancel": "Cancel",
358 "subscriptionPopup.buttonDone": "Done", 384 "subscriptionPopup.buttonDone": "Done",
359 "tabs.item.deleteService": "Delete service", 385 "tabs.item.deleteService": "Delete service",
@@ -380,7 +406,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", 406 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge": "Premium feature", 407 "workspaceDrawer.proFeatureBadge": "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", 408 "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz 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>", 409 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 410 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo": "Switching to" 411 "workspaces.switchingIndicator.switchingTo": "Switching to"
386} \ No newline at end of file 412} \ No newline at end of file
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index d5b8b777f..eb8eda18e 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -7,7 +7,7 @@
7 "feature.delayApp.trial.action" : "Oui, je veux les 14 jours d'essai gratuits de Franz Professionnel", 7 "feature.delayApp.trial.action" : "Oui, je veux les 14 jours d'essai gratuits de Franz Professionnel",
8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial",
9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action" : "Acheter une license Franz", 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.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 12 "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.",
13 "feature.shareFranz.action.email" : "Envoyer par mail", 13 "feature.shareFranz.action.email" : "Envoyer par mail",
@@ -20,7 +20,7 @@
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", 23 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", 25 "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.",
26 "global.spellchecker.useDefault" : "Par défaut ({default})", 26 "global.spellchecker.useDefault" : "Par défaut ({default})",
@@ -29,7 +29,7 @@
29 "global.spellchecking.language" : "Langue de la vérification orthographique", 29 "global.spellchecking.language" : "Langue de la vérification orthographique",
30 "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", 30 "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional",
31 "import.headline" : "Importez vos services depuis la version 4 de Franz.", 31 "import.headline" : "Importez vos services depuis la version 4 de Franz.",
32 "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par la version 5 de Franz", 32 "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par la version 5 de Ferdi",
33 "import.skip.label" : "Je veux ajouter des services manuellement", 33 "import.skip.label" : "Je veux ajouter des services manuellement",
34 "import.submit.label" : "Importer des services", 34 "import.submit.label" : "Importer des services",
35 "infobar.buttonChangelog" : "Nouveautés", 35 "infobar.buttonChangelog" : "Nouveautés",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", 56 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "À propos de Franz", 59 "menu.app.about" : "À propos de Ferdi",
60 "menu.app.announcement" : "Quoi de neuf ? ", 60 "menu.app.announcement" : "Quoi de neuf ? ",
61 "menu.app.checkForUpdates" : "Vérifier les mises à jour", 61 "menu.app.checkForUpdates" : "Vérifier les mises à jour",
62 "menu.app.hide" : "Masquer", 62 "menu.app.hide" : "Masquer",
@@ -97,7 +97,7 @@
97 "menu.view" : "Aperçu", 97 "menu.view" : "Aperçu",
98 "menu.view.enterFullScreen" : "Entrer en mode plein écran", 98 "menu.view.enterFullScreen" : "Entrer en mode plein écran",
99 "menu.view.exitFullScreen" : "Sortir du mode plein écran", 99 "menu.view.exitFullScreen" : "Sortir du mode plein écran",
100 "menu.view.reloadFranz" : "Recharger Franz", 100 "menu.view.reloadFranz" : "Recharger Ferdi",
101 "menu.view.reloadService" : "Redémarrer le service", 101 "menu.view.reloadService" : "Redémarrer le service",
102 "menu.view.resetZoom" : "Taille actuelle", 102 "menu.view.resetZoom" : "Taille actuelle",
103 "menu.view.toggleDevTools" : "Activer les outils développeur", 103 "menu.view.toggleDevTools" : "Activer les outils développeur",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Chargement (c'est l'heure du café...)", 168 "service.webviewLoader.loading" : "Chargement (c'est l'heure du café...)",
169 "services.getStarted" : "Commencer", 169 "services.getStarted" : "Commencer",
170 "services.welcome" : "Bienvenue dans Franz", 170 "services.welcome" : "Bienvenue dans Ferdi",
171 "settings.account.account.editButton" : "Modifier le compte", 171 "settings.account.account.editButton" : "Modifier le compte",
172 "settings.account.accountType.basic" : "Compte de base", 172 "settings.account.accountType.basic" : "Compte de base",
173 "settings.account.accountType.premium" : "Compte supporteur premium", 173 "settings.account.accountType.premium" : "Compte supporteur premium",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Vider le cache", 198 "settings.app.buttonClearAllCache" : "Vider le cache",
199 "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour", 199 "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour",
200 "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour", 200 "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour",
201 "settings.app.cacheInfo" : "Le cache de Franz occupe actuellement {size} en espace disque.", 201 "settings.app.cacheInfo" : "Le cache de Ferdi occupe actuellement {size} en espace disque.",
202 "settings.app.currentVersion" : "Version actuelle :", 202 "settings.app.currentVersion" : "Version actuelle :",
203 "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan", 203 "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan",
204 "settings.app.form.autoLaunchOnStart" : "Lancer Franz au démarrage", 204 "settings.app.form.autoLaunchOnStart" : "Lancer Ferdi au démarrage",
205 "settings.app.form.beta" : "Accepter les versions bêta", 205 "settings.app.form.beta" : "Accepter les versions bêta",
206 "settings.app.form.darkMode" : "Activer le thème sombre", 206 "settings.app.form.darkMode" : "Activer le thème sombre",
207 "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU", 207 "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Langue", 212 "settings.app.form.language" : "Langue",
213 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification", 213 "settings.app.form.minimizeToSystemTray" : "Minimiser Ferdi dans la zone de notification",
214 "settings.app.form.runInBackground" : "Garder Franz ouvert en arrière-plan à la fermeture de la fenêtre", 214 "settings.app.form.runInBackground" : "Garder Ferdi ouvert en arrière-plan à la fermeture de la fenêtre",
215 "settings.app.form.showDisabledServices" : "Afficher les onglets des services désactivés", 215 "settings.app.form.showDisabledServices" : "Afficher les onglets des services désactivés",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Afficher les badges de messages non lus quand les notifications sont désactivées.", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Afficher les badges de messages non lus quand les notifications sont désactivées.",
217 "settings.app.headline" : "Paramètres", 217 "settings.app.headline" : "Paramètres",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Les traductions officielles sont l'anglais et l'allemand. Toutes les autres langues sont des traductions faites par la communauté.", 223 "settings.app.languageDisclaimer" : "Les traductions officielles sont l'anglais et l'allemand. Toutes les autres langues sont des traductions faites par la communauté.",
224 "settings.app.restartRequired" : "Les modifications nécessitent un redémarrage", 224 "settings.app.restartRequired" : "Les modifications nécessitent un redémarrage",
225 "settings.app.subheadlineCache" : "Cache", 225 "settings.app.subheadlineCache" : "Cache",
226 "settings.app.translationHelp" : "Aidez-nous à traduire Franz dans votre langue.", 226 "settings.app.translationHelp" : "Aidez-nous à traduire Ferdi dans votre langue.",
227 "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...", 227 "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...",
228 "settings.app.updateStatusSearching" : "Recherche d'une mise à jour", 228 "settings.app.updateStatusSearching" : "Recherche d'une mise à jour",
229 "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz", 229 "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Ferdi",
230 "settings.invite.headline" : "Invite des amis", 230 "settings.invite.headline" : "Invite des amis",
231 "settings.navigation.account" : "Compte", 231 "settings.navigation.account" : "Compte",
232 "settings.navigation.availableServices" : "Services disponibles", 232 "settings.navigation.availableServices" : "Services disponibles",
@@ -282,7 +282,7 @@
282 "settings.service.form.proxy.isEnabled" : "Utiliser un proxy", 282 "settings.service.form.proxy.isEnabled" : "Utiliser un proxy",
283 "settings.service.form.proxy.password" : "Mot de passe (facultatif)", 283 "settings.service.form.proxy.password" : "Mot de passe (facultatif)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Franz après avoir modifié les paramètres proxy.", 285 "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Ferdi après avoir modifié les paramètres proxy.",
286 "settings.service.form.proxy.user" : "Utilisateur (facultatif)", 286 "settings.service.form.proxy.user" : "Utilisateur (facultatif)",
287 "settings.service.form.saveButton" : "Enregistrer le service", 287 "settings.service.form.saveButton" : "Enregistrer le service",
288 "settings.service.form.tabHosted" : "Hébergé", 288 "settings.service.form.tabHosted" : "Hébergé",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Tous les sons sont coupés", 299 "settings.services.tooltip.isMuted" : "Tous les sons sont coupés",
300 "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.", 300 "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.",
301 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées", 301 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées",
302 "settings.team.contentHeadline" : "Franz pour les équipes", 302 "settings.team.contentHeadline" : "Ferdi pour les équipes",
303 "settings.team.copy" : "Franz for Teams t'offre la possibilité d'inviter des collègues dans ton équipe de travail en leur envoyant des invitations par courrier électronique et en gérant leurs abonnements dans les préférences de ton compte. Ne perds pas de temps à les gérer individuellement les factures multiples et les différents cycles de facturation - il suffit d'une seule équipe de travail pour gérer tout ça!", 303 "settings.team.copy" : "Ferdi for Teams t'offre la possibilité d'inviter des collègues dans ton équipe de travail en leur envoyant des invitations par courrier électronique et en gérant leurs abonnements dans les préférences de ton compte. Ne perds pas de temps à les gérer individuellement les factures multiples et les différents cycles de facturation - il suffit d'une seule équipe de travail pour gérer tout ça!",
304 "settings.team.headline" : "Équipe de travail", 304 "settings.team.headline" : "Équipe de travail",
305 "settings.team.intro" : "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.", 305 "settings.team.intro" : "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.",
306 "settings.team.manageAction" : "Gère ton équipe sur meetfranz.com", 306 "settings.team.manageAction" : "Gère ton équipe sur meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Vous n'avez pas encore ajouté d'espace de travail.", 326 "settings.workspaces.noWorkspacesAdded" : "Vous n'avez pas encore ajouté d'espace de travail.",
327 "settings.workspaces.tryReloadWorkspaces" : "Réessayer", 327 "settings.workspaces.tryReloadWorkspaces" : "Réessayer",
328 "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées", 328 "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées",
329 "settings.workspaces.workspaceFeatureHeadline" : "Présentation des Espaces de travail de Franz", 329 "settings.workspaces.workspaceFeatureHeadline" : "Présentation des Espaces de travail de Ferdi",
330 "settings.workspaces.workspaceFeatureInfo" : "Les Espaces de travail de Franz vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment. Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.", 330 "settings.workspaces.workspaceFeatureInfo" : "Les Espaces de travail de Ferdi vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment. Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.",
331 "settings.workspaces.workspacesRequestFailed" : "Impossible de charger vos espaces de travail", 331 "settings.workspaces.workspacesRequestFailed" : "Impossible de charger vos espaces de travail",
332 "sidebar.addNewService" : "Ajouter un nouveau service", 332 "sidebar.addNewService" : "Ajouter un nouveau service",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "Vous avez déjà un compte ? Connectez-vous", 348 "signup.link.login" : "Vous avez déjà un compte ? Connectez-vous",
349 "signup.password.label" : "Mot de passe", 349 "signup.password.label" : "Mot de passe",
350 "signup.submit.label" : "Créer un compte", 350 "signup.submit.label" : "Créer un compte",
351 "subscription.euTaxInfo" : "Résidents de l'UE : une taxe locale peut s'appliquer",
352 "subscription.features.ads" : "Plus de pubs !",
353 "subscription.features.comingSoon" : "Bientôt disponible",
354 "subscription.features.noInterruptions" : "Aucun délai dans l'application ni de harcèlement pour mettre à niveau la licence",
355 "subscription.features.onpremise.mattermost" : "Ajouter des services auto-hébergés comme Mattermost",
356 "subscription.features.proxy" : "Support proxy pour les services",
357 "subscription.features.spellchecker" : "Prise en charge du correcteur orthographique",
358 "subscription.features.workspaces" : "Organisez vos services en espaces de travail",
359 "subscription.includedFeatures" : "Le compte payant Supporter Premium Ferdi inclut",
360 "subscription.paymentSessionError" : "Initialisation du paiement impossible",
361 "subscription.submit.label" : "Je souhaite aider au développement de Ferdi",
362 "subscription.type.free" : "gratuit",
363 "subscription.type.month" : "mois",
364 "subscription.type.year" : "année",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Créez votre premier espace de travail", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Créez votre premier espace de travail",
381 "workspaceDrawer.proFeatureBadge" : "Fonctionnalité premium", 395 "workspaceDrawer.proFeatureBadge" : "Fonctionnalité premium",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Réactivez votre compte premium", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Réactivez votre compte premium",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Les Espaces de travail de Franz vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment.<\/p><p>Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.<\/p>", 397 "workspaceDrawer.workspaceFeatureInfo" : "<p>Les Espaces de travail de Ferdi vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment.<\/p><p>Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.<\/p>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Editer les paramètres de l'espace de travail", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Editer les paramètres de l'espace de travail",
385 "workspaces.switchingIndicator.switchingTo" : "Changement vers" 399 "workspaces.switchingIndicator.switchingTo" : "Changement vers"
386} 400}
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index 76b2127e8..503fe6e08 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
@@ -56,10 +56,10 @@
56 "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.", 56 "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Faoi Franz", 59 "menu.app.about" : "Faoi Ferdi",
60 "menu.app.announcement" : "What's new?", 60 "menu.app.announcement" : "What's new?",
61 "menu.app.checkForUpdates" : "Cuardaigh le nuashonruithe", 61 "menu.app.checkForUpdates" : "Cuardaigh le nuashonruithe",
62 "menu.app.hide" : "Cuir Franz i bhfolach", 62 "menu.app.hide" : "Cuir Ferdi i bhfolach",
63 "menu.app.hideOthers" : "Folaigh feidhmchláir eile", 63 "menu.app.hideOthers" : "Folaigh feidhmchláir eile",
64 "menu.app.quit" : "Scoir", 64 "menu.app.quit" : "Scoir",
65 "menu.app.settings" : "Socruithe", 65 "menu.app.settings" : "Socruithe",
@@ -97,7 +97,7 @@
97 "menu.view" : "Amharc", 97 "menu.view" : "Amharc",
98 "menu.view.enterFullScreen" : "Cuir isteach mód lánscáileáin", 98 "menu.view.enterFullScreen" : "Cuir isteach mód lánscáileáin",
99 "menu.view.exitFullScreen" : "Scoir mód lánscáileáin", 99 "menu.view.exitFullScreen" : "Scoir mód lánscáileáin",
100 "menu.view.reloadFranz" : "Athlódáil Franz", 100 "menu.view.reloadFranz" : "Athlódáil Ferdi",
101 "menu.view.reloadService" : "Athlódáil seirbhís", 101 "menu.view.reloadService" : "Athlódáil seirbhís",
102 "menu.view.resetZoom" : "Fíormhéid", 102 "menu.view.resetZoom" : "Fíormhéid",
103 "menu.view.toggleDevTools" : "Scoránaigh uirlis forbróra", 103 "menu.view.toggleDevTools" : "Scoránaigh uirlis forbróra",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Cuir tús", 169 "services.getStarted" : "Cuir tús",
170 "services.welcome" : "Fáilte go Franz", 170 "services.welcome" : "Fáilte go Ferdi",
171 "settings.account.account.editButton" : "Cuir cuntas in eagar", 171 "settings.account.account.editButton" : "Cuir cuntas in eagar",
172 "settings.account.accountType.basic" : "Bunchuntas", 172 "settings.account.accountType.basic" : "Bunchuntas",
173 "settings.account.accountType.premium" : "Cuntas Phŕeimhthacadóra Franz", 173 "settings.account.accountType.premium" : "Cuntas Phŕeimhthacadóra Ferdi",
174 "settings.account.buttonSave" : "Nuashonraigh próifíl", 174 "settings.account.buttonSave" : "Nuashonraigh próifíl",
175 "settings.account.deleteAccount" : "Scrios cuntas", 175 "settings.account.deleteAccount" : "Scrios cuntas",
176 "settings.account.deleteEmailSent" : "Fuair tú ríomhphost chun scriosadh do chuntais a dheimhniú. Ní féidir do chuntas agus do chuid sonraí a thabhairt ar ais!", 176 "settings.account.deleteEmailSent" : "Fuair tú ríomhphost chun scriosadh do chuntais a dheimhniú. Ní féidir do chuntas agus do chuid sonraí a thabhairt ar ais!",
177 "settings.account.deleteInfo" : "Más rud é nár ghá cuntas Franz a bheith agat a thuilleadh, is féidir do chuntas agus gach sonraí riachtanach a scriosadh anseo.", 177 "settings.account.deleteInfo" : "Más rud é nár ghá cuntas Ferdi a bheith agat a thuilleadh, is féidir do chuntas agus gach sonraí riachtanach a scriosadh anseo.",
178 "settings.account.headline" : "Cuntas", 178 "settings.account.headline" : "Cuntas",
179 "settings.account.headlineAccount" : "Eolas faoin gcuntas", 179 "settings.account.headlineAccount" : "Eolas faoin gcuntas",
180 "settings.account.headlineDangerZone" : "Scrios cuntas", 180 "settings.account.headlineDangerZone" : "Scrios cuntas",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Glan taisce", 198 "settings.app.buttonClearAllCache" : "Glan taisce",
199 "settings.app.buttonInstallUpdate" : "Atosaigh ⁊ suiteáil nuashonrú", 199 "settings.app.buttonInstallUpdate" : "Atosaigh ⁊ suiteáil nuashonrú",
200 "settings.app.buttonSearchForUpdate" : "Cuardaigh le nuashonruithe", 200 "settings.app.buttonSearchForUpdate" : "Cuardaigh le nuashonruithe",
201 "settings.app.cacheInfo" : "Tá taisce Franz ag baint úsáid as {size} den spás diosca.", 201 "settings.app.cacheInfo" : "Tá taisce Ferdi ag baint úsáid as {size} den spás diosca.",
202 "settings.app.currentVersion" : "Leagan reatha:", 202 "settings.app.currentVersion" : "Leagan reatha:",
203 "settings.app.form.autoLaunchInBackground" : "Oscail sa chúlra", 203 "settings.app.form.autoLaunchInBackground" : "Oscail sa chúlra",
204 "settings.app.form.autoLaunchOnStart" : "Láinseáil Franz ón tús", 204 "settings.app.form.autoLaunchOnStart" : "Láinseáil Ferdi ón tús",
205 "settings.app.form.beta" : "Cuir leagain béite san áireamh", 205 "settings.app.form.beta" : "Cuir leagain béite san áireamh",
206 "settings.app.form.darkMode" : "Join the Dark Side", 206 "settings.app.form.darkMode" : "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghéarú APG", 207 "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghéarú APG",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Teanga", 212 "settings.app.form.language" : "Teanga",
213 "settings.app.form.minimizeToSystemTray" : "Íoslaghdaigh Franz chuig tráidire an chórais", 213 "settings.app.form.minimizeToSystemTray" : "Íoslaghdaigh Ferdi chuig tráidire an chórais",
214 "settings.app.form.runInBackground" : "Coimeád Franz sa chúlra nuair a dhúntar an fhuinneog", 214 "settings.app.form.runInBackground" : "Coimeád Ferdi sa chúlra nuair a dhúntar an fhuinneog",
215 "settings.app.form.showDisabledServices" : "Taispeáin tabanna do sheirbhísí dhíchumasaithe", 215 "settings.app.form.showDisabledServices" : "Taispeáin tabanna do sheirbhísí dhíchumasaithe",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Taispeáin teachtaireachtaí neamhléite, nuair a dhíchumasaítear fógraí", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Taispeáin teachtaireachtaí neamhléite, nuair a dhíchumasaítear fógraí",
217 "settings.app.headline" : "Socruithe", 217 "settings.app.headline" : "Socruithe",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Ní gá atosú chun athruithe a chur i bhfeidhm.", 224 "settings.app.restartRequired" : "Ní gá atosú chun athruithe a chur i bhfeidhm.",
225 "settings.app.subheadlineCache" : "Taisce", 225 "settings.app.subheadlineCache" : "Taisce",
226 "settings.app.translationHelp" : "Cabhraigh linn Franz a aistriú i do theanga.", 226 "settings.app.translationHelp" : "Cabhraigh linn Ferdi a aistriú i do theanga.",
227 "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag íoslódáil...", 227 "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag íoslódáil...",
228 "settings.app.updateStatusSearching" : "Ag cuardach le nuashonruithe", 228 "settings.app.updateStatusSearching" : "Ag cuardach le nuashonruithe",
229 "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagan is deireanaí de Franz", 229 "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagan is deireanaí de Ferdi",
230 "settings.invite.headline" : "Tabhair cuireadh do thriúr chara", 230 "settings.invite.headline" : "Tabhair cuireadh do thriúr chara",
231 "settings.navigation.account" : "Cuntas", 231 "settings.navigation.account" : "Cuntas",
232 "settings.navigation.availableServices" : "Seirbhísí le fáil", 232 "settings.navigation.availableServices" : "Seirbhísí le fáil",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Cuir {name} leis", 256 "settings.service.form.addServiceHeadline" : "Cuir {name} leis",
257 "settings.service.form.availableServices" : "Seirbhísí le fáil", 257 "settings.service.form.availableServices" : "Seirbhísí le fáil",
258 "settings.service.form.customUrl" : "Freastalaí saincheaptha", 258 "settings.service.form.customUrl" : "Freastalaí saincheaptha",
259 "settings.service.form.customUrlPremiumInfo" : "Chun seirbhísí féinóstáilte a chur le Franz, ní gá Cuntas Phŕeimhthacadóra Franz a bheith agat.", 259 "settings.service.form.customUrlPremiumInfo" : "Chun seirbhísí féinóstáilte a chur le Franz, ní gá Cuntas Phŕeimhthacadóra Ferdi a bheith agat.",
260 "settings.service.form.customUrlUpgradeAccount" : "Uasghrádaigh do chuntas", 260 "settings.service.form.customUrlUpgradeAccount" : "Uasghrádaigh do chuntas",
261 "settings.service.form.customUrlValidationError" : "Ní féidir seirbhís {name} saincheaptha a dheimhniú", 261 "settings.service.form.customUrlValidationError" : "Ní féidir seirbhís {name} saincheaptha a dheimhniú",
262 "settings.service.form.deleteButton" : "Scrios seirbhís", 262 "settings.service.form.deleteButton" : "Scrios seirbhís",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Ainm", 278 "settings.service.form.name" : "Ainm",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "Sábháil seirbhís", 287 "settings.service.form.saveButton" : "Sábháil seirbhís",
288 "settings.service.form.tabHosted" : "Óstáilte", 288 "settings.service.form.tabHosted" : "Óstáilte",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Tachtar gach fuaim", 299 "settings.services.tooltip.isMuted" : "Tachtar gach fuaim",
300 "settings.services.tooltip.notificationsDisabled" : "Fógraí dhíchumasaithe", 300 "settings.services.tooltip.notificationsDisabled" : "Fógraí dhíchumasaithe",
301 "settings.services.updatedInfo" : "Sábháiltear do chuid athruithe", 301 "settings.services.updatedInfo" : "Sábháiltear do chuid athruithe",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Foireann", 304 "settings.team.headline" : "Foireann",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Atriail", 327 "settings.workspaces.tryReloadWorkspaces" : "Atriail",
328 "settings.workspaces.updatedInfo" : "Your changes have been saved", 328 "settings.workspaces.updatedInfo" : "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Cuir seirbhís nua leis", 332 "sidebar.addNewService" : "Cuir seirbhís nua leis",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,12 +342,26 @@
342 "signup.firstname.label" : "Céadainm", 342 "signup.firstname.label" : "Céadainm",
343 "signup.headline" : "Cláraigh", 343 "signup.headline" : "Cláraigh",
344 "signup.lastname.label" : "Sloinne", 344 "signup.lastname.label" : "Sloinne",
345 "signup.legal.info" : "Agus tú ag cruthú cuntas Franz glacann tú le", 345 "signup.legal.info" : "Agus tú ag cruthú cuntas Ferdi glacann tú le",
346 "signup.legal.privacy" : "Polasaí príobháideachais", 346 "signup.legal.privacy" : "Polasaí príobháideachais",
347 "signup.legal.terms" : "Tearmaí seirbhíse", 347 "signup.legal.terms" : "Tearmaí seirbhíse",
348 "signup.link.login" : "Cuntas agat cheana féin, logáil isteach?", 348 "signup.link.login" : "Cuntas agat cheana féin, logáil isteach?",
349 "signup.password.label" : "Pasfhocal", 349 "signup.password.label" : "Pasfhocal",
350 "signup.submit.label" : "Cruthaigh cuntas", 350 "signup.submit.label" : "Cruthaigh cuntas",
351 "subscription.euTaxInfo" : "Áithritheoirí an tAÉ: is féidir cáin díolacháin áitiúla a chur i bhfeidhm",
352 "subscription.features.ads" : "Fógraí ar bith, choíche!",
353 "subscription.features.comingSoon" : "ag teacht go luath",
354 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
355 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
356 "subscription.features.proxy" : "Proxy support for services",
357 "subscription.features.spellchecker" : "Support for spellchecker",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhthacadóra Ferdi san áireamh",
360 "subscription.paymentSessionError" : "Ní féidir an bhfoirm íocaíochta a lódáil",
361 "subscription.submit.label" : "Ba mhaith liom tacaíocht a thabhairt d'fhorbairt Ferdi",
362 "subscription.type.free" : "saor in aisce",
363 "subscription.type.month" : "mí",
364 "subscription.type.year" : "bliain",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
index aac707c00..6d6c8d0d2 100644
--- a/src/i18n/locales/hr.json
+++ b/src/i18n/locales/hr.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
@@ -97,7 +97,7 @@
97 "menu.view" : "View", 97 "menu.view" : "View",
98 "menu.view.enterFullScreen" : "Enter Full Screen", 98 "menu.view.enterFullScreen" : "Enter Full Screen",
99 "menu.view.exitFullScreen" : "Exit Full Screen", 99 "menu.view.exitFullScreen" : "Exit Full Screen",
100 "menu.view.reloadFranz" : "Reload Franz", 100 "menu.view.reloadFranz" : "Reload Ferdi",
101 "menu.view.reloadService" : "Reload Service", 101 "menu.view.reloadService" : "Reload Service",
102 "menu.view.resetZoom" : "Actual Size", 102 "menu.view.resetZoom" : "Actual Size",
103 "menu.view.toggleDevTools" : "Toggle Developer Tools", 103 "menu.view.toggleDevTools" : "Toggle Developer Tools",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Započnimo!", 169 "services.getStarted" : "Započnimo!",
170 "services.welcome" : "Dobrodošli u Franz", 170 "services.welcome" : "Dobrodošli u Ferdi",
171 "settings.account.account.editButton" : "Uredi račun", 171 "settings.account.account.editButton" : "Uredi račun",
172 "settings.account.accountType.basic" : "Osnovni račun", 172 "settings.account.accountType.basic" : "Osnovni račun",
173 "settings.account.accountType.premium" : "Premium račun", 173 "settings.account.accountType.premium" : "Premium račun",
174 "settings.account.buttonSave" : "Ažuriraj profil", 174 "settings.account.buttonSave" : "Ažuriraj profil",
175 "settings.account.deleteAccount" : "Izbrisati račun", 175 "settings.account.deleteAccount" : "Izbrisati račun",
176 "settings.account.deleteEmailSent" : "Dobili ste email s linkom putem kojeg ćete potvrditi brisanje računa. Vaš račun i podatke neće biti moguće vratiti. ", 176 "settings.account.deleteEmailSent" : "Dobili ste email s linkom putem kojeg ćete potvrditi brisanje računa. Vaš račun i podatke neće biti moguće vratiti. ",
177 "settings.account.deleteInfo" : "Ako više ne trebate Franz račun, ovdje možete obrisati sve vezane podatke kao i račun.", 177 "settings.account.deleteInfo" : "Ako više ne trebate Ferdi račun, ovdje možete obrisati sve vezane podatke kao i račun.",
178 "settings.account.headline" : "Korisnički račun", 178 "settings.account.headline" : "Korisnički račun",
179 "settings.account.headlineAccount" : "Informacije o računu", 179 "settings.account.headlineAccount" : "Informacije o računu",
180 "settings.account.headlineDangerZone" : "Opasnost", 180 "settings.account.headlineDangerZone" : "Opasnost",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Očisti memoriju", 198 "settings.app.buttonClearAllCache" : "Očisti memoriju",
199 "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", 199 "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje",
200 "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", 200 "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja",
201 "settings.app.cacheInfo" : "Franz predmemorija trenutno koristi {size} prostora na disku", 201 "settings.app.cacheInfo" : "Ferdi predmemorija trenutno koristi {size} prostora na disku",
202 "settings.app.currentVersion" : "Trenutna verzija:", 202 "settings.app.currentVersion" : "Trenutna verzija:",
203 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini", 203 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini",
204 "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom", 204 "settings.app.form.autoLaunchOnStart" : "Pokreni Ferdi sa sistemom",
205 "settings.app.form.beta" : "Obuhvati i beta verzije", 205 "settings.app.form.beta" : "Obuhvati i beta verzije",
206 "settings.app.form.darkMode" : "Join the Dark Side", 206 "settings.app.form.darkMode" : "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", 207 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Ime", 278 "settings.service.form.name" : "Ime",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "Sačuvaj uslugu\/e", 287 "settings.service.form.saveButton" : "Sačuvaj uslugu\/e",
288 "settings.service.form.tabHosted" : "Hostovano", 288 "settings.service.form.tabHosted" : "Hostovano",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni. ", 299 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni. ",
300 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.", 300 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
301 "settings.services.updatedInfo" : "Vaše promjene su pohranjene. ", 301 "settings.services.updatedInfo" : "Vaše promjene su pohranjene. ",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Tim", 304 "settings.team.headline" : "Tim",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno", 327 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno",
328 "settings.workspaces.updatedInfo" : "Your changes have been saved", 328 "settings.workspaces.updatedInfo" : "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Dodajte novu uslugu", 332 "sidebar.addNewService" : "Dodajte novu uslugu",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,7 +342,7 @@
342 "signup.firstname.label" : "Ime", 342 "signup.firstname.label" : "Ime",
343 "signup.headline" : "Prijava", 343 "signup.headline" : "Prijava",
344 "signup.lastname.label" : "Prezime", 344 "signup.lastname.label" : "Prezime",
345 "signup.legal.info" : "Prilikom stvaranja Franz računa, slažete se sa sljedećim stavkama:", 345 "signup.legal.info" : "Prilikom stvaranja Ferdi računa, slažete se sa sljedećim stavkama:",
346 "signup.legal.privacy" : "Izjava o privatnosti ", 346 "signup.legal.privacy" : "Izjava o privatnosti ",
347 "signup.legal.terms" : "Uvjeti korištenja", 347 "signup.legal.terms" : "Uvjeti korištenja",
348 "signup.link.login" : "Imate račun? Prijavite se.", 348 "signup.link.login" : "Imate račun? Prijavite se.",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index 0d0ab7d58..77b1a9c53 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Küldés email-ben", 13 "feature.shareFranz.action.email" : "Küldés email-ben",
14 "feature.shareFranz.action.facebook" : "Megosztás Facebook-on", 14 "feature.shareFranz.action.facebook" : "Megosztás Facebook-on",
15 "feature.shareFranz.action.twitter" : "Megosztás Twitter-en", 15 "feature.shareFranz.action.twitter" : "Megosztás Twitter-en",
16 "feature.shareFranz.headline" : "A Franz barátokkal együtt mégjobb!", 16 "feature.shareFranz.headline" : "A Ferdi barátokkal együtt mégjobb!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
@@ -97,7 +97,7 @@
97 "menu.view" : "Nézet", 97 "menu.view" : "Nézet",
98 "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", 98 "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból",
99 "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", 99 "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból",
100 "menu.view.reloadFranz" : "Franz újrainditása", 100 "menu.view.reloadFranz" : "Ferdi újrainditása",
101 "menu.view.reloadService" : "Szolgáltatás újraindítása", 101 "menu.view.reloadService" : "Szolgáltatás újraindítása",
102 "menu.view.resetZoom" : "Tényleges méret", 102 "menu.view.resetZoom" : "Tényleges méret",
103 "menu.view.toggleDevTools" : "Fejlesztői eszközök ki\/bekapcsolása", 103 "menu.view.toggleDevTools" : "Fejlesztői eszközök ki\/bekapcsolása",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Betöltés", 168 "service.webviewLoader.loading" : "Betöltés",
169 "services.getStarted" : "Kezdj hozzá", 169 "services.getStarted" : "Kezdj hozzá",
170 "services.welcome" : "Üdvözöl a Franz", 170 "services.welcome" : "Üdvözöl a Ferdi",
171 "settings.account.account.editButton" : "Fiók szerkesztése", 171 "settings.account.account.editButton" : "Fiók szerkesztése",
172 "settings.account.accountType.basic" : "Alap Fiók", 172 "settings.account.accountType.basic" : "Alap Fiók",
173 "settings.account.accountType.premium" : "Prémium Támogató Fiók", 173 "settings.account.accountType.premium" : "Prémium Támogató Fiók",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Gyorsítótár törlése", 198 "settings.app.buttonClearAllCache" : "Gyorsítótár törlése",
199 "settings.app.buttonInstallUpdate" : "Újraindítás és frissítések telepítése", 199 "settings.app.buttonInstallUpdate" : "Újraindítás és frissítések telepítése",
200 "settings.app.buttonSearchForUpdate" : "Frissítések keresése", 200 "settings.app.buttonSearchForUpdate" : "Frissítések keresése",
201 "settings.app.cacheInfo" : "A Franz gyorsítótár jelenleg {size} lemezterületet használ.", 201 "settings.app.cacheInfo" : "A Ferdi gyorsítótár jelenleg {size} lemezterületet használ.",
202 "settings.app.currentVersion" : "Aktuális verzió:", 202 "settings.app.currentVersion" : "Aktuális verzió:",
203 "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben", 203 "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben",
204 "settings.app.form.autoLaunchOnStart" : "Franz betöltése indításkor", 204 "settings.app.form.autoLaunchOnStart" : "Ferdi betöltése indításkor",
205 "settings.app.form.beta" : "Béta verziók keresése", 205 "settings.app.form.beta" : "Béta verziók keresése",
206 "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz", 206 "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz",
207 "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsítás engedélyezése", 207 "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsítás engedélyezése",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Franz Tennivalók bekapcsolása", 210 "settings.app.form.enableTodos" : "Franz Tennivalók bekapcsolása",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Nyelv", 212 "settings.app.form.language" : "Nyelv",
213 "settings.app.form.minimizeToSystemTray" : "Franz kicsinyítése a tálcára", 213 "settings.app.form.minimizeToSystemTray" : "Ferdi kicsinyítése a tálcára",
214 "settings.app.form.runInBackground" : "Franz fusson a háttérben az ablak bezárásakor", 214 "settings.app.form.runInBackground" : "Ferdi fusson a háttérben az ablak bezárásakor",
215 "settings.app.form.showDisabledServices" : "Letiltott szolgáltatások megjelenítése", 215 "settings.app.form.showDisabledServices" : "Letiltott szolgáltatások megjelenítése",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Mutassa az 'olvasatlan üzenet' jelzést, amikor az értesítések le vannak tiltva", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Mutassa az 'olvasatlan üzenet' jelzést, amikor az értesítések le vannak tiltva",
217 "settings.app.headline" : "Beállítások", 217 "settings.app.headline" : "Beállítások",
@@ -226,7 +226,7 @@
226 "settings.app.translationHelp" : "Segíts nekünk a Franz-ot lefordítani a nyelvedre.", 226 "settings.app.translationHelp" : "Segíts nekünk a Franz-ot lefordítani a nyelvedre.",
227 "settings.app.updateStatusAvailable" : "Frissítés elérhető, letöltés folyamatban...", 227 "settings.app.updateStatusAvailable" : "Frissítés elérhető, letöltés folyamatban...",
228 "settings.app.updateStatusSearching" : "Frissítéseket keres", 228 "settings.app.updateStatusSearching" : "Frissítéseket keres",
229 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod", 229 "settings.app.updateStatusUpToDate" : "A Ferdi legfrissebb verzióját használod",
230 "settings.invite.headline" : "Barátok meghívása", 230 "settings.invite.headline" : "Barátok meghívása",
231 "settings.navigation.account" : "Fiók", 231 "settings.navigation.account" : "Fiók",
232 "settings.navigation.availableServices" : "Elérhető szolgáltatások", 232 "settings.navigation.availableServices" : "Elérhető szolgáltatások",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "{name} hozzáadása", 256 "settings.service.form.addServiceHeadline" : "{name} hozzáadása",
257 "settings.service.form.availableServices" : "Elérhető szolgáltatások", 257 "settings.service.form.availableServices" : "Elérhető szolgáltatások",
258 "settings.service.form.customUrl" : "Egyéni szerver", 258 "settings.service.form.customUrl" : "Egyéni szerver",
259 "settings.service.form.customUrlPremiumInfo" : "Egyénileg üzemeltetett szolgáltatások hozzáadásához Franz Prémium Támogató Fiók szükséges.", 259 "settings.service.form.customUrlPremiumInfo" : "Egyénileg üzemeltetett szolgáltatások hozzáadásához Ferdi Prémium Támogató Fiók szükséges.",
260 "settings.service.form.customUrlUpgradeAccount" : "Frissítsd fiókodat", 260 "settings.service.form.customUrlUpgradeAccount" : "Frissítsd fiókodat",
261 "settings.service.form.customUrlValidationError" : "Nem sikerült érvényesíteni az egyéni {name} kiszolgálót.", 261 "settings.service.form.customUrlValidationError" : "Nem sikerült érvényesíteni az egyéni {name} kiszolgálót.",
262 "settings.service.form.deleteButton" : "Szolgáltatás törlése", 262 "settings.service.form.deleteButton" : "Szolgáltatás törlése",
@@ -278,7 +278,7 @@
278 "settings.service.form.name" : "Név", 278 "settings.service.form.name" : "Név",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy beállítások", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy beállítások",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy beállítások nem szinkronizálódnak a Franz kiszolgálókkal.", 281 "settings.service.form.proxy.info" : "Proxy beállítások nem szinkronizálódnak a Ferdi kiszolgálókkal.",
282 "settings.service.form.proxy.isEnabled" : "Proxy használata", 282 "settings.service.form.proxy.isEnabled" : "Proxy használata",
283 "settings.service.form.proxy.password" : "Jelszó (opcionális)", 283 "settings.service.form.proxy.password" : "Jelszó (opcionális)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Minden hang lenémítva", 299 "settings.services.tooltip.isMuted" : "Minden hang lenémítva",
300 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva", 300 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva",
301 "settings.services.updatedInfo" : "A módosításokat elmentettük", 301 "settings.services.updatedInfo" : "A módosításokat elmentettük",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "A Franz for Teams lehetőséget teremt arra, hogy meghívd munkatársaidat a csapatodba email-en keresztül, és kezelhesd a Franz előfizetéseiket és fiókbeállításaikat. Ne fecséreld az idődet minden egyes csapattag regisztrációjára, felejtsd el a sok-sok egyéni számlát és különböző lejárati időt - egy mindenek felett!", 303 "settings.team.copy" : "A Ferdi for Teams lehetőséget teremt arra, hogy meghívd munkatársaidat a csapatodba email-en keresztül, és kezelhesd a Ferdi előfizetéseiket és fiókbeállításaikat. Ne fecséreld az idődet minden egyes csapattag regisztrációjára, felejtsd el a sok-sok egyéni számlát és különböző lejárati időt - egy mindenek felett!",
304 "settings.team.headline" : "Csapat", 304 "settings.team.headline" : "Csapat",
305 "settings.team.intro" : "Te és a csapatod Franz-ot használtok? Egy fiókból kezelheted kollégáid, barátaid vagy családtagjaid Prémium előfizetéseit.", 305 "settings.team.intro" : "Te és a csapatod Franz-ot használtok? Egy fiókból kezelheted kollégáid, barátaid vagy családtagjaid Prémium előfizetéseit.",
306 "settings.team.manageAction" : "Csapat kezelése a meetfranz.com-on", 306 "settings.team.manageAction" : "Csapat kezelése a meetfranz.com-on",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Még nem hoztál létre munkaterületeket.", 326 "settings.workspaces.noWorkspacesAdded" : "Még nem hoztál létre munkaterületeket.",
327 "settings.workspaces.tryReloadWorkspaces" : "Próbáld újra", 327 "settings.workspaces.tryReloadWorkspaces" : "Próbáld újra",
328 "settings.workspaces.updatedInfo" : "A módosításokat elmentettük", 328 "settings.workspaces.updatedInfo" : "A módosításokat elmentettük",
329 "settings.workspaces.workspaceFeatureHeadline" : "A kevesebb több: Bemutatjuk a Franz Munkaterületeket", 329 "settings.workspaces.workspaceFeatureHeadline" : "A kevesebb több: Bemutatjuk a Ferdi Munkaterületeket",
330 "settings.workspaces.workspaceFeatureInfo" : "A Franz Munkaterületek lehetővé teszik, hogy összpontosíts a jelenleg fontos dolgokra. Állítsd be a különböző szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor. Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, így segíthetünk abban, hogy a teljesítményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.", 330 "settings.workspaces.workspaceFeatureInfo" : "A Ferdi Munkaterületek lehetővé teszik, hogy összpontosíts a jelenleg fontos dolgokra. Állítsd be a különböző szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor. Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, így segíthetünk abban, hogy a teljesítményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.",
331 "settings.workspaces.workspacesRequestFailed" : "Nem sikerült betölteni a munkaterületeket", 331 "settings.workspaces.workspacesRequestFailed" : "Nem sikerült betölteni a munkaterületeket",
332 "sidebar.addNewService" : "Szolgáltatás hozzáadása", 332 "sidebar.addNewService" : "Szolgáltatás hozzáadása",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,12 +342,26 @@
342 "signup.firstname.label" : "Keresztnév", 342 "signup.firstname.label" : "Keresztnév",
343 "signup.headline" : "Regisztráció", 343 "signup.headline" : "Regisztráció",
344 "signup.lastname.label" : "Családnév", 344 "signup.lastname.label" : "Családnév",
345 "signup.legal.info" : "A Franz fiók létrehozásával elfogadod az", 345 "signup.legal.info" : "A Ferdi fiók létrehozásával elfogadod az",
346 "signup.legal.privacy" : "Adatvédelmi Nyilatkozatot", 346 "signup.legal.privacy" : "Adatvédelmi Nyilatkozatot",
347 "signup.legal.terms" : "Felhasználási Feltételeket", 347 "signup.legal.terms" : "Felhasználási Feltételeket",
348 "signup.link.login" : "Már van fiókod? Lépj be!", 348 "signup.link.login" : "Már van fiókod? Lépj be!",
349 "signup.password.label" : "Jelszó", 349 "signup.password.label" : "Jelszó",
350 "signup.submit.label" : "Fiók létrehozása", 350 "signup.submit.label" : "Fiók létrehozása",
351 "subscription.euTaxInfo" : "EU állampolgárok: helyi vásárlás esetén adók kerülhetnek felszámolásra",
352 "subscription.features.ads" : "Hirdetésmentes, mindig!",
353 "subscription.features.comingSoon" : "hamarosan",
354 "subscription.features.noInterruptions" : "Nincs több app késlekedés és liszencfrissítési piszkálás",
355 "subscription.features.onpremise.mattermost" : "Saját kiszolgálós szolgáltatások hozzáadása, pl.: Mattermost",
356 "subscription.features.proxy" : "Proxy támogatás a szolgáltatásokhoz",
357 "subscription.features.spellchecker" : "Támogatás a Helyesírás-ellenőrzőhöz",
358 "subscription.features.workspaces" : "Rendezd szolgáltatásaidat Munkaterületekbe",
359 "subscription.includedFeatures" : "Az előfizetett Ferdi Prémium Támogató Fiók tartalmazza",
360 "subscription.paymentSessionError" : "Nem sikerült a fizetési felületet betölteni",
361 "subscription.submit.label" : "Szeretném támogatni a Ferdi fejlesztését",
362 "subscription.type.free" : "ingyenes",
363 "subscription.type.month" : "hónap",
364 "subscription.type.year" : "év",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Készítsd el az első munkaterületedet", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Készítsd el az első munkaterületedet",
381 "workspaceDrawer.proFeatureBadge" : "Prémium funkció", 395 "workspaceDrawer.proFeatureBadge" : "Prémium funkció",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Prémium fiók reaktiválása", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Prémium fiók reaktiválása",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>A Franz Munkaterületek lehetővé teszik, hogy összpontosíts a jelenleg fontos dolgokra. Állítsd be a különböző szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor.<\/p><p>Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, így segíthetünk abban, hogy a teljesítményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.<\/p>", 397 "workspaceDrawer.workspaceFeatureInfo" : "<p>A Ferdi Munkaterületek lehetővé teszik, hogy összpontosíts a jelenleg fontos dolgokra. Állítsd be a különböző szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor.<\/p><p>Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, így segíthetünk abban, hogy a teljesítményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.<\/p>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Munkaterület beállítások szerkesztése", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Munkaterület beállítások szerkesztése",
385 "workspaces.switchingIndicator.switchingTo" : "Váltás" 399 "workspaces.switchingIndicator.switchingTo" : "Váltás"
386} 400}
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index 4ea421df4..bf9200064 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -7,20 +7,20 @@
7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", 7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional",
8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial",
9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action" : "Dapatkan Lisensi Pendukung Franz", 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.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 12 "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.",
13 "feature.shareFranz.action.email" : "Kirim sebagai email", 13 "feature.shareFranz.action.email" : "Kirim sebagai email",
14 "feature.shareFranz.action.facebook" : "Bagikan di Facebook", 14 "feature.shareFranz.action.facebook" : "Bagikan di Facebook",
15 "feature.shareFranz.action.twitter" : "Bagikan di Twitter", 15 "feature.shareFranz.action.twitter" : "Bagikan di Twitter",
16 "feature.shareFranz.headline" : "Franz lebih baik bersama!", 16 "feature.shareFranz.headline" : "Ferdi lebih baik bersama!",
17 "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "Saya telah menambahkan {count} layanan di Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan lainnya di www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "Saya telah menambahkan {count} layanan di Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan lainnya di www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Franz dan bantu kami menyebarkan berita.", 19 "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Franz dan bantu kami menyebarkan berita.",
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", 23 "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", 25 "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.",
26 "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})", 26 "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", 56 "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Tentang Franz", 59 "menu.app.about" : "Tentang Ferdi",
60 "menu.app.announcement" : "Yang baru", 60 "menu.app.announcement" : "Yang baru",
61 "menu.app.checkForUpdates" : "Periksa versi baru", 61 "menu.app.checkForUpdates" : "Periksa versi baru",
62 "menu.app.hide" : "Sembunyikan", 62 "menu.app.hide" : "Sembunyikan",
@@ -97,7 +97,7 @@
97 "menu.view" : "Tampilan", 97 "menu.view" : "Tampilan",
98 "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh", 98 "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh",
99 "menu.view.exitFullScreen" : "Keluar dari Layar Penuh", 99 "menu.view.exitFullScreen" : "Keluar dari Layar Penuh",
100 "menu.view.reloadFranz" : "Muat Ulang Franz", 100 "menu.view.reloadFranz" : "Muat Ulang Ferdi",
101 "menu.view.reloadService" : "Muat ulang Layanan", 101 "menu.view.reloadService" : "Muat ulang Layanan",
102 "menu.view.resetZoom" : "Ukuran Sebenarnya", 102 "menu.view.resetZoom" : "Ukuran Sebenarnya",
103 "menu.view.toggleDevTools" : "Aktif\/Nonaktifkan alat pengembang", 103 "menu.view.toggleDevTools" : "Aktif\/Nonaktifkan alat pengembang",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Memuat", 168 "service.webviewLoader.loading" : "Memuat",
169 "services.getStarted" : "Memulai", 169 "services.getStarted" : "Memulai",
170 "services.welcome" : "Selamat datang di Franz", 170 "services.welcome" : "Selamat datang di Ferdi",
171 "settings.account.account.editButton" : "Edit akun", 171 "settings.account.account.editButton" : "Edit akun",
172 "settings.account.accountType.basic" : "Akun Dasar", 172 "settings.account.accountType.basic" : "Akun Dasar",
173 "settings.account.accountType.premium" : "Akun Pendukung Premium", 173 "settings.account.accountType.premium" : "Akun Pendukung Premium",
174 "settings.account.buttonSave" : "Perbarui profil", 174 "settings.account.buttonSave" : "Perbarui profil",
175 "settings.account.deleteAccount" : "Hapus akun", 175 "settings.account.deleteAccount" : "Hapus akun",
176 "settings.account.deleteEmailSent" : "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!", 176 "settings.account.deleteEmailSent" : "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!",
177 "settings.account.deleteInfo" : "Jika Anda tidak membutuhkan akun Franz lagi, Anda bisa menghapus akun dan semua data terkait di sini.", 177 "settings.account.deleteInfo" : "Jika Anda tidak membutuhkan akun Ferdi lagi, Anda bisa menghapus akun dan semua data terkait di sini.",
178 "settings.account.headline" : "Akun", 178 "settings.account.headline" : "Akun",
179 "settings.account.headlineAccount" : "Informasi akun", 179 "settings.account.headlineAccount" : "Informasi akun",
180 "settings.account.headlineDangerZone" : "Wilayah Berbahaya", 180 "settings.account.headlineDangerZone" : "Wilayah Berbahaya",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Bersihkan singgahan", 198 "settings.app.buttonClearAllCache" : "Bersihkan singgahan",
199 "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", 199 "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru",
200 "settings.app.buttonSearchForUpdate" : "Periksa pembaruan", 200 "settings.app.buttonSearchForUpdate" : "Periksa pembaruan",
201 "settings.app.cacheInfo" : "Singgahan Franz sedang menggunakan ruang disk {size}.", 201 "settings.app.cacheInfo" : "Singgahan Ferdi sedang menggunakan ruang disk {size}.",
202 "settings.app.currentVersion" : "Versi saat ini:", 202 "settings.app.currentVersion" : "Versi saat ini:",
203 "settings.app.form.autoLaunchInBackground" : "Buka di latar belakang", 203 "settings.app.form.autoLaunchInBackground" : "Buka di latar belakang",
204 "settings.app.form.autoLaunchOnStart" : "Jalankan Franz saat komputer dimulai", 204 "settings.app.form.autoLaunchOnStart" : "Jalankan Ferdi saat komputer dimulai",
205 "settings.app.form.beta" : "Sertakan versi beta", 205 "settings.app.form.beta" : "Sertakan versi beta",
206 "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)", 206 "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)",
207 "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU", 207 "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Bahasa", 212 "settings.app.form.language" : "Bahasa",
213 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem", 213 "settings.app.form.minimizeToSystemTray" : "Perkecil Ferdi ke baki sistem",
214 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela", 214 "settings.app.form.runInBackground" : "Tetap jalankan Ferdi di latar belakang saat menutup jendela",
215 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan", 215 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan",
217 "settings.app.headline" : "Pengaturan", 217 "settings.app.headline" : "Pengaturan",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Penerjemahan resmi dilakukan untuk Bahasa Inggris dan Jerman. Bahasa lainnya merupakan penerjemahan oleh komunitas.", 223 "settings.app.languageDisclaimer" : "Penerjemahan resmi dilakukan untuk Bahasa Inggris dan Jerman. Bahasa lainnya merupakan penerjemahan oleh komunitas.",
224 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang", 224 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang",
225 "settings.app.subheadlineCache" : "Singgahan", 225 "settings.app.subheadlineCache" : "Singgahan",
226 "settings.app.translationHelp" : "Bantu kami menerjemahkan Franz ke bahasa Anda.", 226 "settings.app.translationHelp" : "Bantu kami menerjemahkan Ferdi ke bahasa Anda.",
227 "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...", 227 "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...",
228 "settings.app.updateStatusSearching" : "Sedang mencari versi baru", 228 "settings.app.updateStatusSearching" : "Sedang mencari versi baru",
229 "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Franz", 229 "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Ferdi",
230 "settings.invite.headline" : "Undang Teman", 230 "settings.invite.headline" : "Undang Teman",
231 "settings.navigation.account" : "Akun", 231 "settings.navigation.account" : "Akun",
232 "settings.navigation.availableServices" : "Layanan tersedia", 232 "settings.navigation.availableServices" : "Layanan tersedia",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Tambahkan {name}", 256 "settings.service.form.addServiceHeadline" : "Tambahkan {name}",
257 "settings.service.form.availableServices" : "Layanan tersedia", 257 "settings.service.form.availableServices" : "Layanan tersedia",
258 "settings.service.form.customUrl" : "Server khusus", 258 "settings.service.form.customUrl" : "Server khusus",
259 "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan hosted yang dijalankan mandiri, Anda membutuhkan Franz Premium Supporter Account.", 259 "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan hosted yang dijalankan mandiri, Anda membutuhkan Ferdi Premium Supporter Account.",
260 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", 260 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda",
261 "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.", 261 "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.",
262 "settings.service.form.deleteButton" : "Hapus layanan", 262 "settings.service.form.deleteButton" : "Hapus layanan",
@@ -282,7 +282,7 @@
282 "settings.service.form.proxy.isEnabled" : "Gunakan Proksi", 282 "settings.service.form.proxy.isEnabled" : "Gunakan Proksi",
283 "settings.service.form.proxy.password" : "Sandi (opsional)", 283 "settings.service.form.proxy.password" : "Sandi (opsional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Silahkan mulai ulang Franz setelah mengubah Setelan proxy", 285 "settings.service.form.proxy.restartInfo" : "Silahkan mulai ulang Ferdi setelah mengubah Setelan proxy",
286 "settings.service.form.proxy.user" : "Pengguna (opsional)", 286 "settings.service.form.proxy.user" : "Pengguna (opsional)",
287 "settings.service.form.saveButton" : "Simpan layanan", 287 "settings.service.form.saveButton" : "Simpan layanan",
288 "settings.service.form.tabHosted" : "Hosted", 288 "settings.service.form.tabHosted" : "Hosted",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Semua suara dibisukan", 299 "settings.services.tooltip.isMuted" : "Semua suara dibisukan",
300 "settings.services.tooltip.notificationsDisabled" : "Pemberitahuan dinonaktifkan", 300 "settings.services.tooltip.notificationsDisabled" : "Pemberitahuan dinonaktifkan",
301 "settings.services.updatedInfo" : "Perubahan telah disimpan", 301 "settings.services.updatedInfo" : "Perubahan telah disimpan",
302 "settings.team.contentHeadline" : "Franz untuk Tim", 302 "settings.team.contentHeadline" : "Ferdi untuk Tim",
303 "settings.team.copy" : "Franz untuk Tim menyediakan opsi untuk mengundang rekan kerja ke tim Anda dengan mengirimkan undangan email dan mengelola langganan mereka pada preferensi akun Anda. Jangan habiskan waktu Anda menyiapkan langganan bagi masing-masing anggota tim, lupakan berbagai faktur dan periode penagihan - satu tim untuk semua!", 303 "settings.team.copy" : "Ferdi untuk Tim menyediakan opsi untuk mengundang rekan kerja ke tim Anda dengan mengirimkan undangan email dan mengelola langganan mereka pada preferensi akun Anda. Jangan habiskan waktu Anda menyiapkan langganan bagi masing-masing anggota tim, lupakan berbagai faktur dan periode penagihan - satu tim untuk semua!",
304 "settings.team.headline" : "Tim", 304 "settings.team.headline" : "Tim",
305 "settings.team.intro" : "Anda dan tim Anda menggunakan Franz? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.", 305 "settings.team.intro" : "Anda dan tim Anda menggunakan Franz? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.",
306 "settings.team.manageAction" : "Kelola Tim Anda di meetfranz.com", 306 "settings.team.manageAction" : "Kelola Tim Anda di meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Anda belum menambahkan ruang kerja.", 326 "settings.workspaces.noWorkspacesAdded" : "Anda belum menambahkan ruang kerja.",
327 "settings.workspaces.tryReloadWorkspaces" : "Coba lagi", 327 "settings.workspaces.tryReloadWorkspaces" : "Coba lagi",
328 "settings.workspaces.updatedInfo" : "Perubahan Anda telah disimpan", 328 "settings.workspaces.updatedInfo" : "Perubahan Anda telah disimpan",
329 "settings.workspaces.workspaceFeatureHeadline" : "Sedikit Namun Banyak: Memperkenalkan Ruang Kerja Franz", 329 "settings.workspaces.workspaceFeatureHeadline" : "Sedikit Namun Banyak: Memperkenalkan Ruang Kerja Ferdi",
330 "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Franz dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.", 330 "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Ferdi dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.",
331 "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda", 331 "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda",
332 "sidebar.addNewService" : "Tambahkan layanan baru", 332 "sidebar.addNewService" : "Tambahkan layanan baru",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Buat ruang kerja pertama Anda", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Buat ruang kerja pertama Anda",
381 "workspaceDrawer.proFeatureBadge" : "Fitur premium", 381 "workspaceDrawer.proFeatureBadge" : "Fitur premium",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktifkan ulang akun premium", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktifkan ulang akun premium",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Ruang Kerja Franz dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain.<\/p><p>Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.<\/p>", 383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Ruang Kerja Ferdi dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain.<\/p><p>Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.<\/p>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit setelan ruang kerja", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit setelan ruang kerja",
385 "workspaces.switchingIndicator.switchingTo" : "Beralih ke" 385 "workspaces.switchingIndicator.switchingTo" : "Beralih ke"
386} 386}
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index ae2725fd8..f6174cbbd 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "{name}を追加", 256 "settings.service.form.addServiceHeadline" : "{name}を追加",
257 "settings.service.form.availableServices" : "利用可能なサービス", 257 "settings.service.form.availableServices" : "利用可能なサービス",
258 "settings.service.form.customUrl" : "独自サーバー", 258 "settings.service.form.customUrl" : "独自サーバー",
259 "settings.service.form.customUrlPremiumInfo" : "独自サービスを追加するためには、Franz Premium Supporterアカウントが必要です。", 259 "settings.service.form.customUrlPremiumInfo" : "独自サービスを追加するためには、Ferdi Premium Supporterアカウントが必要です。",
260 "settings.service.form.customUrlUpgradeAccount" : "アカウントをアップグレードする", 260 "settings.service.form.customUrlUpgradeAccount" : "アカウントをアップグレードする",
261 "settings.service.form.customUrlValidationError" : "独自サーバー{name}を検証できませんでした。", 261 "settings.service.form.customUrlValidationError" : "独自サーバー{name}を検証できませんでした。",
262 "settings.service.form.deleteButton" : "サービスの削除", 262 "settings.service.form.deleteButton" : "サービスの削除",
@@ -278,7 +278,7 @@
278 "settings.service.form.name" : "サービス名", 278 "settings.service.form.name" : "サービス名",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPSのプロキシ設定", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPSのプロキシ設定",
280 "settings.service.form.proxy.host" : "プロキシサーバー\/IP", 280 "settings.service.form.proxy.host" : "プロキシサーバー\/IP",
281 "settings.service.form.proxy.info" : "プロキシ設定はFranz アカウントで同期されません。", 281 "settings.service.form.proxy.info" : "プロキシ設定はFerdi アカウントで同期されません。",
282 "settings.service.form.proxy.isEnabled" : "プロキシ設定を有効にする", 282 "settings.service.form.proxy.isEnabled" : "プロキシ設定を有効にする",
283 "settings.service.form.proxy.password" : "パスワード(任意)", 283 "settings.service.form.proxy.password" : "パスワード(任意)",
284 "settings.service.form.proxy.port" : "ポート", 284 "settings.service.form.proxy.port" : "ポート",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "無音となっています", 299 "settings.services.tooltip.isMuted" : "無音となっています",
300 "settings.services.tooltip.notificationsDisabled" : "通知は無効です", 300 "settings.services.tooltip.notificationsDisabled" : "通知は無効です",
301 "settings.services.updatedInfo" : "変更内容が保存されました", 301 "settings.services.updatedInfo" : "変更内容が保存されました",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "チーム", 304 "settings.team.headline" : "チーム",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "もう一度試す", 327 "settings.workspaces.tryReloadWorkspaces" : "もう一度試す",
328 "settings.workspaces.updatedInfo" : "変更内容が保存されました", 328 "settings.workspaces.updatedInfo" : "変更内容が保存されました",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "サービスを追加", 332 "sidebar.addNewService" : "サービスを追加",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "アカウントを既に持っていますか? こちらからサインイン", 348 "signup.link.login" : "アカウントを既に持っていますか? こちらからサインイン",
349 "signup.password.label" : "パスワード", 349 "signup.password.label" : "パスワード",
350 "signup.submit.label" : "アカウントの作成", 350 "signup.submit.label" : "アカウントの作成",
351 "subscription.euTaxInfo" : "EU在住者 : 地域の消費税が適用される可能性があります",
352 "subscription.features.ads" : "広告は一切ありません!",
353 "subscription.features.comingSoon" : "まもなく登場",
354 "subscription.features.noInterruptions" : "待ち時間なしでFerdi をお使いいただけます",
355 "subscription.features.onpremise.mattermost" : "Mattermost のようなオンプレミス(自社運用)型のサービスを追加できるようになります",
356 "subscription.features.proxy" : "プロキシ設定が利用可能",
357 "subscription.features.spellchecker" : "スペルチェック機能をお使いいただけます",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "Ferdi Premium Supporter有料アカウントには以下が含まれます",
360 "subscription.paymentSessionError" : "支払いフォームを初期化出来ません",
361 "subscription.submit.label" : "Franzの開発を支援したい",
362 "subscription.type.free" : "無料",
363 "subscription.type.month" : "月間",
364 "subscription.type.year" : "年間",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index 32792017b..3d5c8d29a 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
@@ -97,7 +97,7 @@
97 "menu.view" : "View", 97 "menu.view" : "View",
98 "menu.view.enterFullScreen" : "Enter Full Screen", 98 "menu.view.enterFullScreen" : "Enter Full Screen",
99 "menu.view.exitFullScreen" : "Exit Full Screen", 99 "menu.view.exitFullScreen" : "Exit Full Screen",
100 "menu.view.reloadFranz" : "Reload Franz", 100 "menu.view.reloadFranz" : "Reload Ferdi",
101 "menu.view.reloadService" : "Reload Service", 101 "menu.view.reloadService" : "Reload Service",
102 "menu.view.resetZoom" : "Actual Size", 102 "menu.view.resetZoom" : "Actual Size",
103 "menu.view.toggleDevTools" : "Toggle Developer Tools", 103 "menu.view.toggleDevTools" : "Toggle Developer Tools",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -174,7 +174,7 @@
174 "settings.account.buttonSave" : "პროფილის განახლება", 174 "settings.account.buttonSave" : "პროფილის განახლება",
175 "settings.account.deleteAccount" : "Delete account", 175 "settings.account.deleteAccount" : "Delete account",
176 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", 176 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
177 "settings.account.deleteInfo" : "If you don't need your Franz account any longer, you can delete your account and all related data here.", 177 "settings.account.deleteInfo" : "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
178 "settings.account.headline" : "ანგარიში", 178 "settings.account.headline" : "ანგარიში",
179 "settings.account.headlineAccount" : "ანგარიშის ინფორმაცია", 179 "settings.account.headlineAccount" : "ანგარიშის ინფორმაცია",
180 "settings.account.headlineDangerZone" : "Danger Zone", 180 "settings.account.headlineDangerZone" : "Danger Zone",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Clear cache", 198 "settings.app.buttonClearAllCache" : "Clear cache",
199 "settings.app.buttonInstallUpdate" : "გადატვირთეთ და დააყენეთ განახლება", 199 "settings.app.buttonInstallUpdate" : "გადატვირთეთ და დააყენეთ განახლება",
200 "settings.app.buttonSearchForUpdate" : "განახლებების შემოწმება", 200 "settings.app.buttonSearchForUpdate" : "განახლებების შემოწმება",
201 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.", 201 "settings.app.cacheInfo" : "Ferdi cache is currently using {size} of disk space.",
202 "settings.app.currentVersion" : "ამჟამინდელი ვერსია:", 202 "settings.app.currentVersion" : "ამჟამინდელი ვერსია:",
203 "settings.app.form.autoLaunchInBackground" : "გახსენით ფონზე", 203 "settings.app.form.autoLaunchInBackground" : "გახსენით ფონზე",
204 "settings.app.form.autoLaunchOnStart" : "გაეშვას Franz სისტემის ჩატვირთვისას", 204 "settings.app.form.autoLaunchOnStart" : "გაეშვას Ferdi სისტემის ჩატვირთვისას",
205 "settings.app.form.beta" : "ჩართეთ ბეტა ვერსიები", 205 "settings.app.form.beta" : "ჩართეთ ბეტა ვერსიები",
206 "settings.app.form.darkMode" : "Join the Dark Side", 206 "settings.app.form.darkMode" : "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", 207 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "ენა", 212 "settings.app.form.language" : "ენა",
213 "settings.app.form.minimizeToSystemTray" : "ჩაკეცეთ Franz სისტემის უჯრაში", 213 "settings.app.form.minimizeToSystemTray" : "ჩაკეცეთ Ferdi სისტემის უჯრაში",
214 "settings.app.form.runInBackground" : "დატოვეთ Franz გაშვებული როდესაც ფანჯარა დაიხურება", 214 "settings.app.form.runInBackground" : "დატოვეთ Ferdi გაშვებული როდესაც ფანჯარა დაიხურება",
215 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 215 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled",
217 "settings.app.headline" : "პარამეტრები", 217 "settings.app.headline" : "პარამეტრები",
@@ -223,7 +223,7 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Changes require restart", 224 "settings.app.restartRequired" : "Changes require restart",
225 "settings.app.subheadlineCache" : "Cache", 225 "settings.app.subheadlineCache" : "Cache",
226 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 226 "settings.app.translationHelp" : "Help us to translate Ferdi into your language.",
227 "settings.app.updateStatusAvailable" : "განახლება ხელმისაწვდომია, იწყება გადმოწერა...", 227 "settings.app.updateStatusAvailable" : "განახლება ხელმისაწვდომია, იწყება გადმოწერა...",
228 "settings.app.updateStatusSearching" : "მიმდინარეობს განახლების ძიება", 228 "settings.app.updateStatusSearching" : "მიმდინარეობს განახლების ძიება",
229 "settings.app.updateStatusUpToDate" : "თქვენ იყენებთ Franz-ის უახლეს ვერსიას", 229 "settings.app.updateStatusUpToDate" : "თქვენ იყენებთ Franz-ის უახლეს ვერსიას",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "სახელი", 278 "settings.service.form.name" : "სახელი",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "სერვისის შენახვა", 287 "settings.service.form.saveButton" : "სერვისის შენახვა",
288 "settings.service.form.tabHosted" : "დაჰოსტილი", 288 "settings.service.form.tabHosted" : "დაჰოსტილი",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "All sounds are muted", 299 "settings.services.tooltip.isMuted" : "All sounds are muted",
300 "settings.services.tooltip.notificationsDisabled" : "შეტყობინებები გათიშულია", 300 "settings.services.tooltip.notificationsDisabled" : "შეტყობინებები გათიშულია",
301 "settings.services.updatedInfo" : "ცვლილებები შენახულია", 301 "settings.services.updatedInfo" : "ცვლილებები შენახულია",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "გუნდი", 304 "settings.team.headline" : "გუნდი",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "სცადეთ ხელახლა", 327 "settings.workspaces.tryReloadWorkspaces" : "სცადეთ ხელახლა",
328 "settings.workspaces.updatedInfo" : "Your changes have been saved", 328 "settings.workspaces.updatedInfo" : "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Add new service", 332 "sidebar.addNewService" : "Add new service",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/nb-NO.json b/src/i18n/locales/nb-NO.json
index 976c54787..d15372755 100644
--- a/src/i18n/locales/nb-NO.json
+++ b/src/i18n/locales/nb-NO.json
@@ -1,5 +1,5 @@
1{ 1{
2 "global.api.unhealthy": "Kan ikke koble til Franz' tjenester", 2 "global.api.unhealthy": "Kan ikke koble til Ferdi' tjenester",
3 "global.notConnectedToTheInternet": "Du er ikke koblet til internett.", 3 "global.notConnectedToTheInternet": "Du er ikke koblet til internett.",
4 "welcome.signupButton": "Opprett en gratis konto", 4 "welcome.signupButton": "Opprett en gratis konto",
5 "welcome.loginButton": "Logg inn til din konto", 5 "welcome.loginButton": "Logg inn til din konto",
@@ -29,15 +29,15 @@
29 "signup.submit.label": "Opprett konto", 29 "signup.submit.label": "Opprett konto",
30 "signup.link.login": "Har du allerede en konto? Logg inn", 30 "signup.link.login": "Har du allerede en konto? Logg inn",
31 "signup.emailDuplicate": "En konto med den epost adresse eksiterer allerede", 31 "signup.emailDuplicate": "En konto med den epost adresse eksiterer allerede",
32 "signup.legal.info": "Ved å opprette en Franz konto aksepterer du", 32 "signup.legal.info": "Ved å opprette en Ferdi konto aksepterer du",
33 "signup.legal.terms": "Vilkår for bruk", 33 "signup.legal.terms": "Vilkår for bruk",
34 "signup.legal.privacy": "Personvern", 34 "signup.legal.privacy": "Personvern",
35 "pricing.headline": "Støtt Franz", 35 "pricing.headline": "Støtt Ferdi",
36 "pricing.support.label": "Velg din støtteplan", 36 "pricing.support.label": "Velg din støtteplan",
37 "pricing.submit.label": "Jeg vil støtte utviklingen av Franz", 37 "pricing.submit.label": "Jeg vil støtte utviklingen av Ferdi",
38 "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Franz.", 38 "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Franz.",
39 "import.headline": "Importer dine Franz 4 tjenester", 39 "import.headline": "Importer dine Ferdi 4 tjenester",
40 "import.notSupportedHeadline": "Tjenester ikke enda støttet i Franz 5", 40 "import.notSupportedHeadline": "Tjenester ikke enda støttet i Ferdi 5",
41 "import.submit.label": "Importer tjenester", 41 "import.submit.label": "Importer tjenester",
42 "import.skip.label": "Jeg vil legge til en tjeneste manuelt", 42 "import.skip.label": "Jeg vil legge til en tjeneste manuelt",
43 "invite.submit.label": "Send invitasjoner", 43 "invite.submit.label": "Send invitasjoner",
@@ -45,9 +45,9 @@
45 "invite.name.label": "Navn", 45 "invite.name.label": "Navn",
46 "invite.email.label": "Email adresse", 46 "invite.email.label": "Email adresse",
47 "invite.skip.label": "Jeg vil gjøre dette senere", 47 "invite.skip.label": "Jeg vil gjøre dette senere",
48 "subscription.submit.label": "Jeg vil ikke støtte utviklingen av Franz", 48 "subscription.submit.label": "Jeg vil ikke støtte utviklingen av Ferdi",
49 "subscription.paymentSessionError": "Kunne ikke laste betalingsskjemaet", 49 "subscription.paymentSessionError": "Kunne ikke laste betalingsskjemaet",
50 "subscription.includedFeatures": "Betalte Franz Premium konto inkluderer", 50 "subscription.includedFeatures": "Betalte Ferdi Premium konto inkluderer",
51 "subscription.features.onpremise": "Legg til on-premise/hosted tjenester som HipChat", 51 "subscription.features.onpremise": "Legg til on-premise/hosted tjenester som HipChat",
52 "subscription.features.customServices": "Private tjenester for deg og ditt lag", 52 "subscription.features.customServices": "Private tjenester for deg og ditt lag",
53 "subscription.features.encryptedSync": "Kryptert øktsynkronisering", 53 "subscription.features.encryptedSync": "Kryptert øktsynkronisering",
@@ -55,17 +55,17 @@
55 "subscription.features.ads": "Ingen annonser, noensinne!", 55 "subscription.features.ads": "Ingen annonser, noensinne!",
56 "subscription.features.comingSoon": "Kommer snart", 56 "subscription.features.comingSoon": "Kommer snart",
57 "infobar.servicesUpdated": "Dine tjenester er oppdatert.", 57 "infobar.servicesUpdated": "Dine tjenester er oppdatert.",
58 "infobar.updateAvailable": "En ny oppdatering for Franz er tilgjengelig.", 58 "infobar.updateAvailable": "En ny oppdatering for Ferdi er tilgjengelig.",
59 "infobar.buttonReloadServices": "Oppdater tjenester", 59 "infobar.buttonReloadServices": "Oppdater tjenester",
60 "infobar.buttonInstallUpdate": "Restart & installer oppdatering", 60 "infobar.buttonInstallUpdate": "Restart & installer oppdatering",
61 "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon", 61 "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon",
62 "sidebar.settings": "Innstillinger", 62 "sidebar.settings": "Innstillinger",
63 "sidebar.addNewService": "Legg til ny tjeneste", 63 "sidebar.addNewService": "Legg til ny tjeneste",
64 "services.welcome": "Velkommen til Franz", 64 "services.welcome": "Velkommen til Ferdi",
65 "services.getStarted": "Kom i gang", 65 "services.getStarted": "Kom i gang",
66 "settings.account.headline": "Konto", 66 "settings.account.headline": "Konto",
67 "settings.account.headlineSubscription": "Ditt abonnement", 67 "settings.account.headlineSubscription": "Ditt abonnement",
68 "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Franz", 68 "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Ferdi",
69 "settings.account.headlineInvoices": "Fakturaer", 69 "settings.account.headlineInvoices": "Fakturaer",
70 "settings.account.manageSubscription.label": "Administrer dine abonnement", 70 "settings.account.manageSubscription.label": "Administrer dine abonnement",
71 "settings.account.accountType.basic": "Enkel Konto", 71 "settings.account.accountType.basic": "Enkel Konto",
@@ -79,7 +79,7 @@
79 "settings.account.headlinePassword": "Endre passord", 79 "settings.account.headlinePassword": "Endre passord",
80 "settings.account.successInfo": "Dine endringer er lagret", 80 "settings.account.successInfo": "Dine endringer er lagret",
81 "settings.account.buttonSave": "Oppdater profil", 81 "settings.account.buttonSave": "Oppdater profil",
82 "settings.account.mining.thankyou": "Takk for at du støtter Franz med din prosessorkraft.", 82 "settings.account.mining.thankyou": "Takk for at du støtter Ferdi med din prosessorkraft.",
83 "settings.account.mining.active": "Du utfører nå {hashes} beregninger per sekund.", 83 "settings.account.mining.active": "Du utfører nå {hashes} beregninger per sekund.",
84 "settings.account.mining.moreInformation": "Få mer informasjon", 84 "settings.account.mining.moreInformation": "Få mer informasjon",
85 "settings.account.mining.cancel": "Avbryt mining", 85 "settings.account.mining.cancel": "Avbryt mining",
@@ -103,7 +103,7 @@
103 "settings.service.form.tabHosted": "Hosted", 103 "settings.service.form.tabHosted": "Hosted",
104 "settings.service.form.tabOnPremise": "Selv hosted ⭐️", 104 "settings.service.form.tabOnPremise": "Selv hosted ⭐️",
105 "settings.service.form.customUrlValidationError": "Kunne ikke validere egendefinert {name} server.", 105 "settings.service.form.customUrlValidationError": "Kunne ikke validere egendefinert {name} server.",
106 "settings.service.form.customUrlPremiumInfo": "For å legge til selvhost-baserte tjenester trenger du en Franz Premium konto.", 106 "settings.service.form.customUrlPremiumInfo": "For å legge til selvhost-baserte tjenester trenger du en Ferdi Premium konto.",
107 "settings.service.form.customUrlUpgradeAccount": "Oppgrader din konto", 107 "settings.service.form.customUrlUpgradeAccount": "Oppgrader din konto",
108 "settings.service.form.indirectMessageInfo": "Du vil bli varslet om alle nye meldinger i en kanal, ikke bare @brukernavn, @kanal, @here, ...", 108 "settings.service.form.indirectMessageInfo": "Du vil bli varslet om alle nye meldinger i en kanal, ikke bare @brukernavn, @kanal, @here, ...",
109 "settings.service.error.headline": "Error", 109 "settings.service.error.headline": "Error",
@@ -124,12 +124,12 @@
124 "settings.app.buttonInstallUpdate": "Restart & installer oppdatering", 124 "settings.app.buttonInstallUpdate": "Restart & installer oppdatering",
125 "settings.app.updateStatusSearching": "Søker etter en oppdatering", 125 "settings.app.updateStatusSearching": "Søker etter en oppdatering",
126 "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...", 126 "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...",
127 "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Franz", 127 "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Ferdi",
128 "settings.app.form.autoLaunchOnStart": "Start Franz ved oppstart", 128 "settings.app.form.autoLaunchOnStart": "Start Ferdi ved oppstart",
129 "settings.app.form.autoLaunchInBackground": "Åpne i bakgrunnen", 129 "settings.app.form.autoLaunchInBackground": "Åpne i bakgrunnen",
130 "settings.app.form.enableSystemTray": "Vis Franz i systemfeltet", 130 "settings.app.form.enableSystemTray": "Vis Ferdi i systemfeltet",
131 "settings.app.form.minimizeToSystemTray": "Minimer Franz til systemfeltet", 131 "settings.app.form.minimizeToSystemTray": "Minimer Ferdi til systemfeltet",
132 "settings.app.form.runInBackground": "Behold Franz i bakgrunnen når du lukker vinduet", 132 "settings.app.form.runInBackground": "Behold Ferdi i bakgrunnen når du lukker vinduet",
133 "settings.app.form.language": "Språk", 133 "settings.app.form.language": "Språk",
134 "settings.app.form.beta": "Inkluder beta versjoner", 134 "settings.app.form.beta": "Inkluder beta versjoner",
135 "settings.app.currentVersion": "Gjeldende versjon:", 135 "settings.app.currentVersion": "Gjeldende versjon:",
@@ -151,15 +151,15 @@
151 "subscription.type.free": "gratis", 151 "subscription.type.free": "gratis",
152 "subscription.type.month": "måned", 152 "subscription.type.month": "måned",
153 "subscription.type.year": "år", 153 "subscription.type.year": "år",
154 "subscription.type.mining": "Støtt Franz med prosessorkraft", 154 "subscription.type.mining": "Støtt Ferdi med prosessorkraft",
155 "subscription.mining.headline": "Hvordan fungerer dette?", 155 "subscription.mining.headline": "Hvordan fungerer dette?",
156 "subscription.mining.experimental": "eksperimental", 156 "subscription.mining.experimental": "eksperimental",
157 "subscription.mining.line1": "Ved å aktivere \"Støtt Franz med prosessorkraft\" vil Franz bruke cirka 20-50% av prosessore din til å mine kryptovalutaen Monero, som vil tilsvare omtrent $5/år", 157 "subscription.mining.line1": "Ved å aktivere \"Støtt Ferdi med prosessorkraft\" vil Ferdi bruke cirka 20-50% av prosessore din til å mine kryptovalutaen Monero, som vil tilsvare omtrent $5/år",
158 "subscription.mining.line2": "Vi vil tilpasse prosessor bruken basert på arbeidsadferd for å ikke tømme batteriet og senke hastigheten på maskinen din.", 158 "subscription.mining.line2": "Vi vil tilpasse prosessor bruken basert på arbeidsadferd for å ikke tømme batteriet og senke hastigheten på maskinen din.",
159 "subscription.mining.line3": "Så lenge du miner, har du ubegrenset tilgang til alle Franz Premium funksjoner.", 159 "subscription.mining.line3": "Så lenge du miner, har du ubegrenset tilgang til alle Ferdi Premium funksjoner.",
160 "subscription.mining.moreInformation": "Få mer informasjon om denne planen.", 160 "subscription.mining.moreInformation": "Få mer informasjon om denne planen.",
161 "subscriptionPopup.buttonCancel": "Kanseller", 161 "subscriptionPopup.buttonCancel": "Kanseller",
162 "subscriptionPopup.buttonDone": "Ferdig", 162 "subscriptionPopup.buttonDone": "Ferdi g",
163 "tabs.item.reload": "Reload", 163 "tabs.item.reload": "Reload",
164 "tabs.item.edit": "Rediger", 164 "tabs.item.edit": "Rediger",
165 "tabs.item.disableNotifications": "Deaktiver varsler", 165 "tabs.item.disableNotifications": "Deaktiver varsler",
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index 22b9551a7..c17439ea5 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Verstuur als e-mail", 13 "feature.shareFranz.action.email" : "Verstuur als e-mail",
14 "feature.shareFranz.action.facebook" : "Deel op Facebook", 14 "feature.shareFranz.action.facebook" : "Deel op Facebook",
15 "feature.shareFranz.action.twitter" : "Deel op Twitter", 15 "feature.shareFranz.action.twitter" : "Deel op Twitter",
16 "feature.shareFranz.headline" : "Franz is beter samen!", 16 "feature.shareFranz.headline" : "Ferdi is beter samen!",
17 "feature.shareFranz.shareText.email" : "Ik heb {telling} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "Ik heb {telling} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "Ik heb {tel} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "Ik heb {tel} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons het woord te verspreiden.", 19 "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons het woord te verspreiden.",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", 56 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Over Franz", 59 "menu.app.about" : "Over Ferdi",
60 "menu.app.announcement" : "Wat is er nieuw?", 60 "menu.app.announcement" : "Wat is er nieuw?",
61 "menu.app.checkForUpdates" : "Controleer op updates", 61 "menu.app.checkForUpdates" : "Controleer op updates",
62 "menu.app.hide" : "Verbergen", 62 "menu.app.hide" : "Verbergen",
@@ -97,7 +97,7 @@
97 "menu.view" : "Weergave", 97 "menu.view" : "Weergave",
98 "menu.view.enterFullScreen" : "Volledig scherm openen", 98 "menu.view.enterFullScreen" : "Volledig scherm openen",
99 "menu.view.exitFullScreen" : "Volledig scherm verlaten", 99 "menu.view.exitFullScreen" : "Volledig scherm verlaten",
100 "menu.view.reloadFranz" : "Franz Herladen", 100 "menu.view.reloadFranz" : "Ferdi Herladen",
101 "menu.view.reloadService" : "Service Herladen", 101 "menu.view.reloadService" : "Service Herladen",
102 "menu.view.resetZoom" : "Werkelijke Grootte", 102 "menu.view.resetZoom" : "Werkelijke Grootte",
103 "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit", 103 "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Aan het laden", 168 "service.webviewLoader.loading" : "Aan het laden",
169 "services.getStarted" : "Beginnen", 169 "services.getStarted" : "Beginnen",
170 "services.welcome" : "Welkom bij Franz", 170 "services.welcome" : "Welkom bij Ferdi",
171 "settings.account.account.editButton" : "Account bewerken", 171 "settings.account.account.editButton" : "Account bewerken",
172 "settings.account.accountType.basic" : "Basis Account", 172 "settings.account.accountType.basic" : "Basis Account",
173 "settings.account.accountType.premium" : "Premium Supporter Account", 173 "settings.account.accountType.premium" : "Premium Supporter Account",
174 "settings.account.buttonSave" : "Profiel bijwerken", 174 "settings.account.buttonSave" : "Profiel bijwerken",
175 "settings.account.deleteAccount" : "Account verwijderen", 175 "settings.account.deleteAccount" : "Account verwijderen",
176 "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!", 176 "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!",
177 "settings.account.deleteInfo" : "Indien u uw Franz account niet meer nodig heeft, kan u hier uw account en alle gerelateerde gegevens verwijderen.", 177 "settings.account.deleteInfo" : "Indien u uw Ferdi account niet meer nodig heeft, kan u hier uw account en alle gerelateerde gegevens verwijderen.",
178 "settings.account.headline" : "Account", 178 "settings.account.headline" : "Account",
179 "settings.account.headlineAccount" : "Account informatie", 179 "settings.account.headlineAccount" : "Account informatie",
180 "settings.account.headlineDangerZone" : "Gevarenzone", 180 "settings.account.headlineDangerZone" : "Gevarenzone",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Cache wissen", 198 "settings.app.buttonClearAllCache" : "Cache wissen",
199 "settings.app.buttonInstallUpdate" : "Herstart & installeer update", 199 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
200 "settings.app.buttonSearchForUpdate" : "Controleer op updates", 200 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
201 "settings.app.cacheInfo" : "Franz cache gebruikt momenteel {size} schijfruimte.", 201 "settings.app.cacheInfo" : "Ferdi cache gebruikt momenteel {size} schijfruimte.",
202 "settings.app.currentVersion" : "Huidige versie:", 202 "settings.app.currentVersion" : "Huidige versie:",
203 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", 203 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
204 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", 204 "settings.app.form.autoLaunchOnStart" : "Lanceer Ferdi bij opstarten",
205 "settings.app.form.beta" : "Inclusief beta versies", 205 "settings.app.form.beta" : "Inclusief beta versies",
206 "settings.app.form.darkMode" : "Word lid van de Dark Side", 206 "settings.app.form.darkMode" : "Word lid van de Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", 207 "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Taal", 212 "settings.app.form.language" : "Taal",
213 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", 213 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Ferdi naar de systeembalk",
214 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 214 "settings.app.form.runInBackground" : "Houd Ferdi op de achtergrond wanneer het venster gesloten wordt",
215 "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", 215 "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
217 "settings.app.headline" : "Instellingen", 217 "settings.app.headline" : "Instellingen",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Officiële vertalingen zijn in het Engels en Duits. Alle andere tallen zijn op de gemeenschap gebaseerde vertalingen.", 223 "settings.app.languageDisclaimer" : "Officiële vertalingen zijn in het Engels en Duits. Alle andere tallen zijn op de gemeenschap gebaseerde vertalingen.",
224 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", 224 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig",
225 "settings.app.subheadlineCache" : "Cache", 225 "settings.app.subheadlineCache" : "Cache",
226 "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.", 226 "settings.app.translationHelp" : "Help ons om Ferdi te vertalen naar uw taal.",
227 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", 227 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
228 "settings.app.updateStatusSearching" : "Zoekt naar updates", 228 "settings.app.updateStatusSearching" : "Zoekt naar updates",
229 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", 229 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Ferdi",
230 "settings.invite.headline" : "Nodig vrienden uit", 230 "settings.invite.headline" : "Nodig vrienden uit",
231 "settings.navigation.account" : "Account", 231 "settings.navigation.account" : "Account",
232 "settings.navigation.availableServices" : "Beschikbare services", 232 "settings.navigation.availableServices" : "Beschikbare services",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "{name} toevoegen", 256 "settings.service.form.addServiceHeadline" : "{name} toevoegen",
257 "settings.service.form.availableServices" : "Beschikbare services", 257 "settings.service.form.availableServices" : "Beschikbare services",
258 "settings.service.form.customUrl" : "Aangepaste server", 258 "settings.service.form.customUrl" : "Aangepaste server",
259 "settings.service.form.customUrlPremiumInfo" : "Om intern gehoste services toe te voegen heb je een Franz Premium Supporter Account nodig.", 259 "settings.service.form.customUrlPremiumInfo" : "Om intern gehoste services toe te voegen heb je een Ferdi Premium Supporter Account nodig.",
260 "settings.service.form.customUrlUpgradeAccount" : "Je account upgraden", 260 "settings.service.form.customUrlUpgradeAccount" : "Je account upgraden",
261 "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.", 261 "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.",
262 "settings.service.form.deleteButton" : "Service verwijderen", 262 "settings.service.form.deleteButton" : "Service verwijderen",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Naam", 278 "settings.service.form.name" : "Naam",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Instellingen", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Instellingen",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", 282 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken",
283 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", 283 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)",
284 "settings.service.form.proxy.port" : "Poort", 284 "settings.service.form.proxy.port" : "Poort",
285 "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw op na het aanpassen van proxy Instellingen.", 285 "settings.service.form.proxy.restartInfo" : "Start Ferdi opnieuw op na het aanpassen van proxy Instellingen.",
286 "settings.service.form.proxy.user" : "Gebruiker (optioneel)", 286 "settings.service.form.proxy.user" : "Gebruiker (optioneel)",
287 "settings.service.form.saveButton" : "Service opslaan", 287 "settings.service.form.saveButton" : "Service opslaan",
288 "settings.service.form.tabHosted" : "Gehost", 288 "settings.service.form.tabHosted" : "Gehost",
@@ -300,7 +300,7 @@
300 "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit", 300 "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit",
301 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", 301 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen",
302 "settings.team.contentHeadline" : "Frans voor Teams", 302 "settings.team.contentHeadline" : "Frans voor Teams",
303 "settings.team.copy" : "Franz voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk teamlid apart, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team regeert alles!", 303 "settings.team.copy" : "Ferdi voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk teamlid apart, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team regeert alles!",
304 "settings.team.headline" : "Team", 304 "settings.team.headline" : "Team",
305 "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.", 305 "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.",
306 "settings.team.manageAction" : "Beheer je Team op meetfranz.com", 306 "settings.team.manageAction" : "Beheer je Team op meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Je hebt nog geen werkruimtes toegevoegd.", 326 "settings.workspaces.noWorkspacesAdded" : "Je hebt nog geen werkruimtes toegevoegd.",
327 "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", 327 "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw",
328 "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", 328 "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen",
329 "settings.workspaces.workspaceFeatureHeadline" : "Minder is meer: we presenteren Franz Werkruimtes", 329 "settings.workspaces.workspaceFeatureHeadline" : "Minder is meer: we presenteren Ferdi Werkruimtes",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Kan je werkruimtes niet laden", 331 "settings.workspaces.workspacesRequestFailed" : "Kan je werkruimtes niet laden",
332 "sidebar.addNewService" : "Nieuw service toevoegen", 332 "sidebar.addNewService" : "Nieuw service toevoegen",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "Al een account, inloggen?", 348 "signup.link.login" : "Al een account, inloggen?",
349 "signup.password.label" : "Wachtwoord", 349 "signup.password.label" : "Wachtwoord",
350 "signup.submit.label" : "Account aanmaken", 350 "signup.submit.label" : "Account aanmaken",
351 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn",
352 "subscription.features.ads" : "Geen reclame, nooit!",
353 "subscription.features.comingSoon" : "komt binnenkort",
354 "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades",
355 "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe",
356 "subscription.features.proxy" : "Proxy ondersteuning voor services",
357 "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck",
358 "subscription.features.workspaces" : "Organiseer je diensten in werkruimtes",
359 "subscription.includedFeatures" : "Een betalend account voor Ferdi omvat",
360 "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden",
361 "subscription.submit.label" : "Ik wil de ontwikkeling van Ferdi steunen",
362 "subscription.type.free" : "gratis",
363 "subscription.type.month" : "maand",
364 "subscription.type.year" : "jaar",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte aan", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte aan",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Heractiveer premium account", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Heractiveer premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Pas werkruimte instellingen aan", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Pas werkruimte instellingen aan",
385 "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar" 399 "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar"
386} 400}
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index 96dd7cc04..236a688ba 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -7,7 +7,7 @@
7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", 7 "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional",
8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial",
9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action" : "Sponsor Franz", 10 "feature.delayApp.upgrade.action" : "Sponsor Ferdi",
11 "feature.delayApp.upgrade.actionShort" : "Upgrade Account", 11 "feature.delayApp.upgrade.actionShort" : "Upgrade Account",
12 "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.", 12 "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.",
13 "feature.shareFranz.action.email" : "Verstuur als e-mail", 13 "feature.shareFranz.action.email" : "Verstuur als e-mail",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", 56 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Over Franz", 59 "menu.app.about" : "Over Ferdi",
60 "menu.app.announcement" : "Wat is nieuw?", 60 "menu.app.announcement" : "Wat is nieuw?",
61 "menu.app.checkForUpdates" : "Controleer op updates", 61 "menu.app.checkForUpdates" : "Controleer op updates",
62 "menu.app.hide" : "Verbergen", 62 "menu.app.hide" : "Verbergen",
@@ -97,7 +97,7 @@
97 "menu.view" : "Weergave", 97 "menu.view" : "Weergave",
98 "menu.view.enterFullScreen" : "Gebruik volledig scherm", 98 "menu.view.enterFullScreen" : "Gebruik volledig scherm",
99 "menu.view.exitFullScreen" : "Volledig scherm verlaten", 99 "menu.view.exitFullScreen" : "Volledig scherm verlaten",
100 "menu.view.reloadFranz" : "Herlaad Franz", 100 "menu.view.reloadFranz" : "Herlaad Ferdi",
101 "menu.view.reloadService" : "Een service opnieuw laden", 101 "menu.view.reloadService" : "Een service opnieuw laden",
102 "menu.view.resetZoom" : "Werkelijke grootte", 102 "menu.view.resetZoom" : "Werkelijke grootte",
103 "menu.view.toggleDevTools" : "Ontwikkelaarstools aan\/uit", 103 "menu.view.toggleDevTools" : "Ontwikkelaarstools aan\/uit",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Aan het laden", 168 "service.webviewLoader.loading" : "Aan het laden",
169 "services.getStarted" : "Begin", 169 "services.getStarted" : "Begin",
170 "services.welcome" : "Welkom bij Franz", 170 "services.welcome" : "Welkom bij Ferdi",
171 "settings.account.account.editButton" : "Bewerk account", 171 "settings.account.account.editButton" : "Bewerk account",
172 "settings.account.accountType.basic" : "Basisaccount", 172 "settings.account.accountType.basic" : "Basisaccount",
173 "settings.account.accountType.premium" : "Premium Supporter Account", 173 "settings.account.accountType.premium" : "Premium Supporter Account",
@@ -201,7 +201,7 @@
201 "settings.app.cacheInfo" : "Franz gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.", 201 "settings.app.cacheInfo" : "Franz gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.",
202 "settings.app.currentVersion" : "Huidige versie:", 202 "settings.app.currentVersion" : "Huidige versie:",
203 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", 203 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
204 "settings.app.form.autoLaunchOnStart" : "Open Franz bij opstarten", 204 "settings.app.form.autoLaunchOnStart" : "Open Ferdi bij opstarten",
205 "settings.app.form.beta" : "Inclusief bètaversies", 205 "settings.app.form.beta" : "Inclusief bètaversies",
206 "settings.app.form.darkMode" : "Stap over naar de donkere kant", 206 "settings.app.form.darkMode" : "Stap over naar de donkere kant",
207 "settings.app.form.enableGPUAcceleration" : "Schakel videokaart-acceleratie in ", 207 "settings.app.form.enableGPUAcceleration" : "Schakel videokaart-acceleratie in ",
@@ -226,7 +226,7 @@
226 "settings.app.translationHelp" : "Help ons om Franz uw taal te laten spreken.", 226 "settings.app.translationHelp" : "Help ons om Franz uw taal te laten spreken.",
227 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", 227 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
228 "settings.app.updateStatusSearching" : "Zoekt naar updates", 228 "settings.app.updateStatusSearching" : "Zoekt naar updates",
229 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", 229 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Ferdi",
230 "settings.invite.headline" : "Nodig vrienden uit", 230 "settings.invite.headline" : "Nodig vrienden uit",
231 "settings.navigation.account" : "Account", 231 "settings.navigation.account" : "Account",
232 "settings.navigation.availableServices" : "Beschikbare services", 232 "settings.navigation.availableServices" : "Beschikbare services",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Toevoegen {name}", 256 "settings.service.form.addServiceHeadline" : "Toevoegen {name}",
257 "settings.service.form.availableServices" : "Beschikbare services", 257 "settings.service.form.availableServices" : "Beschikbare services",
258 "settings.service.form.customUrl" : "Aangepaste server", 258 "settings.service.form.customUrl" : "Aangepaste server",
259 "settings.service.form.customUrlPremiumInfo" : "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.", 259 "settings.service.form.customUrlPremiumInfo" : "Om zelf-gehoste services toe te kunnen voegen, heb je een Ferdi Premium Supporter Account nodig.",
260 "settings.service.form.customUrlUpgradeAccount" : "Upgrade je account", 260 "settings.service.form.customUrlUpgradeAccount" : "Upgrade je account",
261 "settings.service.form.customUrlValidationError" : "Kon aangepaste server {name} niet valideren.", 261 "settings.service.form.customUrlValidationError" : "Kon aangepaste server {name} niet valideren.",
262 "settings.service.form.deleteButton" : "Verwijder service", 262 "settings.service.form.deleteButton" : "Verwijder service",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Naam", 278 "settings.service.form.name" : "Naam",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers", 281 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Ferdi servers",
282 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", 282 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken",
283 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", 283 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)",
284 "settings.service.form.proxy.port" : "Poort", 284 "settings.service.form.proxy.port" : "Poort",
285 "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw na het aanpassen van proxy instellingen.", 285 "settings.service.form.proxy.restartInfo" : "Start Ferdi opnieuw na het aanpassen van proxy instellingen.",
286 "settings.service.form.proxy.user" : "Gebruiker (optioneel)", 286 "settings.service.form.proxy.user" : "Gebruiker (optioneel)",
287 "settings.service.form.saveButton" : "Service opslaan", 287 "settings.service.form.saveButton" : "Service opslaan",
288 "settings.service.form.tabHosted" : "Gehost", 288 "settings.service.form.tabHosted" : "Gehost",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 5ed8fc70b..d3af80551 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -7,29 +7,29 @@
7 "feature.delayApp.trial.action" : "Sim, Quero a versão experimental do Franz Profissional de 14 dias", 7 "feature.delayApp.trial.action" : "Sim, Quero a versão experimental do Franz Profissional de 14 dias",
8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", 8 "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial",
9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", 9 "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line",
10 "feature.delayApp.upgrade.action" : "Faz parte do grupo de apoio do Franz", 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.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", 12 "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.",
13 "feature.shareFranz.action.email" : "Enviar por e-mail", 13 "feature.shareFranz.action.email" : "Enviar por e-mail",
14 "feature.shareFranz.action.facebook" : "Compartilahr no Facebook", 14 "feature.shareFranz.action.facebook" : "Compartilahr no Facebook",
15 "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", 15 "feature.shareFranz.action.twitter" : "Compartilhar no Twitter",
16 "feature.shareFranz.headline" : "Franz é melhor junto!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
20 "feature.todos.premium.info" : "Franz Todos está agora disponível para utilizadores premium!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Todos os outros vão ter de esperar um pouco mais.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Melhorar a conta", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Não foi possível estabelecer ligação aos serviços do Franz", 23 "global.api.unhealthy" : "Não foi possível estabelecer ligação aos serviços do Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Não estás ligado à Internet", 25 "global.notConnectedToTheInternet" : "Não estás ligado à Internet",
26 "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", 26 "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})",
27 "global.spellchecking.autodetect" : "Detectar a lingua automaticamente", 27 "global.spellchecking.autodetect" : "Detectar a lingua automaticamente",
28 "global.spellchecking.autodetect.short" : "Automático", 28 "global.spellchecking.autodetect.short" : "Automático",
29 "global.spellchecking.language" : "Linguagem para correção ortográfica", 29 "global.spellchecking.language" : "Linguagem para correção ortográfica",
30 "global.upgradeButton.upgradeToPro" : "Actualiza para o Franz Profissional", 30 "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional",
31 "import.headline" : "Importa os teus serviços do Franz", 31 "import.headline" : "Importa os teus serviços do Ferdi",
32 "import.notSupportedHeadline" : "Estes serviços ainda não são suportados pelo Franz 5", 32 "import.notSupportedHeadline" : "Estes serviços ainda não são suportados pelo Ferdi 5",
33 "import.skip.label" : "Eu quero adicionar serviços manualmente", 33 "import.skip.label" : "Eu quero adicionar serviços manualmente",
34 "import.submit.label" : "Importar serviços", 34 "import.submit.label" : "Importar serviços",
35 "infobar.buttonChangelog" : "O que há de novo?", 35 "infobar.buttonChangelog" : "O que há de novo?",
@@ -97,7 +97,7 @@
97 "menu.view" : "Ver", 97 "menu.view" : "Ver",
98 "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo", 98 "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo",
99 "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo", 99 "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo",
100 "menu.view.reloadFranz" : "Recarregar Franz", 100 "menu.view.reloadFranz" : "Recarregar Ferdi",
101 "menu.view.reloadService" : "Recarregar serviço", 101 "menu.view.reloadService" : "Recarregar serviço",
102 "menu.view.resetZoom" : "Tamanho Real", 102 "menu.view.resetZoom" : "Tamanho Real",
103 "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento", 103 "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "A ler", 168 "service.webviewLoader.loading" : "A ler",
169 "services.getStarted" : "Vamos começar", 169 "services.getStarted" : "Vamos começar",
170 "services.welcome" : "Bem-vindo ao Franz", 170 "services.welcome" : "Bem-vindo ao Ferdi",
171 "settings.account.account.editButton" : "Editar conta", 171 "settings.account.account.editButton" : "Editar conta",
172 "settings.account.accountType.basic" : "Conta Básica", 172 "settings.account.accountType.basic" : "Conta Básica",
173 "settings.account.accountType.premium" : "Conta Premium", 173 "settings.account.accountType.premium" : "Conta Premium",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Limpar cache", 198 "settings.app.buttonClearAllCache" : "Limpar cache",
199 "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização", 199 "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização",
200 "settings.app.buttonSearchForUpdate" : "Procurar atualizações", 200 "settings.app.buttonSearchForUpdate" : "Procurar atualizações",
201 "settings.app.cacheInfo" : "A cache do Franz está a usar {size} de espaço em disco.", 201 "settings.app.cacheInfo" : "A cache do Ferdi está a usar {size} de espaço em disco.",
202 "settings.app.currentVersion" : "Versão atual", 202 "settings.app.currentVersion" : "Versão atual",
203 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", 203 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano",
204 "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz após iniciar o computador", 204 "settings.app.form.autoLaunchOnStart" : "Iniciar o Ferdi após iniciar o computador",
205 "settings.app.form.beta" : "Incluir versões instáveis (beta)", 205 "settings.app.form.beta" : "Incluir versões instáveis (beta)",
206 "settings.app.form.darkMode" : "Junta-te ao Lado Negro", 206 "settings.app.form.darkMode" : "Junta-te ao Lado Negro",
207 "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU", 207 "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Idioma", 212 "settings.app.form.language" : "Idioma",
213 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a barra do sistema", 213 "settings.app.form.minimizeToSystemTray" : "Minimizar o Ferdi para a barra do sistema",
214 "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", 214 "settings.app.form.runInBackground" : "Manter o Ferdi em segundo plano ao fechar a janela",
215 "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados", 215 "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas",
217 "settings.app.headline" : "Definições", 217 "settings.app.headline" : "Definições",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Alterações requerem reinício", 224 "settings.app.restartRequired" : "Alterações requerem reinício",
225 "settings.app.subheadlineCache" : "Cache", 225 "settings.app.subheadlineCache" : "Cache",
226 "settings.app.translationHelp" : "Ajude-nos a traduzir a Franz para a sua língua.", 226 "settings.app.translationHelp" : "Ajude-nos a traduzir a Ferdi para a sua língua.",
227 "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", 227 "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...",
228 "settings.app.updateStatusSearching" : "A procurar atualizações", 228 "settings.app.updateStatusSearching" : "A procurar atualizações",
229 "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Franz", 229 "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Ferdi",
230 "settings.invite.headline" : "Convide Amigos", 230 "settings.invite.headline" : "Convide Amigos",
231 "settings.navigation.account" : "Conta", 231 "settings.navigation.account" : "Conta",
232 "settings.navigation.availableServices" : "Serviços disponíveis", 232 "settings.navigation.availableServices" : "Serviços disponíveis",
@@ -282,7 +282,7 @@
282 "settings.service.form.proxy.isEnabled" : "Usar Proxy", 282 "settings.service.form.proxy.isEnabled" : "Usar Proxy",
283 "settings.service.form.proxy.password" : "Palavra-chave (opcional)", 283 "settings.service.form.proxy.password" : "Palavra-chave (opcional)",
284 "settings.service.form.proxy.port" : "Porta", 284 "settings.service.form.proxy.port" : "Porta",
285 "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, após atualizar as definições do Franz", 285 "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, após atualizar as definições do Ferdi",
286 "settings.service.form.proxy.user" : "Utilizador (opcional)", 286 "settings.service.form.proxy.user" : "Utilizador (opcional)",
287 "settings.service.form.saveButton" : "Guardar serviço", 287 "settings.service.form.saveButton" : "Guardar serviço",
288 "settings.service.form.tabHosted" : "Com domínio", 288 "settings.service.form.tabHosted" : "Com domínio",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", 299 "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados",
300 "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", 300 "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas",
301 "settings.services.updatedInfo" : "As alterações foram guardadas", 301 "settings.services.updatedInfo" : "As alterações foram guardadas",
302 "settings.team.contentHeadline" : "Franz para equipas", 302 "settings.team.contentHeadline" : "Ferdi para equipas",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Equipa", 304 "settings.team.headline" : "Equipa",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Gerir a tua Equipa em meetfranz.com", 306 "settings.team.manageAction" : "Gerir a tua Equipa em meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "Ainda não adicionou nenhum Espaço de trabalho", 326 "settings.workspaces.noWorkspacesAdded" : "Ainda não adicionou nenhum Espaço de trabalho",
327 "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente", 327 "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente",
328 "settings.workspaces.updatedInfo" : "As suas alterações foram gravadas", 328 "settings.workspaces.updatedInfo" : "As suas alterações foram gravadas",
329 "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo os Espaço de trabalho Franz", 329 "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo os Espaço de trabalho Ferdi",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Adicionar um novo serviço", 332 "sidebar.addNewService" : "Adicionar um novo serviço",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index f220089b6..f7c871bd0 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -13,14 +13,14 @@
13 "feature.shareFranz.action.email" : "Отправить по email", 13 "feature.shareFranz.action.email" : "Отправить по email",
14 "feature.shareFranz.action.facebook" : "Поделиться на Facebook", 14 "feature.shareFranz.action.facebook" : "Поделиться на Facebook",
15 "feature.shareFranz.action.twitter" : "Поделиться в Twitter", 15 "feature.shareFranz.action.twitter" : "Поделиться в Twitter",
16 "feature.shareFranz.headline" : "Сделаем Franz лучше вместе!", 16 "feature.shareFranz.headline" : "Сделаем Ferdi лучше вместе!",
17 "feature.shareFranz.shareText.email" : "Я добавил {count} сервисов во Franz! Теперь доступны такие мессенджеры как WhatsApp, Messenger, Slack, Skype и другие. Полый список вы найдете на www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "Я добавил {count} сервисов во Franz! Теперь доступны такие мессенджеры как WhatsApp, Messenger, Slack, Skype и другие. Полый список вы найдете на www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "Я добавил {count} сервис(ов) в Franz! Скачай бесплатную аппку для WhatsApp, Messenger, Slack, Skype и иже на www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "Я добавил {count} сервис(ов) в Franz! Скачай бесплатную аппку для WhatsApp, Messenger, Slack, Skype и иже на www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Расскажи своим друзьям и коллегам насколько прелестен Franz и помоги нам развиться", 19 "feature.shareFranz.text" : "Расскажи своим друзьям и коллегам насколько прелестен Franz и помоги нам развиться",
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Невозможно подключиться к онлайн-сервисам Franz", 23 "global.api.unhealthy" : "Невозможно подключиться к онлайн-сервисам Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Вы не подключены к сети Интернет", 25 "global.notConnectedToTheInternet" : "Вы не подключены к сети Интернет",
26 "global.spellchecker.useDefault" : "Использовать системные параметры по умолчанию ({default})", 26 "global.spellchecker.useDefault" : "Использовать системные параметры по умолчанию ({default})",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Сессия устарела, пожалуйста, войдите снова.", 56 "login.tokenExpired" : "Сессия устарела, пожалуйста, войдите снова.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "О Franz", 59 "menu.app.about" : "О Ferdi",
60 "menu.app.announcement" : "Что нового?", 60 "menu.app.announcement" : "Что нового?",
61 "menu.app.checkForUpdates" : "Проверить обновления", 61 "menu.app.checkForUpdates" : "Проверить обновления",
62 "menu.app.hide" : "Скрыть", 62 "menu.app.hide" : "Скрыть",
@@ -97,7 +97,7 @@
97 "menu.view" : "Вид", 97 "menu.view" : "Вид",
98 "menu.view.enterFullScreen" : "На весь экран", 98 "menu.view.enterFullScreen" : "На весь экран",
99 "menu.view.exitFullScreen" : "В окне", 99 "menu.view.exitFullScreen" : "В окне",
100 "menu.view.reloadFranz" : "Перезагрузить Franz", 100 "menu.view.reloadFranz" : "Перезагрузить Ferdi",
101 "menu.view.reloadService" : "Перезапустить сервис", 101 "menu.view.reloadService" : "Перезапустить сервис",
102 "menu.view.resetZoom" : "Фактический размер", 102 "menu.view.resetZoom" : "Фактический размер",
103 "menu.view.toggleDevTools" : "Показать инструменты разработчика", 103 "menu.view.toggleDevTools" : "Показать инструменты разработчика",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Загрузка", 168 "service.webviewLoader.loading" : "Загрузка",
169 "services.getStarted" : "Начать работу", 169 "services.getStarted" : "Начать работу",
170 "services.welcome" : "Добро пожаловать во Franz", 170 "services.welcome" : "Добро пожаловать во Ferdi",
171 "settings.account.account.editButton" : "Редактировать аккаунт", 171 "settings.account.account.editButton" : "Редактировать аккаунт",
172 "settings.account.accountType.basic" : "Базовый аккаунт", 172 "settings.account.accountType.basic" : "Базовый аккаунт",
173 "settings.account.accountType.premium" : "Премиум аккаунт", 173 "settings.account.accountType.premium" : "Премиум аккаунт",
@@ -201,7 +201,7 @@
201 "settings.app.cacheInfo" : "Кэш занимает {size} на диске.", 201 "settings.app.cacheInfo" : "Кэш занимает {size} на диске.",
202 "settings.app.currentVersion" : "Текущая версия:", 202 "settings.app.currentVersion" : "Текущая версия:",
203 "settings.app.form.autoLaunchInBackground" : "Открывать в фоне", 203 "settings.app.form.autoLaunchInBackground" : "Открывать в фоне",
204 "settings.app.form.autoLaunchOnStart" : "Запускать Franz при старте", 204 "settings.app.form.autoLaunchOnStart" : "Запускать Ferdi при старте",
205 "settings.app.form.beta" : "Включая бета версии", 205 "settings.app.form.beta" : "Включая бета версии",
206 "settings.app.form.darkMode" : "Перейти на Тёмную сторону", 206 "settings.app.form.darkMode" : "Перейти на Тёмную сторону",
207 "settings.app.form.enableGPUAcceleration" : "Включить ускорение GPU", 207 "settings.app.form.enableGPUAcceleration" : "Включить ускорение GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Язык", 212 "settings.app.form.language" : "Язык",
213 "settings.app.form.minimizeToSystemTray" : "Сворачивать Franz в системный трей", 213 "settings.app.form.minimizeToSystemTray" : "Сворачивать Ferdi в системный трей",
214 "settings.app.form.runInBackground" : "Оставлять Franz в фоне при закрытии окна", 214 "settings.app.form.runInBackground" : "Оставлять Ferdi в фоне при закрытии окна",
215 "settings.app.form.showDisabledServices" : "Показывать вкладки отключённых служб", 215 "settings.app.form.showDisabledServices" : "Показывать вкладки отключённых служб",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Показывать значок непрочитанного сообщения при отключённых уведомлениях", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Показывать значок непрочитанного сообщения при отключённых уведомлениях",
217 "settings.app.headline" : "Настройки", 217 "settings.app.headline" : "Настройки",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Официальная поддержка только для английского и немецкого языков. Остальные языки переведены сообществом.", 223 "settings.app.languageDisclaimer" : "Официальная поддержка только для английского и немецкого языков. Остальные языки переведены сообществом.",
224 "settings.app.restartRequired" : "Изменения требуют перезагрузки приложения", 224 "settings.app.restartRequired" : "Изменения требуют перезагрузки приложения",
225 "settings.app.subheadlineCache" : "Кэш", 225 "settings.app.subheadlineCache" : "Кэш",
226 "settings.app.translationHelp" : "Помогите нам перевести Franz на ваш язык.", 226 "settings.app.translationHelp" : "Помогите нам перевести Ferdi на ваш язык.",
227 "settings.app.updateStatusAvailable" : "Доступно обновление, идёт загрузка...", 227 "settings.app.updateStatusAvailable" : "Доступно обновление, идёт загрузка...",
228 "settings.app.updateStatusSearching" : "Поиск обновлений", 228 "settings.app.updateStatusSearching" : "Поиск обновлений",
229 "settings.app.updateStatusUpToDate" : "Вы используете актуальную версию Franz", 229 "settings.app.updateStatusUpToDate" : "Вы используете актуальную версию Ferdi",
230 "settings.invite.headline" : "Пригласить друзей", 230 "settings.invite.headline" : "Пригласить друзей",
231 "settings.navigation.account" : "Аккаунт", 231 "settings.navigation.account" : "Аккаунт",
232 "settings.navigation.availableServices" : "Доступные сервисы", 232 "settings.navigation.availableServices" : "Доступные сервисы",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Название", 278 "settings.service.form.name" : "Название",
279 "settings.service.form.proxy.headline" : "Настройки Прокси HTTP\/HTTPS", 279 "settings.service.form.proxy.headline" : "Настройки Прокси HTTP\/HTTPS",
280 "settings.service.form.proxy.host" : "Прокси Host\/IP", 280 "settings.service.form.proxy.host" : "Прокси Host\/IP",
281 "settings.service.form.proxy.info" : "Настройки прокси не будут синхронизированны с серверами Franz", 281 "settings.service.form.proxy.info" : "Настройки прокси не будут синхронизированны с серверами Ferdi",
282 "settings.service.form.proxy.isEnabled" : "Использовать прокси", 282 "settings.service.form.proxy.isEnabled" : "Использовать прокси",
283 "settings.service.form.proxy.password" : "Пароль (опционально)", 283 "settings.service.form.proxy.password" : "Пароль (опционально)",
284 "settings.service.form.proxy.port" : "Порт", 284 "settings.service.form.proxy.port" : "Порт",
285 "settings.service.form.proxy.restartInfo" : "Пожалуйста перезапустите Franz после изменения настроек прокси.", 285 "settings.service.form.proxy.restartInfo" : "Пожалуйста перезапустите Ferdi после изменения настроек прокси.",
286 "settings.service.form.proxy.user" : "Пользователь (опционально)", 286 "settings.service.form.proxy.user" : "Пользователь (опционально)",
287 "settings.service.form.saveButton" : "Сохранить сервис", 287 "settings.service.form.saveButton" : "Сохранить сервис",
288 "settings.service.form.tabHosted" : "Размещено", 288 "settings.service.form.tabHosted" : "Размещено",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Все звуки отключены", 299 "settings.services.tooltip.isMuted" : "Все звуки отключены",
300 "settings.services.tooltip.notificationsDisabled" : "Уведомления отключены", 300 "settings.services.tooltip.notificationsDisabled" : "Уведомления отключены",
301 "settings.services.updatedInfo" : "Изменения сохранены", 301 "settings.services.updatedInfo" : "Изменения сохранены",
302 "settings.team.contentHeadline" : "Franz для Команд", 302 "settings.team.contentHeadline" : "Ferdi для Команд",
303 "settings.team.copy" : "Franz для Команд позволяет пригласить коллег в вашу команду, отправив им емайл с приглашением, а также управлять их подписками в настройках вашего аккаунта. Не тратьте время на настройку подписок для каждого члена команды индивидуально, забудьте о многочисленных платежках и разных циклах оплаты - одна команда для управления всеми!", 303 "settings.team.copy" : "Ferdi для Команд позволяет пригласить коллег в вашу команду, отправив им емайл с приглашением, а также управлять их подписками в настройках вашего аккаунта. Не тратьте время на настройку подписок для каждого члена команды индивидуально, забудьте о многочисленных платежках и разных циклах оплаты - одна команда для управления всеми!",
304 "settings.team.headline" : "Команда", 304 "settings.team.headline" : "Команда",
305 "settings.team.intro" : "Вы и ваша команда испльзуете Franz? Вы теперь можете управлять Премиум подписками любого количества коллег, друзей и членов семьи, из одного и того же аккаунта.", 305 "settings.team.intro" : "Вы и ваша команда испльзуете Franz? Вы теперь можете управлять Премиум подписками любого количества коллег, друзей и членов семьи, из одного и того же аккаунта.",
306 "settings.team.manageAction" : "Управляйте вашей Командой на meetfranz.com", 306 "settings.team.manageAction" : "Управляйте вашей Командой на meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Попробовать снова", 327 "settings.workspaces.tryReloadWorkspaces" : "Попробовать снова",
328 "settings.workspaces.updatedInfo" : "Your changes have been saved", 328 "settings.workspaces.updatedInfo" : "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Добавить новый сервис", 332 "sidebar.addNewService" : "Добавить новый сервис",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -348,6 +348,20 @@
348 "signup.link.login" : "Уже есть аккаунт, войти?", 348 "signup.link.login" : "Уже есть аккаунт, войти?",
349 "signup.password.label" : "Пароль", 349 "signup.password.label" : "Пароль",
350 "signup.submit.label" : "Создать аккаунт", 350 "signup.submit.label" : "Создать аккаунт",
351 "subscription.euTaxInfo" : "Резидентам ЕвроСоюза: могут применяться местные налоги",
352 "subscription.features.ads" : "Без рекламы, навсегда!",
353 "subscription.features.comingSoon" : "скоро",
354 "subscription.features.noInterruptions" : "Никаких задержек и предложений перейти на платную версию",
355 "subscription.features.onpremise.mattermost" : "Локальные\/размещенные на хостинге сервисы, такие как Mattermost",
356 "subscription.features.proxy" : "Подержка прокси для сервисов",
357 "subscription.features.spellchecker" : "Поддержка проверки правописания",
358 "subscription.features.workspaces" : "Organize your services in workspaces",
359 "subscription.includedFeatures" : "Платный премиум аккаунт Ferdi включает",
360 "subscription.paymentSessionError" : "Невозможно загрузить форму оплаты",
361 "subscription.submit.label" : "Я хочу поддержать разработку Ferdi",
362 "subscription.type.free" : "бесплатно",
363 "subscription.type.month" : "месяц",
364 "subscription.type.year" : "год",
351 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", 365 "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial",
352 "subscription.cta.allOptions" : "See all options", 366 "subscription.cta.allOptions" : "See all options",
353 "subscription.cta.choosePlan" : "Choose your plan", 367 "subscription.cta.choosePlan" : "Choose your plan",
@@ -380,7 +394,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 394 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 395 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Восстановить премиум аккаунт", 396 "workspaceDrawer.reactivatePremiumAccountLabel" : "Восстановить премиум аккаунт",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 397 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 398 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 399 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 400}
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index f80680399..631613f73 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -20,7 +20,7 @@
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", 23 "global.api.unhealthy" : "Nedá sa pripojiť k online službám Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.", 25 "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.",
26 "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", 26 "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})",
@@ -97,7 +97,7 @@
97 "menu.view" : "Zobraziť", 97 "menu.view" : "Zobraziť",
98 "menu.view.enterFullScreen" : "Na celú obrazovku", 98 "menu.view.enterFullScreen" : "Na celú obrazovku",
99 "menu.view.exitFullScreen" : "Ukončiť režim na celú obrazovku", 99 "menu.view.exitFullScreen" : "Ukončiť režim na celú obrazovku",
100 "menu.view.reloadFranz" : "Obnoviť Franz", 100 "menu.view.reloadFranz" : "Obnoviť Ferdi",
101 "menu.view.reloadService" : "Obnoviť službu", 101 "menu.view.reloadService" : "Obnoviť službu",
102 "menu.view.resetZoom" : "Pôvodná veľkosť", 102 "menu.view.resetZoom" : "Pôvodná veľkosť",
103 "menu.view.toggleDevTools" : "Prepnúť vývojárske nástroje", 103 "menu.view.toggleDevTools" : "Prepnúť vývojárske nástroje",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,14 +167,14 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Načítava", 168 "service.webviewLoader.loading" : "Načítava",
169 "services.getStarted" : "Začíname", 169 "services.getStarted" : "Začíname",
170 "services.welcome" : "Vítajte v aplikácii Franz", 170 "services.welcome" : "Vítajte v aplikácii Ferdi",
171 "settings.account.account.editButton" : "Upraviť účet", 171 "settings.account.account.editButton" : "Upraviť účet",
172 "settings.account.accountType.basic" : "Základný účet", 172 "settings.account.accountType.basic" : "Základný účet",
173 "settings.account.accountType.premium" : "Prémiový účet podporovateľa", 173 "settings.account.accountType.premium" : "Prémiový účet podporovateľa",
174 "settings.account.buttonSave" : "Aktualizovať profil", 174 "settings.account.buttonSave" : "Aktualizovať profil",
175 "settings.account.deleteAccount" : "Odstrániť účet", 175 "settings.account.deleteAccount" : "Odstrániť účet",
176 "settings.account.deleteEmailSent" : "Bol vám odoslaný e-mail s odkazom pre potvrdenie odstránenia vášho účtu. Váš účet a údaje sa nebudú dať obnoviť!", 176 "settings.account.deleteEmailSent" : "Bol vám odoslaný e-mail s odkazom pre potvrdenie odstránenia vášho účtu. Váš účet a údaje sa nebudú dať obnoviť!",
177 "settings.account.deleteInfo" : "Ak už nepotrebujete váš Franz účet, tu ho môžete zmazať spolu so všetkými prislúchajúcimi údajmi.", 177 "settings.account.deleteInfo" : "Ak už nepotrebujete váš Ferdi účet, tu ho môžete zmazať spolu so všetkými prislúchajúcimi údajmi.",
178 "settings.account.headline" : "Účet", 178 "settings.account.headline" : "Účet",
179 "settings.account.headlineAccount" : "Informácie o účte", 179 "settings.account.headlineAccount" : "Informácie o účte",
180 "settings.account.headlineDangerZone" : "Nebezpečná zóna", 180 "settings.account.headlineDangerZone" : "Nebezpečná zóna",
@@ -198,10 +198,10 @@
198 "settings.app.buttonClearAllCache" : "Vyčistiť vyrovnávaciu pamäť", 198 "settings.app.buttonClearAllCache" : "Vyčistiť vyrovnávaciu pamäť",
199 "settings.app.buttonInstallUpdate" : "Reštartovať a nainštalovať aktualizáciu", 199 "settings.app.buttonInstallUpdate" : "Reštartovať a nainštalovať aktualizáciu",
200 "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie", 200 "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie",
201 "settings.app.cacheInfo" : "Vyrovnávacia pamäť Franz momentálne používa {size} miesta na disku.", 201 "settings.app.cacheInfo" : "Vyrovnávacia pamäť Ferdi momentálne používa {size} miesta na disku.",
202 "settings.app.currentVersion" : "Súčasná verzia:", 202 "settings.app.currentVersion" : "Súčasná verzia:",
203 "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí", 203 "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí",
204 "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte", 204 "settings.app.form.autoLaunchOnStart" : "Spustiť Ferdi pri štarte",
205 "settings.app.form.beta" : "Vrátane beta verzií", 205 "settings.app.form.beta" : "Vrátane beta verzií",
206 "settings.app.form.darkMode" : "Spustiť Dark Side", 206 "settings.app.form.darkMode" : "Spustiť Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie", 207 "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Jazyk", 212 "settings.app.form.language" : "Jazyk",
213 "settings.app.form.minimizeToSystemTray" : "Minimalizovať Franz do systémovej lišty", 213 "settings.app.form.minimizeToSystemTray" : "Minimalizovať Ferdi do systémovej lišty",
214 "settings.app.form.runInBackground" : "Po zatvorení okna ponechať Franz spustený na pozadí", 214 "settings.app.form.runInBackground" : "Po zatvorení okna ponechať Ferdi spustený na pozadí",
215 "settings.app.form.showDisabledServices" : "Zobraziť záložky vypnutých služieb", 215 "settings.app.form.showDisabledServices" : "Zobraziť záložky vypnutých služieb",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobraziť symbol pre neprečítané správy, keď sú vypnuté upozornenia", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobraziť symbol pre neprečítané správy, keď sú vypnuté upozornenia",
217 "settings.app.headline" : "Nastavenia", 217 "settings.app.headline" : "Nastavenia",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Oficiálne preklady sú angličtina a nemčina. Všetky ostatné jazyky sú preklady založené na komunite.", 223 "settings.app.languageDisclaimer" : "Oficiálne preklady sú angličtina a nemčina. Všetky ostatné jazyky sú preklady založené na komunite.",
224 "settings.app.restartRequired" : "Zmeny vyžadujú reštart", 224 "settings.app.restartRequired" : "Zmeny vyžadujú reštart",
225 "settings.app.subheadlineCache" : "Vyrovnávacia pamäť", 225 "settings.app.subheadlineCache" : "Vyrovnávacia pamäť",
226 "settings.app.translationHelp" : "Pomôžte nám preložiť Franz do svojho jazyka.", 226 "settings.app.translationHelp" : "Pomôžte nám preložiť Ferdi do svojho jazyka.",
227 "settings.app.updateStatusAvailable" : "Je dostupná aktualizácia, sťahuje sa...", 227 "settings.app.updateStatusAvailable" : "Je dostupná aktualizácia, sťahuje sa...",
228 "settings.app.updateStatusSearching" : "Vyhľadáva aktualizácie", 228 "settings.app.updateStatusSearching" : "Vyhľadáva aktualizácie",
229 "settings.app.updateStatusUpToDate" : "Používate najnovšiu verziu Franz", 229 "settings.app.updateStatusUpToDate" : "Používate najnovšiu verziu Ferdi",
230 "settings.invite.headline" : "Pozvať priateľov", 230 "settings.invite.headline" : "Pozvať priateľov",
231 "settings.navigation.account" : "Účet", 231 "settings.navigation.account" : "Účet",
232 "settings.navigation.availableServices" : "Dostupné služby", 232 "settings.navigation.availableServices" : "Dostupné služby",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "Pridať {name}", 256 "settings.service.form.addServiceHeadline" : "Pridať {name}",
257 "settings.service.form.availableServices" : "Dostupné služby", 257 "settings.service.form.availableServices" : "Dostupné služby",
258 "settings.service.form.customUrl" : "Vlastný server", 258 "settings.service.form.customUrl" : "Vlastný server",
259 "settings.service.form.customUrlPremiumInfo" : "Ak chcete pridať vlastné hostované služby, potrebujete účet Franz Premium Supporter.", 259 "settings.service.form.customUrlPremiumInfo" : "Ak chcete pridať vlastné hostované služby, potrebujete účet Ferdi Premium Supporter.",
260 "settings.service.form.customUrlUpgradeAccount" : "Povýšte váš účet", 260 "settings.service.form.customUrlUpgradeAccount" : "Povýšte váš účet",
261 "settings.service.form.customUrlValidationError" : "Nebolo možné overiť vlastný server: {name}.", 261 "settings.service.form.customUrlValidationError" : "Nebolo možné overiť vlastný server: {name}.",
262 "settings.service.form.deleteButton" : "Odstrániť službu", 262 "settings.service.form.deleteButton" : "Odstrániť službu",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Všetky zvuky sú stíšené", 299 "settings.services.tooltip.isMuted" : "Všetky zvuky sú stíšené",
300 "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté", 300 "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté",
301 "settings.services.updatedInfo" : "Vaše zmeny boli uložené", 301 "settings.services.updatedInfo" : "Vaše zmeny boli uložené",
302 "settings.team.contentHeadline" : "Franz pre tímy", 302 "settings.team.contentHeadline" : "Ferdi pre tímy",
303 "settings.team.copy" : "Franz for Teams vám dáva možnosť pozvať spolupracovníkov do vášho tímu odoslaním e-mailových pozvánok a spravovaním ich odberov v preferenciách vášho účtu. Nestrácajte čas vytváraním predplatného pre každého člena tímu jednotlivo, zabudnite na viac faktúr a rôzne fakturačné cykly - jeden tím bude pre všetkých!", 303 "settings.team.copy" : "Ferdi for Teams vám dáva možnosť pozvať spolupracovníkov do vášho tímu odoslaním e-mailových pozvánok a spravovaním ich odberov v preferenciách vášho účtu. Nestrácajte čas vytváraním predplatného pre každého člena tímu jednotlivo, zabudnite na viac faktúr a rôzne fakturačné cykly - jeden tím bude pre všetkých!",
304 "settings.team.headline" : "Tím", 304 "settings.team.headline" : "Tím",
305 "settings.team.intro" : "Vy a váš tím používate Franz? 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.", 305 "settings.team.intro" : "Vy a váš tím používate Franz? 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.",
306 "settings.team.manageAction" : "Spravujte svoj tím na adrese meetfranz.com", 306 "settings.team.manageAction" : "Spravujte svoj tím na adrese meetfranz.com",
@@ -342,7 +342,7 @@
342 "signup.firstname.label" : "Krstné meno", 342 "signup.firstname.label" : "Krstné meno",
343 "signup.headline" : "Prihlásiť sa", 343 "signup.headline" : "Prihlásiť sa",
344 "signup.lastname.label" : "Priezvisko", 344 "signup.lastname.label" : "Priezvisko",
345 "signup.legal.info" : "Vytvorením účtu Franz súhlasíte s", 345 "signup.legal.info" : "Vytvorením účtu Ferdi súhlasíte s",
346 "signup.legal.privacy" : "Vyhlásenie o ochrane súkromia", 346 "signup.legal.privacy" : "Vyhlásenie o ochrane súkromia",
347 "signup.legal.terms" : "Podmienky služby", 347 "signup.legal.terms" : "Podmienky služby",
348 "signup.link.login" : "Už máte účet, chcete sa prihlásiť?", 348 "signup.link.login" : "Už máte účet, chcete sa prihlásiť?",
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
index c35ebc3fb..64be18c66 100644
--- a/src/i18n/locales/sr.json
+++ b/src/i18n/locales/sr.json
@@ -13,7 +13,7 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Započnimo! ", 169 "services.getStarted" : "Započnimo! ",
170 "services.welcome" : "Dobrodošli u Franz", 170 "services.welcome" : "Dobrodošli u Ferdi",
171 "settings.account.account.editButton" : "Uredi račun", 171 "settings.account.account.editButton" : "Uredi račun",
172 "settings.account.accountType.basic" : "Osnovni račun", 172 "settings.account.accountType.basic" : "Osnovni račun",
173 "settings.account.accountType.premium" : "Premium račun", 173 "settings.account.accountType.premium" : "Premium račun",
@@ -201,7 +201,7 @@
201 "settings.app.cacheInfo" : "Франз кеш тренутно користи {величина} простора на диску.", 201 "settings.app.cacheInfo" : "Франз кеш тренутно користи {величина} простора на диску.",
202 "settings.app.currentVersion" : "Trenutna verzija:", 202 "settings.app.currentVersion" : "Trenutna verzija:",
203 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini", 203 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini",
204 "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom", 204 "settings.app.form.autoLaunchOnStart" : "Pokreni Ferdi sa sistemom",
205 "settings.app.form.beta" : "Obuhvati i beta verzije", 205 "settings.app.form.beta" : "Obuhvati i beta verzije",
206 "settings.app.form.darkMode" : "Join the Dark Side", 206 "settings.app.form.darkMode" : "Join the Dark Side",
207 "settings.app.form.enableGPUAcceleration" : "Омогући убрзање графичке јединице", 207 "settings.app.form.enableGPUAcceleration" : "Омогући убрзање графичке јединице",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Ime", 278 "settings.service.form.name" : "Ime",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings",
280 "settings.service.form.proxy.host" : "Proxy Host\/IP", 280 "settings.service.form.proxy.host" : "Proxy Host\/IP",
281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 281 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Ferdi servers.",
282 "settings.service.form.proxy.isEnabled" : "Use Proxy", 282 "settings.service.form.proxy.isEnabled" : "Use Proxy",
283 "settings.service.form.proxy.password" : "Password (optional)", 283 "settings.service.form.proxy.password" : "Password (optional)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 285 "settings.service.form.proxy.restartInfo" : "Please restart Ferdi after changing proxy Settings.",
286 "settings.service.form.proxy.user" : "User (optional)", 286 "settings.service.form.proxy.user" : "User (optional)",
287 "settings.service.form.saveButton" : "Sačuvaj uslugu\/e", 287 "settings.service.form.saveButton" : "Sačuvaj uslugu\/e",
288 "settings.service.form.tabHosted" : "Hostovano", 288 "settings.service.form.tabHosted" : "Hostovano",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni.", 299 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni.",
300 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.", 300 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
301 "settings.services.updatedInfo" : "Vaše promjene su pohranjene.", 301 "settings.services.updatedInfo" : "Vaše promjene su pohranjene.",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Tim", 304 "settings.team.headline" : "Tim",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno", 327 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno",
328 "settings.workspaces.updatedInfo" : "Your changes have been saved", 328 "settings.workspaces.updatedInfo" : "Your changes have been saved",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Dodajte novu uslugu", 332 "sidebar.addNewService" : "Dodajte novu uslugu",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,7 +342,7 @@
342 "signup.firstname.label" : "Ime", 342 "signup.firstname.label" : "Ime",
343 "signup.headline" : "Prijava", 343 "signup.headline" : "Prijava",
344 "signup.lastname.label" : "Prezime", 344 "signup.lastname.label" : "Prezime",
345 "signup.legal.info" : "Prilikom stvaranja Franz računa, slažete se sa sljedećim stavkama", 345 "signup.legal.info" : "Prilikom stvaranja Ferdi računa, slažete se sa sljedećim stavkama",
346 "signup.legal.privacy" : "Изјава о приватности", 346 "signup.legal.privacy" : "Изјава о приватности",
347 "signup.legal.terms" : "Uvjeti korištenja", 347 "signup.legal.terms" : "Uvjeti korištenja",
348 "signup.link.login" : "Imate račun? Prijavite se.", 348 "signup.link.login" : "Imate račun? Prijavite se.",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index 27dabd54d..f90c11e89 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -13,10 +13,10 @@
13 "feature.shareFranz.action.email" : "Mail olarak gönder", 13 "feature.shareFranz.action.email" : "Mail olarak gönder",
14 "feature.shareFranz.action.facebook" : "Facebook'ta Paylaş", 14 "feature.shareFranz.action.facebook" : "Facebook'ta Paylaş",
15 "feature.shareFranz.action.twitter" : "Twitter'da Paylaş", 15 "feature.shareFranz.action.twitter" : "Twitter'da Paylaş",
16 "feature.shareFranz.headline" : "Franz birlikte daha iyi!", 16 "feature.shareFranz.headline" : "Ferdi birlikte daha iyi!",
17 "feature.shareFranz.shareText.email" : "Franz'a {count} tane servis ekledim! WhatsApp, Messenger, Slack ve fazlasını içeren ücretsiz uygulamayı www.meetfranz.com adresinden edinin.", 17 "feature.shareFranz.shareText.email" : "Franz'a {count} tane servis ekledim! WhatsApp, Messenger, Slack ve fazlasını içeren ücretsiz uygulamayı www.meetfranz.com adresinden edinin.",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Arkadaşlarına ve meslektaşlarına Franz'ın ne kadar harika olduğunu söyle ve bize bu kelimeyi yaymamızda yardım et.", 19 "feature.shareFranz.text" : "Arkadaşlarına ve meslektaşlarına Ferdi'ın ne kadar harika olduğunu söyle ve bize bu kelimeyi yaymamızda yardım et.",
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -174,7 +174,7 @@
174 "settings.account.buttonSave" : "Profili güncelle", 174 "settings.account.buttonSave" : "Profili güncelle",
175 "settings.account.deleteAccount" : "Hesabı sil", 175 "settings.account.deleteAccount" : "Hesabı sil",
176 "settings.account.deleteEmailSent" : "Hesabınızın silinmesini onaylamanız için e-posta adresinize gönderilen bağlantıya tıklayınız. Bu işlem sonrasında hesabınız ve bilgileriniz geri getirilemez!", 176 "settings.account.deleteEmailSent" : "Hesabınızın silinmesini onaylamanız için e-posta adresinize gönderilen bağlantıya tıklayınız. Bu işlem sonrasında hesabınız ve bilgileriniz geri getirilemez!",
177 "settings.account.deleteInfo" : "Franz hesabınıza artık ihtiyaç duymuyorsanız, hesabınızı ve buradaki bütün bağlantılı bilgilerinizi silebilirsiniz.", 177 "settings.account.deleteInfo" : "Ferdi hesabınıza artık ihtiyaç duymuyorsanız, hesabınızı ve buradaki bütün bağlantılı bilgilerinizi silebilirsiniz.",
178 "settings.account.headline" : "Hesap", 178 "settings.account.headline" : "Hesap",
179 "settings.account.headlineAccount" : "Hesap bilgileri", 179 "settings.account.headlineAccount" : "Hesap bilgileri",
180 "settings.account.headlineDangerZone" : "Tehlike Bölgesi", 180 "settings.account.headlineDangerZone" : "Tehlike Bölgesi",
@@ -198,7 +198,7 @@
198 "settings.app.buttonClearAllCache" : "Önbelleği temizle", 198 "settings.app.buttonClearAllCache" : "Önbelleği temizle",
199 "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur", 199 "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur",
200 "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et", 200 "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et",
201 "settings.app.cacheInfo" : "Franz önbelleği şu anda {size} disk alanı kullanıyor.", 201 "settings.app.cacheInfo" : "Ferdi önbelleği şu anda {size} disk alanı kullanıyor.",
202 "settings.app.currentVersion" : "Geçerli sürüm:", 202 "settings.app.currentVersion" : "Geçerli sürüm:",
203 "settings.app.form.autoLaunchInBackground" : "Arka planda aç", 203 "settings.app.form.autoLaunchInBackground" : "Arka planda aç",
204 "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç", 204 "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç",
@@ -211,7 +211,7 @@
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Dil", 212 "settings.app.form.language" : "Dil",
213 "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült", 213 "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült",
214 "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", 214 "settings.app.form.runInBackground" : "Pencereyi kapatırken Ferdi'ı arka planda tut",
215 "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", 215 "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster",
217 "settings.app.headline" : "Ayarlar", 217 "settings.app.headline" : "Ayarlar",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "{name} Ekle", 256 "settings.service.form.addServiceHeadline" : "{name} Ekle",
257 "settings.service.form.availableServices" : "Mevcut servisler", 257 "settings.service.form.availableServices" : "Mevcut servisler",
258 "settings.service.form.customUrl" : "Özel sunucu", 258 "settings.service.form.customUrl" : "Özel sunucu",
259 "settings.service.form.customUrlPremiumInfo" : "Kendi barındırdığın servisi ekleyebilmek için Franz Premium Destek Hesabına ihtiyacın var.", 259 "settings.service.form.customUrlPremiumInfo" : "Kendi barındırdığın servisi ekleyebilmek için Ferdi Premium Destek Hesabına ihtiyacın var.",
260 "settings.service.form.customUrlUpgradeAccount" : "Hesabını yükselt", 260 "settings.service.form.customUrlUpgradeAccount" : "Hesabını yükselt",
261 "settings.service.form.customUrlValidationError" : "{name} özel sunucu doğrulanamadı.", 261 "settings.service.form.customUrlValidationError" : "{name} özel sunucu doğrulanamadı.",
262 "settings.service.form.deleteButton" : "Servisi sil", 262 "settings.service.form.deleteButton" : "Servisi sil",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "İsim", 278 "settings.service.form.name" : "İsim",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Ayarları", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Ayarları",
280 "settings.service.form.proxy.host" : "Proxy Sunucusu\/IP", 280 "settings.service.form.proxy.host" : "Proxy Sunucusu\/IP",
281 "settings.service.form.proxy.info" : "Proxy ayarları Franz serverlarına yüklenmeyecektir.", 281 "settings.service.form.proxy.info" : "Proxy ayarları Ferdi serverlarına yüklenmeyecektir.",
282 "settings.service.form.proxy.isEnabled" : "Proxy Kullan", 282 "settings.service.form.proxy.isEnabled" : "Proxy Kullan",
283 "settings.service.form.proxy.password" : "Parola (opsiyonel)", 283 "settings.service.form.proxy.password" : "Parola (opsiyonel)",
284 "settings.service.form.proxy.port" : "Port", 284 "settings.service.form.proxy.port" : "Port",
285 "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Franz'ı yeniden başlatınız.", 285 "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Ferdi'ı yeniden başlatınız.",
286 "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)", 286 "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)",
287 "settings.service.form.saveButton" : "Servisi kaydet", 287 "settings.service.form.saveButton" : "Servisi kaydet",
288 "settings.service.form.tabHosted" : "Barındırılan", 288 "settings.service.form.tabHosted" : "Barındırılan",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Tüm sesler kapalı", 299 "settings.services.tooltip.isMuted" : "Tüm sesler kapalı",
300 "settings.services.tooltip.notificationsDisabled" : "Bildirimler devre dışı", 300 "settings.services.tooltip.notificationsDisabled" : "Bildirimler devre dışı",
301 "settings.services.updatedInfo" : "Değişikliklerin kaydedildi", 301 "settings.services.updatedInfo" : "Değişikliklerin kaydedildi",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Takım", 304 "settings.team.headline" : "Takım",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Tekrar deneyin", 327 "settings.workspaces.tryReloadWorkspaces" : "Tekrar deneyin",
328 "settings.workspaces.updatedInfo" : "Değişikliklerin kaydedildi", 328 "settings.workspaces.updatedInfo" : "Değişikliklerin kaydedildi",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Yeni servis ekle", 332 "sidebar.addNewService" : "Yeni servis ekle",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/ua.json b/src/i18n/locales/ua.json
index fcb99c4e4..bbbc33b42 100644
--- a/src/i18n/locales/ua.json
+++ b/src/i18n/locales/ua.json
@@ -1,5 +1,5 @@
1{ 1{
2 "global.api.unhealthy": "Не можна підключитись до онлайн сервісів Franz", 2 "global.api.unhealthy": "Не можна підключитись до онлайн сервісів Ferdi",
3 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", 3 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.",
4 "welcome.signupButton": "Створити безплатний акаунт", 4 "welcome.signupButton": "Створити безплатний акаунт",
5 "welcome.loginButton": "Увійдіть до свого акаунту", 5 "welcome.loginButton": "Увійдіть до свого акаунту",
@@ -29,15 +29,15 @@
29 "signup.submit.label": "Створити акаунт", 29 "signup.submit.label": "Створити акаунт",
30 "signup.link.login": "У вас вже є обліковий запис, увійти?", 30 "signup.link.login": "У вас вже є обліковий запис, увійти?",
31 "signup.emailDuplicate": "Користувач із цією email адресою вже існує", 31 "signup.emailDuplicate": "Користувач із цією email адресою вже існує",
32 "signup.legal.info": "Створенням акаунту Franz ви приймаєте", 32 "signup.legal.info": "Створенням акаунту Ferdi ви приймаєте",
33 "signup.legal.terms": "Умови використання", 33 "signup.legal.terms": "Умови використання",
34 "signup.legal.privacy": "Заява про конфіденційність", 34 "signup.legal.privacy": "Заява про конфіденційність",
35 "pricing.headline": "Підтримайте Franz", 35 "pricing.headline": "Підтримайте Ferdi",
36 "pricing.support.label": "Виберіть свій план підтримки", 36 "pricing.support.label": "Виберіть свій план підтримки",
37 "pricing.submit.label": "Я хочу підтримати розробку Franz", 37 "pricing.submit.label": "Я хочу підтримати розробку Ferdi",
38 "pricing.link.skipPayment": "Я не хочу підтримувати розробку Franz.", 38 "pricing.link.skipPayment": "Я не хочу підтримувати розробку Franz.",
39 "import.headline": "Імпортувати ваші сервіси з Franz 4", 39 "import.headline": "Імпортувати ваші сервіси з Ferdi 4",
40 "import.notSupportedHeadline": "Сервіси ще не підтримуються в Franz 5", 40 "import.notSupportedHeadline": "Сервіси ще не підтримуються в Ferdi 5",
41 "import.submit.label": "Імпортувати сервіси", 41 "import.submit.label": "Імпортувати сервіси",
42 "import.skip.label": "Я хочу додати сервіси вручну", 42 "import.skip.label": "Я хочу додати сервіси вручну",
43 "invite.submit.label": "Відправити запрошення", 43 "invite.submit.label": "Відправити запрошення",
@@ -45,9 +45,9 @@
45 "invite.name.label": "Ім'я", 45 "invite.name.label": "Ім'я",
46 "invite.email.label": "Email адреса", 46 "invite.email.label": "Email адреса",
47 "invite.skip.label": "Я хочу зробити це пізніше", 47 "invite.skip.label": "Я хочу зробити це пізніше",
48 "subscription.submit.label": "Я хочу підтримати розробку Franz", 48 "subscription.submit.label": "Я хочу підтримати розробку Ferdi",
49 "subscription.paymentSessionError": "Не вдалося ініціалізувати форму платежу", 49 "subscription.paymentSessionError": "Не вдалося ініціалізувати форму платежу",
50 "subscription.includedFeatures": "Платний Преміальний Акаунт Прихильника Franz включає", 50 "subscription.includedFeatures": "Платний Преміальний Акаунт Прихильника Ferdi включає",
51 "subscription.features.onpremise": "Додайте on-premise / hosted сервіси, такі як Hipchat", 51 "subscription.features.onpremise": "Додайте on-premise / hosted сервіси, такі як Hipchat",
52 "subscription.features.customServices": "Приватні сервіси для вас і вашої команди", 52 "subscription.features.customServices": "Приватні сервіси для вас і вашої команди",
53 "subscription.features.encryptedSync": "Шифрована синхронізація сеансу", 53 "subscription.features.encryptedSync": "Шифрована синхронізація сеансу",
@@ -55,17 +55,17 @@
55 "subscription.features.ads": "Жодної реклами!", 55 "subscription.features.ads": "Жодної реклами!",
56 "subscription.features.comingSoon": "очікуйте незабаром", 56 "subscription.features.comingSoon": "очікуйте незабаром",
57 "infobar.servicesUpdated": "Ваші сервіси було оновлено.", 57 "infobar.servicesUpdated": "Ваші сервіси було оновлено.",
58 "infobar.updateAvailable": "Нове оновлення для Franz доступне.", 58 "infobar.updateAvailable": "Нове оновлення для Ferdi доступне.",
59 "infobar.buttonReloadServices": "Перезавантажити сервіси", 59 "infobar.buttonReloadServices": "Перезавантажити сервіси",
60 "infobar.buttonInstallUpdate": "Перезавантажити і встановити оновлення", 60 "infobar.buttonInstallUpdate": "Перезавантажити і встановити оновлення",
61 "infobar.requiredRequestsFailed": "Не вдалося завантажити сервіси та інформацію користувача", 61 "infobar.requiredRequestsFailed": "Не вдалося завантажити сервіси та інформацію користувача",
62 "sidebar.settings": "Налаштування", 62 "sidebar.settings": "Налаштування",
63 "sidebar.addNewService": "!!!Add new service", 63 "sidebar.addNewService": "!!!Add new service",
64 "services.welcome": "Ласкаво просимо в Franz", 64 "services.welcome": "Ласкаво просимо в Ferdi",
65 "services.getStarted": "Почати", 65 "services.getStarted": "Почати",
66 "settings.account.headline": "Акаунт", 66 "settings.account.headline": "Акаунт",
67 "settings.account.headlineSubscription": "Ваша підписка", 67 "settings.account.headlineSubscription": "Ваша підписка",
68 "settings.account.headlineUpgrade": "Оновити ваш акаунт і підтримати Franz", 68 "settings.account.headlineUpgrade": "Оновити ваш акаунт і підтримати Ferdi",
69 "settings.account.headlineInvoices": "Інвойси", 69 "settings.account.headlineInvoices": "Інвойси",
70 "settings.account.manageSubscription.label": "Керування вашою підпискою", 70 "settings.account.manageSubscription.label": "Керування вашою підпискою",
71 "settings.account.accountType.basic": "Базовий акаунт", 71 "settings.account.accountType.basic": "Базовий акаунт",
@@ -79,7 +79,7 @@
79 "settings.account.headlinePassword": "Змінити пароль", 79 "settings.account.headlinePassword": "Змінити пароль",
80 "settings.account.successInfo": "Ваші зміни були збережені", 80 "settings.account.successInfo": "Ваші зміни були збережені",
81 "settings.account.buttonSave": "Оновити профіль", 81 "settings.account.buttonSave": "Оновити профіль",
82 "settings.account.mining.thankyou": "Дякую, що підтримуєте Franz своєю обчислювальною потужністю.", 82 "settings.account.mining.thankyou": "Дякую, що підтримуєте Ferdi своєю обчислювальною потужністю.",
83 "settings.account.mining.active": "Ви зараз здійснюєте {hashes} розрахунків за секунду.", 83 "settings.account.mining.active": "Ви зараз здійснюєте {hashes} розрахунків за секунду.",
84 "settings.account.mining.moreInformation": "Отримати більше інформації", 84 "settings.account.mining.moreInformation": "Отримати більше інформації",
85 "settings.account.mining.cancel": "Скасувати видобуток", 85 "settings.account.mining.cancel": "Скасувати видобуток",
@@ -124,11 +124,11 @@
124 "settings.app.buttonInstallUpdate": "Перезавантажити і встановити оновлення", 124 "settings.app.buttonInstallUpdate": "Перезавантажити і встановити оновлення",
125 "settings.app.updateStatusSearching": "Шукає оновлення", 125 "settings.app.updateStatusSearching": "Шукає оновлення",
126 "settings.app.updateStatusAvailable": "Оновлення доступне, завантаження...", 126 "settings.app.updateStatusAvailable": "Оновлення доступне, завантаження...",
127 "settings.app.updateStatusUpToDate": "Ви використовуєте останню версію Franz", 127 "settings.app.updateStatusUpToDate": "Ви використовуєте останню версію Ferdi",
128 "settings.app.form.autoLaunchOnStart": "Запускати Franz на початку", 128 "settings.app.form.autoLaunchOnStart": "Запускати Ferdi на початку",
129 "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", 129 "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі",
130 "settings.app.form.minimizeToSystemTray": "Мінімізувати Franz до системного лотка", 130 "settings.app.form.minimizeToSystemTray": "Мінімізувати Ferdi до системного лотка",
131 "settings.app.form.runInBackground": "Тримати Franz в фоні при закритті вікна", 131 "settings.app.form.runInBackground": "Тримати Ferdi в фоні при закритті вікна",
132 "settings.app.form.language": "Мова", 132 "settings.app.form.language": "Мова",
133 "settings.app.form.beta": "Включити бета-версії", 133 "settings.app.form.beta": "Включити бета-версії",
134 "settings.app.currentVersion": "Поточна версія:", 134 "settings.app.currentVersion": "Поточна версія:",
@@ -150,12 +150,12 @@
150 "subscription.type.free": "безплатно", 150 "subscription.type.free": "безплатно",
151 "subscription.type.month": "місяць", 151 "subscription.type.month": "місяць",
152 "subscription.type.year": "рік", 152 "subscription.type.year": "рік",
153 "subscription.type.mining": "Підтримати Franz обчислювальною потужністю", 153 "subscription.type.mining": "Підтримати Ferdi обчислювальною потужністю",
154 "subscription.mining.headline": "Як це працює?", 154 "subscription.mining.headline": "Як це працює?",
155 "subscription.mining.experimental": "експериментальний", 155 "subscription.mining.experimental": "експериментальний",
156 "subscription.mining.line1": "Вмикаючи \"Підтримати обчислювальною потужністю\", Franz буде використовувати приблизно 20-50% вашого процесора щоб майнити криптовалюту Monero, що приблизно рівне $ 5/рік.", 156 "subscription.mining.line1": "Вмикаючи \"Підтримати обчислювальною потужністю\", Ferdi буде використовувати приблизно 20-50% вашого процесора щоб майнити криптовалюту Monero, що приблизно рівне $ 5/рік.",
157 "subscription.mining.line2": "Ми адаптуємо використання процесора відповідно до вашої поведінки, щоб не виснажувати акумулятор, не сповільнити вашу роботу і роботу вашої машини.", 157 "subscription.mining.line2": "Ми адаптуємо використання процесора відповідно до вашої поведінки, щоб не виснажувати акумулятор, не сповільнити вашу роботу і роботу вашої машини.",
158 "subscription.mining.line3": "Поки майнер активний, ви матимете необмежений доступ до всіх особливостей підтримки Franz Premium.", 158 "subscription.mining.line3": "Поки майнер активний, ви матимете необмежений доступ до всіх особливостей підтримки Ferdi Premium.",
159 "subscription.mining.moreInformation": "Отримати більше інформації про цей план.", 159 "subscription.mining.moreInformation": "Отримати більше інформації про цей план.",
160 "subscriptionPopup.buttonCancel": "Відмінити", 160 "subscriptionPopup.buttonCancel": "Відмінити",
161 "subscriptionPopup.buttonDone": "Готово", 161 "subscriptionPopup.buttonDone": "Готово",
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index c3b54a14c..8376a29a4 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -13,14 +13,14 @@
13 "feature.shareFranz.action.email" : "Send as email", 13 "feature.shareFranz.action.email" : "Send as email",
14 "feature.shareFranz.action.facebook" : "Share on Facebook", 14 "feature.shareFranz.action.facebook" : "Share on Facebook",
15 "feature.shareFranz.action.twitter" : "Share on Twitter", 15 "feature.shareFranz.action.twitter" : "Share on Twitter",
16 "feature.shareFranz.headline" : "Franz is better together!", 16 "feature.shareFranz.headline" : "Ferdi is better together!",
17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 17 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", 18 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 19 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!", 20 "feature.todos.premium.info" : "Franz Todos are available to premium users now!",
21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", 21 "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.",
22 "feature.todos.premium.upgrade" : "Upgrade Account", 22 "feature.todos.premium.upgrade" : "Upgrade Account",
23 "global.api.unhealthy" : "Не можливо підключитись до онлайн сервісів Franz", 23 "global.api.unhealthy" : "Не можливо підключитись до онлайн сервісів Ferdi",
24 "global.franzProRequired" : "Franz Professional Required", 24 "global.franzProRequired" : "Franz Professional Required",
25 "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", 25 "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.",
26 "global.spellchecker.useDefault" : "Використовувати системні параметри за змовчуванням ({default})", 26 "global.spellchecker.useDefault" : "Використовувати системні параметри за змовчуванням ({default})",
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "Ваша сесія закінчилась, будь ласка, увійдіть знову.", 56 "login.tokenExpired" : "Ваша сесія закінчилась, будь ласка, увійдіть знову.",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "Про Franz", 59 "menu.app.about" : "Про Ferdi",
60 "menu.app.announcement" : "What's new?", 60 "menu.app.announcement" : "What's new?",
61 "menu.app.checkForUpdates" : "Перевірити наявність оновлень", 61 "menu.app.checkForUpdates" : "Перевірити наявність оновлень",
62 "menu.app.hide" : "Приховати", 62 "menu.app.hide" : "Приховати",
@@ -97,7 +97,7 @@
97 "menu.view" : "Вигляд", 97 "menu.view" : "Вигляд",
98 "menu.view.enterFullScreen" : "Вікно на повний екран", 98 "menu.view.enterFullScreen" : "Вікно на повний екран",
99 "menu.view.exitFullScreen" : "Вийти з повного екрану", 99 "menu.view.exitFullScreen" : "Вийти з повного екрану",
100 "menu.view.reloadFranz" : "Перезавантажити Franz", 100 "menu.view.reloadFranz" : "Перезавантажити Ferdi",
101 "menu.view.reloadService" : "Перезавантажити сервіс", 101 "menu.view.reloadService" : "Перезавантажити сервіс",
102 "menu.view.resetZoom" : "Фактичний розмір", 102 "menu.view.resetZoom" : "Фактичний розмір",
103 "menu.view.toggleDevTools" : "Переключити інструмент розробника", 103 "menu.view.toggleDevTools" : "Переключити інструмент розробника",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "Loading", 168 "service.webviewLoader.loading" : "Loading",
169 "services.getStarted" : "Почати", 169 "services.getStarted" : "Почати",
170 "services.welcome" : "Ласкаво просимо в Franz", 170 "services.welcome" : "Ласкаво просимо в Ferdi",
171 "settings.account.account.editButton" : "Редагувати акаунт", 171 "settings.account.account.editButton" : "Редагувати акаунт",
172 "settings.account.accountType.basic" : "Базовий акаунт", 172 "settings.account.accountType.basic" : "Базовий акаунт",
173 "settings.account.accountType.premium" : "Преміум Акаунт Прихильника", 173 "settings.account.accountType.premium" : "Преміум Акаунт Прихильника",
@@ -201,7 +201,7 @@
201 "settings.app.cacheInfo" : "Кеш, який використовує Franz, займає {size} дискового простору.", 201 "settings.app.cacheInfo" : "Кеш, який використовує Franz, займає {size} дискового простору.",
202 "settings.app.currentVersion" : "Поточна версія:", 202 "settings.app.currentVersion" : "Поточна версія:",
203 "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", 203 "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі",
204 "settings.app.form.autoLaunchOnStart" : "Запускати Franz на початку", 204 "settings.app.form.autoLaunchOnStart" : "Запускати Ferdi на початку",
205 "settings.app.form.beta" : "Включити бета-версії", 205 "settings.app.form.beta" : "Включити бета-версії",
206 "settings.app.form.darkMode" : "Переходь на Темну Сторону", 206 "settings.app.form.darkMode" : "Переходь на Темну Сторону",
207 "settings.app.form.enableGPUAcceleration" : "Ввімкнути прискорення GPU", 207 "settings.app.form.enableGPUAcceleration" : "Ввімкнути прискорення GPU",
@@ -210,8 +210,8 @@
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "Мова", 212 "settings.app.form.language" : "Мова",
213 "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до системного лотка", 213 "settings.app.form.minimizeToSystemTray" : "Мінімізувати Ferdi до системного лотка",
214 "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", 214 "settings.app.form.runInBackground" : "Тримати Ferdi в фоні при закритті вікна",
215 "settings.app.form.showDisabledServices" : "Показати вкладку вимкнених сервісів", 215 "settings.app.form.showDisabledServices" : "Показати вкладку вимкнених сервісів",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли сповіщення вимкнені", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли сповіщення вимкнені",
217 "settings.app.headline" : "Налаштування", 217 "settings.app.headline" : "Налаштування",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", 223 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
224 "settings.app.restartRequired" : "Зміни потребують перезапуску", 224 "settings.app.restartRequired" : "Зміни потребують перезапуску",
225 "settings.app.subheadlineCache" : "Кеш", 225 "settings.app.subheadlineCache" : "Кеш",
226 "settings.app.translationHelp" : "Допоможіть перекласти Franz на Вашу мову.", 226 "settings.app.translationHelp" : "Допоможіть перекласти Ferdi на Вашу мову.",
227 "settings.app.updateStatusAvailable" : "Оновлення доступне, завантаження...", 227 "settings.app.updateStatusAvailable" : "Оновлення доступне, завантаження...",
228 "settings.app.updateStatusSearching" : "Шукає оновлення", 228 "settings.app.updateStatusSearching" : "Шукає оновлення",
229 "settings.app.updateStatusUpToDate" : "Ви використовуєте останню версію Franz", 229 "settings.app.updateStatusUpToDate" : "Ви використовуєте останню версію Ferdi",
230 "settings.invite.headline" : "Запросити друзів", 230 "settings.invite.headline" : "Запросити друзів",
231 "settings.navigation.account" : "Акаунт", 231 "settings.navigation.account" : "Акаунт",
232 "settings.navigation.availableServices" : "Доступні сервіси", 232 "settings.navigation.availableServices" : "Доступні сервіси",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "Ім'я", 278 "settings.service.form.name" : "Ім'я",
279 "settings.service.form.proxy.headline" : "Налаштування HTTP\/HTTPS проксі ", 279 "settings.service.form.proxy.headline" : "Налаштування HTTP\/HTTPS проксі ",
280 "settings.service.form.proxy.host" : "Проксі Host\/IP", 280 "settings.service.form.proxy.host" : "Проксі Host\/IP",
281 "settings.service.form.proxy.info" : "Налаштування проксі не будуть синхронізовані із серверами Franz", 281 "settings.service.form.proxy.info" : "Налаштування проксі не будуть синхронізовані із серверами Ferdi",
282 "settings.service.form.proxy.isEnabled" : "Використовувати проксі", 282 "settings.service.form.proxy.isEnabled" : "Використовувати проксі",
283 "settings.service.form.proxy.password" : "Пароль (опційно)", 283 "settings.service.form.proxy.password" : "Пароль (опційно)",
284 "settings.service.form.proxy.port" : "Порт", 284 "settings.service.form.proxy.port" : "Порт",
285 "settings.service.form.proxy.restartInfo" : "Будь ласка, перезапустіть Franz після зміни налуштувань проксі", 285 "settings.service.form.proxy.restartInfo" : "Будь ласка, перезапустіть Ferdi після зміни налуштувань проксі",
286 "settings.service.form.proxy.user" : "Користувач (опційно)", 286 "settings.service.form.proxy.user" : "Користувач (опційно)",
287 "settings.service.form.saveButton" : "Зберегти сервіс", 287 "settings.service.form.saveButton" : "Зберегти сервіс",
288 "settings.service.form.tabHosted" : "Розміщений", 288 "settings.service.form.tabHosted" : "Розміщений",
@@ -299,8 +299,8 @@
299 "settings.services.tooltip.isMuted" : "Всі звуки вимкнено", 299 "settings.services.tooltip.isMuted" : "Всі звуки вимкнено",
300 "settings.services.tooltip.notificationsDisabled" : "Сповіщення відключені", 300 "settings.services.tooltip.notificationsDisabled" : "Сповіщення відключені",
301 "settings.services.updatedInfo" : "Ваші зміни були збережені", 301 "settings.services.updatedInfo" : "Ваші зміни були збережені",
302 "settings.team.contentHeadline" : "Franz for Teams", 302 "settings.team.contentHeadline" : "Ferdi for Teams",
303 "settings.team.copy" : "Franz 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!", 303 "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!",
304 "settings.team.headline" : "Команда", 304 "settings.team.headline" : "Команда",
305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 305 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
306 "settings.team.manageAction" : "Manage your Team on meetfranz.com", 306 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
@@ -326,8 +326,8 @@
326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", 326 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
327 "settings.workspaces.tryReloadWorkspaces" : "Спробуйте ще раз", 327 "settings.workspaces.tryReloadWorkspaces" : "Спробуйте ще раз",
328 "settings.workspaces.updatedInfo" : "Ваші зміни були збережені", 328 "settings.workspaces.updatedInfo" : "Ваші зміни були збережені",
329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", 329 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces",
330 "settings.workspaces.workspaceFeatureInfo" : "Franz 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.", 330 "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.",
331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", 331 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
332 "sidebar.addNewService" : "Додати новий сервіс", 332 "sidebar.addNewService" : "Додати новий сервіс",
333 "sidebar.closeTodosDrawer" : "Close Franz Todos", 333 "sidebar.closeTodosDrawer" : "Close Franz Todos",
@@ -342,7 +342,7 @@
342 "signup.firstname.label" : "Ім`я", 342 "signup.firstname.label" : "Ім`я",
343 "signup.headline" : "Увійти", 343 "signup.headline" : "Увійти",
344 "signup.lastname.label" : "Прізвище", 344 "signup.lastname.label" : "Прізвище",
345 "signup.legal.info" : "Створенням акаунту Franz ви приймаєте", 345 "signup.legal.info" : "Створенням акаунту Ferdi ви приймаєте",
346 "signup.legal.privacy" : "Політика конфіденційності", 346 "signup.legal.privacy" : "Політика конфіденційності",
347 "signup.legal.terms" : "Умови використання", 347 "signup.legal.terms" : "Умови використання",
348 "signup.link.login" : "У вас вже є обліковий запис, увійти?", 348 "signup.link.login" : "У вас вже є обліковий запис, увійти?",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json
index e52b9ca26..b5376b221 100644
--- a/src/i18n/locales/zh-Hant.json
+++ b/src/i18n/locales/zh-Hant.json
@@ -32,12 +32,12 @@
32 "signup.legal.info": "在建立帳戶同時,您同意:", 32 "signup.legal.info": "在建立帳戶同時,您同意:",
33 "signup.legal.terms": "服務條款", 33 "signup.legal.terms": "服務條款",
34 "signup.legal.privacy": "隱私聲明", 34 "signup.legal.privacy": "隱私聲明",
35 "pricing.headline": "贊助 Franz", 35 "pricing.headline": "贊助 Ferdi",
36 "pricing.support.label": "選擇贊助方案", 36 "pricing.support.label": "選擇贊助方案",
37 "pricing.submit.label": "我想協助 Franz 的開發", 37 "pricing.submit.label": "我想協助 Ferdi 的開發",
38 "pricing.link.skipPayment": "我不想協助 Franz 的開發", 38 "pricing.link.skipPayment": "我不想協助 Ferdi 的開發",
39 "import.headline": "匯入您的 Franz 4 服務", 39 "import.headline": "匯入您的 Ferdi 4 服務",
40 "import.notSupportedHeadline": "此服務不被 Franz 5 支持", 40 "import.notSupportedHeadline": "此服務不被 Ferdi 5 支持",
41 "import.submit.label": "匯入服務", 41 "import.submit.label": "匯入服務",
42 "import.skip.label": "我想手動匯入", 42 "import.skip.label": "我想手動匯入",
43 "invite.submit.label": "Send invites", 43 "invite.submit.label": "Send invites",
@@ -45,9 +45,9 @@
45 "invite.name.label": "名子", 45 "invite.name.label": "名子",
46 "invite.email.label": "電子郵件信箱", 46 "invite.email.label": "電子郵件信箱",
47 "invite.skip.label": "我想晚點進行", 47 "invite.skip.label": "我想晚點進行",
48 "subscription.submit.label": "我想協助 Franz 的開發", 48 "subscription.submit.label": "我想協助 Ferdi 的開發",
49 "subscription.paymentSessionError": "無法初始化付費表單", 49 "subscription.paymentSessionError": "無法初始化付費表單",
50 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", 50 "subscription.includedFeatures": "Paid Ferdi Premium Supporter Account includes",
51 "subscription.features.onpremise": "Add on-premise/hosted services like HipChat", 51 "subscription.features.onpremise": "Add on-premise/hosted services like HipChat",
52 "subscription.features.customServices": "Private services for you and your team", 52 "subscription.features.customServices": "Private services for you and your team",
53 "subscription.features.encryptedSync": "Encrypted session synchronization", 53 "subscription.features.encryptedSync": "Encrypted session synchronization",
@@ -60,11 +60,11 @@
60 "infobar.buttonInstallUpdate": "重新啟動並且更新", 60 "infobar.buttonInstallUpdate": "重新啟動並且更新",
61 "infobar.requiredRequestsFailed": "無法載入服務與帳戶資訊", 61 "infobar.requiredRequestsFailed": "無法載入服務與帳戶資訊",
62 "sidebar.settings": "設定", 62 "sidebar.settings": "設定",
63 "services.welcome": "歡迎使用 Franz", 63 "services.welcome": "歡迎使用 Ferdi",
64 "services.getStarted": "開始使用", 64 "services.getStarted": "開始使用",
65 "settings.account.headline": "帳戶", 65 "settings.account.headline": "帳戶",
66 "settings.account.headlineSubscription": "您的訂閱", 66 "settings.account.headlineSubscription": "您的訂閱",
67 "settings.account.headlineUpgrade": "升級帳戶以及贊助 Franz", 67 "settings.account.headlineUpgrade": "升級帳戶以及贊助 Ferdi",
68 "settings.account.headlineInvoices": "Invoices", 68 "settings.account.headlineInvoices": "Invoices",
69 "settings.account.manageSubscription.label": "管理訂閱", 69 "settings.account.manageSubscription.label": "管理訂閱",
70 "settings.account.accountType.basic": "基本帳戶", 70 "settings.account.accountType.basic": "基本帳戶",
@@ -102,7 +102,7 @@
102 "settings.service.form.tabHosted": "Hosted", 102 "settings.service.form.tabHosted": "Hosted",
103 "settings.service.form.tabOnPremise": "Self hosted ⭐️", 103 "settings.service.form.tabOnPremise": "Self hosted ⭐️",
104 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", 104 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
105 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", 105 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Ferdi Premium Supporter Account.",
106 "settings.service.form.customUrlUpgradeAccount": "升級帳戶", 106 "settings.service.form.customUrlUpgradeAccount": "升級帳戶",
107 "settings.service.form.indirectMessageInfo": "除了 @username, @channel, @here 之外,當您參與的頻道有訊息時,就會通知", 107 "settings.service.form.indirectMessageInfo": "除了 @username, @channel, @here 之外,當您參與的頻道有訊息時,就會通知",
108 "settings.service.error.headline": "錯誤", 108 "settings.service.error.headline": "錯誤",
@@ -150,10 +150,10 @@
150 "subscription.type.free": "免費", 150 "subscription.type.free": "免費",
151 "subscription.type.month": "月", 151 "subscription.type.month": "月",
152 "subscription.type.year": "年", 152 "subscription.type.year": "年",
153 "subscription.type.mining": "用您機器的計算能力來贊助 Franz", 153 "subscription.type.mining": "用您機器的計算能力來贊助 Ferdi",
154 "subscription.mining.headline": "如何進行的?", 154 "subscription.mining.headline": "如何進行的?",
155 "subscription.mining.experimental": "實驗性功能", 155 "subscription.mining.experimental": "實驗性功能",
156 "subscription.mining.line1": "Franz 運用您CPU的20%至50%的運算能力來挖門羅幣(一種開源加密貨幣),每年約莫可得到5美元。", 156 "subscription.mining.line1": "Ferdi 運用您CPU的20%至50%的運算能力來挖門羅幣(一種開源加密貨幣),每年約莫可得到5美元。",
157 "subscription.mining.line2": "我們會調整運算強度,避免消耗過多電池電量及影響效能。", 157 "subscription.mining.line2": "我們會調整運算強度,避免消耗過多電池電量及影響效能。",
158 "subscription.mining.line3": "當您允許我們挖掘門羅幣之時,我們便允許您使用全部的加值服務。", 158 "subscription.mining.line3": "當您允許我們挖掘門羅幣之時,我們便允許您使用全部的加值服務。",
159 "subscription.mining.moreInformation": "取得更多資訊", 159 "subscription.mining.moreInformation": "取得更多資訊",
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json
index f2b836505..7acc63037 100644
--- a/src/i18n/locales/zh-TW.json
+++ b/src/i18n/locales/zh-TW.json
@@ -56,7 +56,7 @@
56 "login.tokenExpired" : "您的登入已過期,請重新登入。", 56 "login.tokenExpired" : "您的登入已過期,請重新登入。",
57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", 57 "menu.Todoss.closeTodosDrawer" : "Close Todos drawer",
58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer", 58 "menu.Todoss.openTodosDrawer" : "Open Todos drawer",
59 "menu.app.about" : "關於 Franz", 59 "menu.app.about" : "關於 Ferdi",
60 "menu.app.announcement" : "更新說明", 60 "menu.app.announcement" : "更新說明",
61 "menu.app.checkForUpdates" : "檢查更新", 61 "menu.app.checkForUpdates" : "檢查更新",
62 "menu.app.hide" : "隱藏", 62 "menu.app.hide" : "隱藏",
@@ -97,7 +97,7 @@
97 "menu.view" : "檢視", 97 "menu.view" : "檢視",
98 "menu.view.enterFullScreen" : "進入全螢幕模式", 98 "menu.view.enterFullScreen" : "進入全螢幕模式",
99 "menu.view.exitFullScreen" : "離開全螢幕模式", 99 "menu.view.exitFullScreen" : "離開全螢幕模式",
100 "menu.view.reloadFranz" : "重新載入 Franz", 100 "menu.view.reloadFranz" : "重新載入 Ferdi",
101 "menu.view.reloadService" : "重新載入服務", 101 "menu.view.reloadService" : "重新載入服務",
102 "menu.view.resetZoom" : "實際大小", 102 "menu.view.resetZoom" : "實際大小",
103 "menu.view.toggleDevTools" : "切換開發者工具", 103 "menu.view.toggleDevTools" : "切換開發者工具",
@@ -141,7 +141,7 @@
141 "pricing.plan.pro-monthly" : "Franz Professional Monthly", 141 "pricing.plan.pro-monthly" : "Franz Professional Monthly",
142 "pricing.plan.pro-yearly" : "Franz Professional Yearly", 142 "pricing.plan.pro-yearly" : "Franz Professional Yearly",
143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", 143 "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional",
144 "pricing.trial.cta.skip" : "Continue to Franz", 144 "pricing.trial.cta.skip" : "Continue to Ferdi",
145 "pricing.trial.error" : "Sorry, we could not activate your trial!", 145 "pricing.trial.error" : "Sorry, we could not activate your trial!",
146 "pricing.trial.features.headline" : "Franz Professional includes:", 146 "pricing.trial.features.headline" : "Franz Professional includes:",
147 "pricing.trial.headline" : "Franz Professional", 147 "pricing.trial.headline" : "Franz Professional",
@@ -167,7 +167,7 @@
167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", 167 "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.",
168 "service.webviewLoader.loading" : "正在載入", 168 "service.webviewLoader.loading" : "正在載入",
169 "services.getStarted" : "開始", 169 "services.getStarted" : "開始",
170 "services.welcome" : "歡迎使用 Franz", 170 "services.welcome" : "歡迎使用 Ferdi",
171 "settings.account.account.editButton" : "編輯帳號", 171 "settings.account.account.editButton" : "編輯帳號",
172 "settings.account.accountType.basic" : "基礎帳號", 172 "settings.account.accountType.basic" : "基礎帳號",
173 "settings.account.accountType.premium" : "高級支援帳戶", 173 "settings.account.accountType.premium" : "高級支援帳戶",
@@ -198,20 +198,20 @@
198 "settings.app.buttonClearAllCache" : "清除快取", 198 "settings.app.buttonClearAllCache" : "清除快取",
199 "settings.app.buttonInstallUpdate" : "重新啟動並安裝更新", 199 "settings.app.buttonInstallUpdate" : "重新啟動並安裝更新",
200 "settings.app.buttonSearchForUpdate" : "檢查更新", 200 "settings.app.buttonSearchForUpdate" : "檢查更新",
201 "settings.app.cacheInfo" : "Franz 快取目前占用 {size} 的磁碟空間。", 201 "settings.app.cacheInfo" : "Ferdi 快取目前占用 {size} 的磁碟空間。",
202 "settings.app.currentVersion" : "目前的版本", 202 "settings.app.currentVersion" : "目前的版本",
203 "settings.app.form.autoLaunchInBackground" : "在背景開啟", 203 "settings.app.form.autoLaunchInBackground" : "在背景開啟",
204 "settings.app.form.autoLaunchOnStart" : "開機時啟動 Franz", 204 "settings.app.form.autoLaunchOnStart" : "開機時啟動 Ferdi",
205 "settings.app.form.beta" : "包含測試版", 205 "settings.app.form.beta" : "包含測試版",
206 "settings.app.form.darkMode" : "加入黑暗面", 206 "settings.app.form.darkMode" : "加入黑暗面",
207 "settings.app.form.enableGPUAcceleration" : "啟用 GPU 加速", 207 "settings.app.form.enableGPUAcceleration" : "啟用 GPU 加速",
208 "settings.app.form.enableSpellchecking" : "啟用拼字檢查", 208 "settings.app.form.enableSpellchecking" : "啟用拼字檢查",
209 "settings.app.form.enableSystemTray" : "在系統列顯示 Franz", 209 "settings.app.form.enableSystemTray" : "在系統列顯示 Ferdi",
210 "settings.app.form.enableTodos" : "Enable Franz Todos", 210 "settings.app.form.enableTodos" : "Enable Franz Todos",
211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", 211 "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded",
212 "settings.app.form.language" : "語言", 212 "settings.app.form.language" : "語言",
213 "settings.app.form.minimizeToSystemTray" : "最小化 Franz 到系統列", 213 "settings.app.form.minimizeToSystemTray" : "最小化 Ferdi 到系統列",
214 "settings.app.form.runInBackground" : "當關閉視窗時,保持 Franz 在背景運作", 214 "settings.app.form.runInBackground" : "當關閉視窗時,保持 Ferdi 在背景運作",
215 "settings.app.form.showDisabledServices" : "顯示停用的服務標籤", 215 "settings.app.form.showDisabledServices" : "顯示停用的服務標籤",
216 "settings.app.form.showMessagesBadgesWhenMuted" : "當通知關閉時,標記未讀的訊息", 216 "settings.app.form.showMessagesBadgesWhenMuted" : "當通知關閉時,標記未讀的訊息",
217 "settings.app.headline" : "設定", 217 "settings.app.headline" : "設定",
@@ -223,10 +223,10 @@
223 "settings.app.languageDisclaimer" : "官方僅提供英語與德語,其他語言由社群提供翻譯。", 223 "settings.app.languageDisclaimer" : "官方僅提供英語與德語,其他語言由社群提供翻譯。",
224 "settings.app.restartRequired" : "需要重啟以更變", 224 "settings.app.restartRequired" : "需要重啟以更變",
225 "settings.app.subheadlineCache" : "快取", 225 "settings.app.subheadlineCache" : "快取",
226 "settings.app.translationHelp" : "幫助我們將 Franz 翻譯成您的語言。", 226 "settings.app.translationHelp" : "幫助我們將 Ferdi 翻譯成您的語言。",
227 "settings.app.updateStatusAvailable" : "有可用更新,下載中...", 227 "settings.app.updateStatusAvailable" : "有可用更新,下載中...",
228 "settings.app.updateStatusSearching" : "正在搜尋更新", 228 "settings.app.updateStatusSearching" : "正在搜尋更新",
229 "settings.app.updateStatusUpToDate" : "您正在使用最新版本的 Franz", 229 "settings.app.updateStatusUpToDate" : "您正在使用最新版本的 Ferdi",
230 "settings.invite.headline" : "邀請朋友", 230 "settings.invite.headline" : "邀請朋友",
231 "settings.navigation.account" : "帳號", 231 "settings.navigation.account" : "帳號",
232 "settings.navigation.availableServices" : "可使用的服務", 232 "settings.navigation.availableServices" : "可使用的服務",
@@ -256,7 +256,7 @@
256 "settings.service.form.addServiceHeadline" : "新增{name}", 256 "settings.service.form.addServiceHeadline" : "新增{name}",
257 "settings.service.form.availableServices" : "可使用的服務", 257 "settings.service.form.availableServices" : "可使用的服務",
258 "settings.service.form.customUrl" : "自訂伺服器", 258 "settings.service.form.customUrl" : "自訂伺服器",
259 "settings.service.form.customUrlPremiumInfo" : "要添加自行託管的服務,您需要擁有 Franz 高級支援帳戶。", 259 "settings.service.form.customUrlPremiumInfo" : "要添加自行託管的服務,您需要擁有 Ferdi 高級支援帳戶。",
260 "settings.service.form.customUrlUpgradeAccount" : "升級您的帳戶", 260 "settings.service.form.customUrlUpgradeAccount" : "升級您的帳戶",
261 "settings.service.form.customUrlValidationError" : "無法驗證自定義{name}服務器。", 261 "settings.service.form.customUrlValidationError" : "無法驗證自定義{name}服務器。",
262 "settings.service.form.deleteButton" : "刪除服務", 262 "settings.service.form.deleteButton" : "刪除服務",
@@ -278,11 +278,11 @@
278 "settings.service.form.name" : "名稱", 278 "settings.service.form.name" : "名稱",
279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS 代理伺服器設定", 279 "settings.service.form.proxy.headline" : "HTTP\/HTTPS 代理伺服器設定",
280 "settings.service.form.proxy.host" : "代理伺服器網域 \/ IP", 280 "settings.service.form.proxy.host" : "代理伺服器網域 \/ IP",
281 "settings.service.form.proxy.info" : "Proxy 設定不會與 Franz 伺服器同步", 281 "settings.service.form.proxy.info" : "Proxy 設定不會與 Ferdi 伺服器同步",
282 "settings.service.form.proxy.isEnabled" : "使用 Proxy", 282 "settings.service.form.proxy.isEnabled" : "使用 Proxy",
283 "settings.service.form.proxy.password" : "密碼 (選填)", 283 "settings.service.form.proxy.password" : "密碼 (選填)",
284 "settings.service.form.proxy.port" : "通訊阜", 284 "settings.service.form.proxy.port" : "通訊阜",
285 "settings.service.form.proxy.restartInfo" : "在變更 Proxy 設定後,請重新啟動 Franz", 285 "settings.service.form.proxy.restartInfo" : "在變更 Proxy 設定後,請重新啟動 Ferdi",
286 "settings.service.form.proxy.user" : "使用者 (選填)", 286 "settings.service.form.proxy.user" : "使用者 (選填)",
287 "settings.service.form.saveButton" : "保存服務", 287 "settings.service.form.saveButton" : "保存服務",
288 "settings.service.form.tabHosted" : "託管", 288 "settings.service.form.tabHosted" : "託管",
@@ -342,7 +342,7 @@
342 "signup.firstname.label" : "名", 342 "signup.firstname.label" : "名",
343 "signup.headline" : "註冊", 343 "signup.headline" : "註冊",
344 "signup.lastname.label" : "姓", 344 "signup.lastname.label" : "姓",
345 "signup.legal.info" : "透過創建一個 Franz 帳戶,你同意", 345 "signup.legal.info" : "透過創建一個 Ferdi 帳戶,你同意",
346 "signup.legal.privacy" : "隱私聲明", 346 "signup.legal.privacy" : "隱私聲明",
347 "signup.legal.terms" : "服務條款", 347 "signup.legal.terms" : "服務條款",
348 "signup.link.login" : "已經有一個帳戶,登入?", 348 "signup.link.login" : "已經有一個帳戶,登入?",
@@ -380,7 +380,7 @@
380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", 380 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
381 "workspaceDrawer.proFeatureBadge" : "Premium feature", 381 "workspaceDrawer.proFeatureBadge" : "Premium feature",
382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", 382 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
383 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz 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>", 383 "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>",
384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", 384 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
385 "workspaces.switchingIndicator.switchingTo" : "Switching to" 385 "workspaces.switchingIndicator.switchingTo" : "Switching to"
386} 386}
diff --git a/src/i18n/messages/src/components/AppUpdateInfoBar.json b/src/i18n/messages/src/components/AppUpdateInfoBar.json
index c4c2d0cae..da801b548 100644
--- a/src/i18n/messages/src/components/AppUpdateInfoBar.json
+++ b/src/i18n/messages/src/components/AppUpdateInfoBar.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "infobar.updateAvailable", 3 "id": "infobar.updateAvailable",
4 "defaultMessage": "!!!A new update for Franz is available.", 4 "defaultMessage": "!!!A new update for Ferdi is available.",
5 "file": "src/components/AppUpdateInfoBar.js", 5 "file": "src/components/AppUpdateInfoBar.js",
6 "start": { 6 "start": {
7 "line": 9, 7 "line": 9,
diff --git a/src/i18n/messages/src/components/auth/Import.json b/src/i18n/messages/src/components/auth/Import.json
index 264fc729b..98ae2e61f 100644
--- a/src/i18n/messages/src/components/auth/Import.json
+++ b/src/i18n/messages/src/components/auth/Import.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "import.headline", 3 "id": "import.headline",
4 "defaultMessage": "!!!Import your Franz 4 services", 4 "defaultMessage": "!!!Import your Ferdi 4 services",
5 "file": "src/components/auth/Import.js", 5 "file": "src/components/auth/Import.js",
6 "start": { 6 "start": {
7 "line": 13, 7 "line": 13,
@@ -14,7 +14,7 @@
14 }, 14 },
15 { 15 {
16 "id": "import.notSupportedHeadline", 16 "id": "import.notSupportedHeadline",
17 "defaultMessage": "!!!Services not yet supported in Franz 5", 17 "defaultMessage": "!!!Services not yet supported in Ferdi 5",
18 "file": "src/components/auth/Import.js", 18 "file": "src/components/auth/Import.js",
19 "start": { 19 "start": {
20 "line": 17, 20 "line": 17,
diff --git a/src/i18n/messages/src/components/auth/Locked.json b/src/i18n/messages/src/components/auth/Locked.json
new file mode 100644
index 000000000..86b1cae90
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Locked.json
@@ -0,0 +1,67 @@
1[
2 {
3 "id": "locked.headline",
4 "defaultMessage": "!!!Locked",
5 "file": "src/components/auth/Locked.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "locked.info",
17 "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
18 "file": "src/components/auth/Locked.js",
19 "start": {
20 "line": 19,
21 "column": 8
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "locked.password.label",
30 "defaultMessage": "!!!Password",
31 "file": "src/components/auth/Locked.js",
32 "start": {
33 "line": 23,
34 "column": 17
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "locked.submit.label",
43 "defaultMessage": "!!!Unlock",
44 "file": "src/components/auth/Locked.js",
45 "start": {
46 "line": 27,
47 "column": 21
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "locked.invalidCredentials",
56 "defaultMessage": "!!!Password invalid",
57 "file": "src/components/auth/Locked.js",
58 "start": {
59 "line": 31,
60 "column": 22
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 }
67] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json
index 177f6000b..d593eac68 100644
--- a/src/i18n/messages/src/components/auth/Login.json
+++ b/src/i18n/messages/src/components/auth/Login.json
@@ -65,15 +65,41 @@
65 } 65 }
66 }, 66 },
67 { 67 {
68 "id": "login.customServerQuestion",
69 "defaultMessage": "!!!Using a custom Ferdi server?",
70 "file": "src/components/auth/Login.js",
71 "start": {
72 "line": 37,
73 "column": 24
74 },
75 "end": {
76 "line": 40,
77 "column": 3
78 }
79 },
80 {
81 "id": "login.customServerSuggestion",
82 "defaultMessage": "!!!Try importing your Franz account",
83 "file": "src/components/auth/Login.js",
84 "start": {
85 "line": 41,
86 "column": 26
87 },
88 "end": {
89 "line": 44,
90 "column": 3
91 }
92 },
93 {
68 "id": "login.tokenExpired", 94 "id": "login.tokenExpired",
69 "defaultMessage": "!!!Your session expired, please login again.", 95 "defaultMessage": "!!!Your session expired, please login again.",
70 "file": "src/components/auth/Login.js", 96 "file": "src/components/auth/Login.js",
71 "start": { 97 "start": {
72 "line": 37, 98 "line": 45,
73 "column": 16 99 "column": 16
74 }, 100 },
75 "end": { 101 "end": {
76 "line": 40, 102 "line": 48,
77 "column": 3 103 "column": 3
78 } 104 }
79 }, 105 },
@@ -82,11 +108,11 @@
82 "defaultMessage": "!!!Your session expired, please login again.", 108 "defaultMessage": "!!!Your session expired, please login again.",
83 "file": "src/components/auth/Login.js", 109 "file": "src/components/auth/Login.js",
84 "start": { 110 "start": {
85 "line": 41, 111 "line": 49,
86 "column": 16 112 "column": 16
87 }, 113 },
88 "end": { 114 "end": {
89 "line": 44, 115 "line": 52,
90 "column": 3 116 "column": 3
91 } 117 }
92 }, 118 },
@@ -95,11 +121,11 @@
95 "defaultMessage": "!!!Create a free account", 121 "defaultMessage": "!!!Create a free account",
96 "file": "src/components/auth/Login.js", 122 "file": "src/components/auth/Login.js",
97 "start": { 123 "start": {
98 "line": 45, 124 "line": 53,
99 "column": 14 125 "column": 14
100 }, 126 },
101 "end": { 127 "end": {
102 "line": 48, 128 "line": 56,
103 "column": 3 129 "column": 3
104 } 130 }
105 }, 131 },
@@ -108,11 +134,11 @@
108 "defaultMessage": "!!!Forgot password", 134 "defaultMessage": "!!!Forgot password",
109 "file": "src/components/auth/Login.js", 135 "file": "src/components/auth/Login.js",
110 "start": { 136 "start": {
111 "line": 49, 137 "line": 57,
112 "column": 16 138 "column": 16
113 }, 139 },
114 "end": { 140 "end": {
115 "line": 52, 141 "line": 60,
116 "column": 3 142 "column": 3
117 } 143 }
118 } 144 }
diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json
index f15617ca5..0885f6a20 100644
--- a/src/i18n/messages/src/components/auth/Pricing.json
+++ b/src/i18n/messages/src/components/auth/Pricing.json
@@ -92,7 +92,7 @@
92 }, 92 },
93 { 93 {
94 "id": "pricing.trial.cta.skip", 94 "id": "pricing.trial.cta.skip",
95 "defaultMessage": "!!!Continue to Franz", 95 "defaultMessage": "!!!Continue to Ferdi",
96 "file": "src/components/auth/Pricing.js", 96 "file": "src/components/auth/Pricing.js",
97 "start": { 97 "start": {
98 "line": 43, 98 "line": 43,
diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json
index 2ea71e5ff..9aa7b25ab 100644
--- a/src/i18n/messages/src/components/auth/Signup.json
+++ b/src/i18n/messages/src/components/auth/Signup.json
@@ -66,7 +66,7 @@
66 }, 66 },
67 { 67 {
68 "id": "signup.legal.info", 68 "id": "signup.legal.info",
69 "defaultMessage": "!!!By creating a Franz account you accept the", 69 "defaultMessage": "!!!By creating a Ferdi account you accept the",
70 "file": "src/components/auth/Signup.js", 70 "file": "src/components/auth/Signup.js",
71 "start": { 71 "start": {
72 "line": 41, 72 "line": 41,
diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json
index 44cf4fab9..3b8e047b4 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": 27,
8 "column": 19 8 "column": 19
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 31, 11 "line": 30,
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": 31,
21 "column": 24 21 "column": 24
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 35, 24 "line": 34,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,24 @@
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": 35,
34 "column": 26 34 "column": 26
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 38,
38 "column": 3
39 }
40 },
41 {
42 "id": "infobar.authRequestFailed",
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",
45 "start": {
37 "line": 39, 46 "line": 39,
47 "column": 21
48 },
49 "end": {
50 "line": 42,
38 "column": 3 51 "column": 3
39 } 52 }
40 } 53 }
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json
index 837dc54bc..ddd9cd094 100644
--- a/src/i18n/messages/src/components/layout/Sidebar.json
+++ b/src/i18n/messages/src/components/layout/Sidebar.json
@@ -102,5 +102,18 @@
102 "line": 46, 102 "line": 46,
103 "column": 3 103 "column": 3
104 } 104 }
105 },
106 {
107 "id": "sidebar.lockFerdi",
108 "defaultMessage": "!!!Lock Ferdi",
109 "file": "src/components/layout/Sidebar.js",
110 "start": {
111 "line": 47,
112 "column": 13
113 },
114 "end": {
115 "line": 50,
116 "column": 3
117 }
105 } 118 }
106] \ No newline at end of file 119] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json
index eb466c0ac..c2e57b8b5 100644
--- a/src/i18n/messages/src/components/services/content/Services.json
+++ b/src/i18n/messages/src/components/services/content/Services.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "services.welcome", 3 "id": "services.welcome",
4 "defaultMessage": "!!!Welcome to Franz", 4 "defaultMessage": "!!!Welcome to Ferdi",
5 "file": "src/components/services/content/Services.js", 5 "file": "src/components/services/content/Services.js",
6 "start": { 6 "start": {
7 "line": 14, 7 "line": 14,
@@ -24,5 +24,31 @@
24 "line": 21, 24 "line": 21,
25 "column": 3 25 "column": 3
26 } 26 }
27 },
28 {
29 "id": "services.login",
30 "defaultMessage": "!!!Please login to use Ferdi.",
31 "file": "src/components/services/content/Services.js",
32 "start": {
33 "line": 22,
34 "column": 9
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "services.serverInfo",
43 "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.",
44 "file": "src/components/services/content/Services.js",
45 "start": {
46 "line": 26,
47 "column": 14
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
27 } 53 }
28] \ No newline at end of file 54] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json
index 06d53e41d..48078c18d 100644
--- a/src/i18n/messages/src/components/settings/account/AccountDashboard.json
+++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json
@@ -170,7 +170,7 @@
170 }, 170 },
171 { 171 {
172 "id": "settings.account.deleteInfo", 172 "id": "settings.account.deleteInfo",
173 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", 173 "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
174 "file": "src/components/settings/account/AccountDashboard.js", 174 "file": "src/components/settings/account/AccountDashboard.js",
175 "start": { 175 "start": {
176 "line": 70, 176 "line": 70,
diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json
index e66db807d..45dc7b690 100644
--- a/src/i18n/messages/src/components/settings/services/EditServiceForm.json
+++ b/src/i18n/messages/src/components/settings/services/EditServiceForm.json
@@ -131,7 +131,7 @@
131 }, 131 },
132 { 132 {
133 "id": "settings.service.form.customUrlPremiumInfo", 133 "id": "settings.service.form.customUrlPremiumInfo",
134 "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", 134 "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.",
135 "file": "src/components/settings/services/EditServiceForm.js", 135 "file": "src/components/settings/services/EditServiceForm.js",
136 "start": { 136 "start": {
137 "line": 64, 137 "line": 64,
@@ -261,7 +261,7 @@
261 }, 261 },
262 { 262 {
263 "id": "settings.service.form.proxy.restartInfo", 263 "id": "settings.service.form.proxy.restartInfo",
264 "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", 264 "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.",
265 "file": "src/components/settings/services/EditServiceForm.js", 265 "file": "src/components/settings/services/EditServiceForm.js",
266 "start": { 266 "start": {
267 "line": 104, 267 "line": 104,
@@ -274,7 +274,7 @@
274 }, 274 },
275 { 275 {
276 "id": "settings.service.form.proxy.info", 276 "id": "settings.service.form.proxy.info",
277 "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", 277 "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.",
278 "file": "src/components/settings/services/EditServiceForm.js", 278 "file": "src/components/settings/services/EditServiceForm.js",
279 "start": { 279 "start": {
280 "line": 108, 280 "line": 108,
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
index fa21db10a..125fcf0b9 100644
--- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
+++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Settings", 4 "defaultMessage": "!!!Settings",
5 "file": "src/components/settings/settings/EditSettingsForm.js", 5 "file": "src/components/settings/settings/EditSettingsForm.js",
6 "start": { 6 "start": {
7 "line": 16, 7 "line": 17,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 19, 11 "line": 20,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,63 @@
17 "defaultMessage": "!!!General", 17 "defaultMessage": "!!!General",
18 "file": "src/components/settings/settings/EditSettingsForm.js", 18 "file": "src/components/settings/settings/EditSettingsForm.js",
19 "start": { 19 "start": {
20 "line": 20, 20 "line": 21,
21 "column": 19 21 "column": 19
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 23, 24 "line": 24,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.app.serverInfo",
30 "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.",
31 "file": "src/components/settings/settings/EditSettingsForm.js",
32 "start": {
33 "line": 25,
34 "column": 14
35 },
36 "end": {
37 "line": 28,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.app.todoServerInfo",
43 "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)",
44 "file": "src/components/settings/settings/EditSettingsForm.js",
45 "start": {
46 "line": 29,
47 "column": 18
48 },
49 "end": {
50 "line": 32,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.app.lockedPassword",
56 "defaultMessage": "!!!Ferdi Lock Password",
57 "file": "src/components/settings/settings/EditSettingsForm.js",
58 "start": {
59 "line": 33,
60 "column": 18
61 },
62 "end": {
63 "line": 36,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.app.lockedPasswordInfo",
69 "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
70 "file": "src/components/settings/settings/EditSettingsForm.js",
71 "start": {
72 "line": 37,
73 "column": 22
74 },
75 "end": {
76 "line": 40,
25 "column": 3 77 "column": 3
26 } 78 }
27 }, 79 },
@@ -30,11 +82,11 @@
30 "defaultMessage": "!!!Language", 82 "defaultMessage": "!!!Language",
31 "file": "src/components/settings/settings/EditSettingsForm.js", 83 "file": "src/components/settings/settings/EditSettingsForm.js",
32 "start": { 84 "start": {
33 "line": 24, 85 "line": 41,
34 "column": 20 86 "column": 20
35 }, 87 },
36 "end": { 88 "end": {
37 "line": 27, 89 "line": 44,
38 "column": 3 90 "column": 3
39 } 91 }
40 }, 92 },
@@ -43,11 +95,11 @@
43 "defaultMessage": "!!!Updates", 95 "defaultMessage": "!!!Updates",
44 "file": "src/components/settings/settings/EditSettingsForm.js", 96 "file": "src/components/settings/settings/EditSettingsForm.js",
45 "start": { 97 "start": {
46 "line": 28, 98 "line": 45,
47 "column": 19 99 "column": 19
48 }, 100 },
49 "end": { 101 "end": {
50 "line": 31, 102 "line": 48,
51 "column": 3 103 "column": 3
52 } 104 }
53 }, 105 },
@@ -56,11 +108,11 @@
56 "defaultMessage": "!!!Appearance", 108 "defaultMessage": "!!!Appearance",
57 "file": "src/components/settings/settings/EditSettingsForm.js", 109 "file": "src/components/settings/settings/EditSettingsForm.js",
58 "start": { 110 "start": {
59 "line": 32, 111 "line": 49,
60 "column": 22 112 "column": 22
61 }, 113 },
62 "end": { 114 "end": {
63 "line": 35, 115 "line": 52,
64 "column": 3 116 "column": 3
65 } 117 }
66 }, 118 },
@@ -69,24 +121,24 @@
69 "defaultMessage": "!!!Advanced", 121 "defaultMessage": "!!!Advanced",
70 "file": "src/components/settings/settings/EditSettingsForm.js", 122 "file": "src/components/settings/settings/EditSettingsForm.js",
71 "start": { 123 "start": {
72 "line": 36, 124 "line": 53,
73 "column": 20 125 "column": 20
74 }, 126 },
75 "end": { 127 "end": {
76 "line": 39, 128 "line": 56,
77 "column": 3 129 "column": 3
78 } 130 }
79 }, 131 },
80 { 132 {
81 "id": "settings.app.translationHelp", 133 "id": "settings.app.translationHelp",
82 "defaultMessage": "!!!Help us to translate Franz into your language.", 134 "defaultMessage": "!!!Help us to translate Ferdi into your language.",
83 "file": "src/components/settings/settings/EditSettingsForm.js", 135 "file": "src/components/settings/settings/EditSettingsForm.js",
84 "start": { 136 "start": {
85 "line": 40, 137 "line": 57,
86 "column": 19 138 "column": 19
87 }, 139 },
88 "end": { 140 "end": {
89 "line": 43, 141 "line": 60,
90 "column": 3 142 "column": 3
91 } 143 }
92 }, 144 },
@@ -95,24 +147,24 @@
95 "defaultMessage": "!!!Cache", 147 "defaultMessage": "!!!Cache",
96 "file": "src/components/settings/settings/EditSettingsForm.js", 148 "file": "src/components/settings/settings/EditSettingsForm.js",
97 "start": { 149 "start": {
98 "line": 44, 150 "line": 61,
99 "column": 20 151 "column": 20
100 }, 152 },
101 "end": { 153 "end": {
102 "line": 47, 154 "line": 64,
103 "column": 3 155 "column": 3
104 } 156 }
105 }, 157 },
106 { 158 {
107 "id": "settings.app.cacheInfo", 159 "id": "settings.app.cacheInfo",
108 "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", 160 "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.",
109 "file": "src/components/settings/settings/EditSettingsForm.js", 161 "file": "src/components/settings/settings/EditSettingsForm.js",
110 "start": { 162 "start": {
111 "line": 48, 163 "line": 65,
112 "column": 13 164 "column": 13
113 }, 165 },
114 "end": { 166 "end": {
115 "line": 51, 167 "line": 68,
116 "column": 3 168 "column": 3
117 } 169 }
118 }, 170 },
@@ -121,11 +173,11 @@
121 "defaultMessage": "!!!Clear cache", 173 "defaultMessage": "!!!Clear cache",
122 "file": "src/components/settings/settings/EditSettingsForm.js", 174 "file": "src/components/settings/settings/EditSettingsForm.js",
123 "start": { 175 "start": {
124 "line": 52, 176 "line": 69,
125 "column": 23 177 "column": 23
126 }, 178 },
127 "end": { 179 "end": {
128 "line": 55, 180 "line": 72,
129 "column": 3 181 "column": 3
130 } 182 }
131 }, 183 },
@@ -134,11 +186,11 @@
134 "defaultMessage": "!!!Check for updates", 186 "defaultMessage": "!!!Check for updates",
135 "file": "src/components/settings/settings/EditSettingsForm.js", 187 "file": "src/components/settings/settings/EditSettingsForm.js",
136 "start": { 188 "start": {
137 "line": 56, 189 "line": 73,
138 "column": 25 190 "column": 25
139 }, 191 },
140 "end": { 192 "end": {
141 "line": 59, 193 "line": 76,
142 "column": 3 194 "column": 3
143 } 195 }
144 }, 196 },
@@ -147,11 +199,11 @@
147 "defaultMessage": "!!!Restart & install update", 199 "defaultMessage": "!!!Restart & install update",
148 "file": "src/components/settings/settings/EditSettingsForm.js", 200 "file": "src/components/settings/settings/EditSettingsForm.js",
149 "start": { 201 "start": {
150 "line": 60, 202 "line": 77,
151 "column": 23 203 "column": 23
152 }, 204 },
153 "end": { 205 "end": {
154 "line": 63, 206 "line": 80,
155 "column": 3 207 "column": 3
156 } 208 }
157 }, 209 },
@@ -160,11 +212,11 @@
160 "defaultMessage": "!!!Is searching for update", 212 "defaultMessage": "!!!Is searching for update",
161 "file": "src/components/settings/settings/EditSettingsForm.js", 213 "file": "src/components/settings/settings/EditSettingsForm.js",
162 "start": { 214 "start": {
163 "line": 64, 215 "line": 81,
164 "column": 25 216 "column": 25
165 }, 217 },
166 "end": { 218 "end": {
167 "line": 67, 219 "line": 84,
168 "column": 3 220 "column": 3
169 } 221 }
170 }, 222 },
@@ -173,24 +225,24 @@
173 "defaultMessage": "!!!Update available, downloading...", 225 "defaultMessage": "!!!Update available, downloading...",
174 "file": "src/components/settings/settings/EditSettingsForm.js", 226 "file": "src/components/settings/settings/EditSettingsForm.js",
175 "start": { 227 "start": {
176 "line": 68, 228 "line": 85,
177 "column": 25 229 "column": 25
178 }, 230 },
179 "end": { 231 "end": {
180 "line": 71, 232 "line": 88,
181 "column": 3 233 "column": 3
182 } 234 }
183 }, 235 },
184 { 236 {
185 "id": "settings.app.updateStatusUpToDate", 237 "id": "settings.app.updateStatusUpToDate",
186 "defaultMessage": "!!!You are using the latest version of Franz", 238 "defaultMessage": "!!!You are using the latest version of Ferdi",
187 "file": "src/components/settings/settings/EditSettingsForm.js", 239 "file": "src/components/settings/settings/EditSettingsForm.js",
188 "start": { 240 "start": {
189 "line": 72, 241 "line": 89,
190 "column": 24 242 "column": 24
191 }, 243 },
192 "end": { 244 "end": {
193 "line": 75, 245 "line": 92,
194 "column": 3 246 "column": 3
195 } 247 }
196 }, 248 },
@@ -199,11 +251,11 @@
199 "defaultMessage": "!!!Current version:", 251 "defaultMessage": "!!!Current version:",
200 "file": "src/components/settings/settings/EditSettingsForm.js", 252 "file": "src/components/settings/settings/EditSettingsForm.js",
201 "start": { 253 "start": {
202 "line": 76, 254 "line": 93,
203 "column": 18 255 "column": 18
204 }, 256 },
205 "end": { 257 "end": {
206 "line": 79, 258 "line": 96,
207 "column": 3 259 "column": 3
208 } 260 }
209 }, 261 },
@@ -212,11 +264,11 @@
212 "defaultMessage": "!!!Changes require restart", 264 "defaultMessage": "!!!Changes require restart",
213 "file": "src/components/settings/settings/EditSettingsForm.js", 265 "file": "src/components/settings/settings/EditSettingsForm.js",
214 "start": { 266 "start": {
215 "line": 80, 267 "line": 97,
216 "column": 29 268 "column": 29
217 }, 269 },
218 "end": { 270 "end": {
219 "line": 83, 271 "line": 100,
220 "column": 3 272 "column": 3
221 } 273 }
222 }, 274 },
@@ -225,11 +277,11 @@
225 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", 277 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
226 "file": "src/components/settings/settings/EditSettingsForm.js", 278 "file": "src/components/settings/settings/EditSettingsForm.js",
227 "start": { 279 "start": {
228 "line": 84, 280 "line": 101,
229 "column": 22 281 "column": 22
230 }, 282 },
231 "end": { 283 "end": {
232 "line": 87, 284 "line": 104,
233 "column": 3 285 "column": 3
234 } 286 }
235 } 287 }
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
index 0c33fee5f..80adadb67 100644
--- a/src/i18n/messages/src/components/settings/team/TeamDashboard.json
+++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
@@ -14,7 +14,7 @@
14 }, 14 },
15 { 15 {
16 "id": "settings.team.contentHeadline", 16 "id": "settings.team.contentHeadline",
17 "defaultMessage": "!!!Franz for Teams", 17 "defaultMessage": "!!!Ferdi for Teams",
18 "file": "src/components/settings/team/TeamDashboard.js", 18 "file": "src/components/settings/team/TeamDashboard.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 21,
@@ -40,7 +40,7 @@
40 }, 40 },
41 { 41 {
42 "id": "settings.team.copy", 42 "id": "settings.team.copy",
43 "defaultMessage": "!!!Franz 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!", 43 "defaultMessage": "!!!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!",
44 "file": "src/components/settings/team/TeamDashboard.js", 44 "file": "src/components/settings/team/TeamDashboard.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 29,
diff --git a/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json b/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json
index fd969da78..6370e4bb9 100644
--- a/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json
+++ b/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Get a Franz Supporter License", 4 "defaultMessage": "!!!Get a Franz Supporter License",
5 "file": "src/components/ui/ActivateTrialButton/index.js", 5 "file": "src/components/ui/ActivateTrialButton/index.js",
6 "start": { 6 "start": {
7 "line": 13, 7 "line": 12,
8 "column": 10 8 "column": 10
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 16, 11 "line": 15,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", 17 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional",
18 "file": "src/components/ui/ActivateTrialButton/index.js", 18 "file": "src/components/ui/ActivateTrialButton/index.js",
19 "start": { 19 "start": {
20 "line": 17, 20 "line": 16,
21 "column": 15 21 "column": 15
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 20, 24 "line": 19,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Upgrade account", 30 "defaultMessage": "!!!Upgrade account",
31 "file": "src/components/ui/ActivateTrialButton/index.js", 31 "file": "src/components/ui/ActivateTrialButton/index.js",
32 "start": { 32 "start": {
33 "line": 21, 33 "line": 20,
34 "column": 15 34 "column": 15
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 24, 37 "line": 23,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Activate the free Franz Professional trial", 43 "defaultMessage": "!!!Activate the free Franz Professional trial",
44 "file": "src/components/ui/ActivateTrialButton/index.js", 44 "file": "src/components/ui/ActivateTrialButton/index.js",
45 "start": { 45 "start": {
46 "line": 25, 46 "line": 24,
47 "column": 20 47 "column": 20
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 28, 50 "line": 27,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!No strings attached", 56 "defaultMessage": "!!!No strings attached",
57 "file": "src/components/ui/ActivateTrialButton/index.js", 57 "file": "src/components/ui/ActivateTrialButton/index.js",
58 "start": { 58 "start": {
59 "line": 29, 59 "line": 28,
60 "column": 29 60 "column": 29
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 32, 63 "line": 31,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!No credit card required", 69 "defaultMessage": "!!!No credit card required",
70 "file": "src/components/ui/ActivateTrialButton/index.js", 70 "file": "src/components/ui/ActivateTrialButton/index.js",
71 "start": { 71 "start": {
72 "line": 33, 72 "line": 32,
73 "column": 16 73 "column": 16
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 36, 76 "line": 35,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 82 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
83 "file": "src/components/ui/ActivateTrialButton/index.js", 83 "file": "src/components/ui/ActivateTrialButton/index.js",
84 "start": { 84 "start": {
85 "line": 37, 85 "line": 36,
86 "column": 21 86 "column": 21
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 40, 89 "line": 39,
90 "column": 3 90 "column": 3
91 } 91 }
92 } 92 }
diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json
index 0cde4cee5..320d3ca3e 100644
--- a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json
+++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Upgrade account", 4 "defaultMessage": "!!!Upgrade account",
5 "file": "src/components/ui/PremiumFeatureContainer/index.js", 5 "file": "src/components/ui/PremiumFeatureContainer/index.js",
6 "start": { 6 "start": {
7 "line": 16, 7 "line": 15,
8 "column": 10 8 "column": 10
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 19, 11 "line": 18,
12 "column": 3 12 "column": 3
13 } 13 }
14 } 14 }
diff --git a/src/i18n/messages/src/components/ui/UpgradeButton/index.json b/src/i18n/messages/src/components/ui/UpgradeButton/index.json
index 28e44cb66..f270f5a65 100644
--- a/src/i18n/messages/src/components/ui/UpgradeButton/index.json
+++ b/src/i18n/messages/src/components/ui/UpgradeButton/index.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Upgrade to Franz Professional", 4 "defaultMessage": "!!!Upgrade to Franz Professional",
5 "file": "src/components/ui/UpgradeButton/index.js", 5 "file": "src/components/ui/UpgradeButton/index.js",
6 "start": { 6 "start": {
7 "line": 13, 7 "line": 12,
8 "column": 16 8 "column": 16
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 16, 11 "line": 15,
12 "column": 3 12 "column": 3
13 } 13 }
14 } 14 }
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
index d0a243ec0..83d9cefe8 100644
--- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
+++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
@@ -1,14 +1,14 @@
1[ 1[
2 { 2 {
3 "id": "settings.app.form.autoLaunchOnStart", 3 "id": "settings.app.form.autoLaunchOnStart",
4 "defaultMessage": "!!!Launch Franz on start", 4 "defaultMessage": "!!!Launch Ferdi on start",
5 "file": "src/containers/settings/EditSettingsScreen.js", 5 "file": "src/containers/settings/EditSettingsScreen.js",
6 "start": { 6 "start": {
7 "line": 26, 7 "line": 28,
8 "column": 21 8 "column": 21
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 29, 11 "line": 31,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,50 +17,115 @@
17 "defaultMessage": "!!!Open in background", 17 "defaultMessage": "!!!Open in background",
18 "file": "src/containers/settings/EditSettingsScreen.js", 18 "file": "src/containers/settings/EditSettingsScreen.js",
19 "start": { 19 "start": {
20 "line": 30, 20 "line": 32,
21 "column": 26 21 "column": 26
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 33, 24 "line": 35,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
28 { 28 {
29 "id": "settings.app.form.runInBackground", 29 "id": "settings.app.form.runInBackground",
30 "defaultMessage": "!!!Keep Franz in background when closing the window", 30 "defaultMessage": "!!!Keep Ferdi in background when closing the window",
31 "file": "src/containers/settings/EditSettingsScreen.js", 31 "file": "src/containers/settings/EditSettingsScreen.js",
32 "start": { 32 "start": {
33 "line": 34, 33 "line": 36,
34 "column": 19 34 "column": 19
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 37, 37 "line": 39,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
41 { 41 {
42 "id": "settings.app.form.enableSystemTray", 42 "id": "settings.app.form.enableSystemTray",
43 "defaultMessage": "!!!Show Franz in system tray", 43 "defaultMessage": "!!!Show Ferdi in system tray",
44 "file": "src/containers/settings/EditSettingsScreen.js", 44 "file": "src/containers/settings/EditSettingsScreen.js",
45 "start": { 45 "start": {
46 "line": 38, 46 "line": 40,
47 "column": 20 47 "column": 20
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 41, 50 "line": 43,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
54 { 54 {
55 "id": "settings.app.form.minimizeToSystemTray", 55 "id": "settings.app.form.minimizeToSystemTray",
56 "defaultMessage": "!!!Minimize Franz to system tray", 56 "defaultMessage": "!!!Minimize Ferdi to system tray",
57 "file": "src/containers/settings/EditSettingsScreen.js", 57 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": { 58 "start": {
59 "line": 42, 59 "line": 44,
60 "column": 24 60 "column": 24
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 45, 63 "line": 47,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.app.form.privateNotifications",
69 "defaultMessage": "!!!Don't show message content in notifications",
70 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": {
72 "line": 48,
73 "column": 24
74 },
75 "end": {
76 "line": 51,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.app.form.server",
82 "defaultMessage": "!!!Server",
83 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": {
85 "line": 52,
86 "column": 10
87 },
88 "end": {
89 "line": 55,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.app.form.todoServer",
95 "defaultMessage": "!!!Todo Server",
96 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": {
98 "line": 56,
99 "column": 14
100 },
101 "end": {
102 "line": 59,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.app.form.enableLock",
108 "defaultMessage": "!!!Enable Ferdi password lock",
109 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": {
111 "line": 60,
112 "column": 14
113 },
114 "end": {
115 "line": 63,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.app.form.lockPassword",
121 "defaultMessage": "!!!Ferdi Lock password",
122 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": {
124 "line": 64,
125 "column": 16
126 },
127 "end": {
128 "line": 67,
64 "column": 3 129 "column": 3
65 } 130 }
66 }, 131 },
@@ -69,11 +134,11 @@
69 "defaultMessage": "!!!Language", 134 "defaultMessage": "!!!Language",
70 "file": "src/containers/settings/EditSettingsScreen.js", 135 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": { 136 "start": {
72 "line": 46, 137 "line": 68,
73 "column": 12 138 "column": 12
74 }, 139 },
75 "end": { 140 "end": {
76 "line": 49, 141 "line": 71,
77 "column": 3 142 "column": 3
78 } 143 }
79 }, 144 },
@@ -82,11 +147,11 @@
82 "defaultMessage": "!!!Dark Mode", 147 "defaultMessage": "!!!Dark Mode",
83 "file": "src/containers/settings/EditSettingsScreen.js", 148 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": { 149 "start": {
85 "line": 50, 150 "line": 72,
86 "column": 12 151 "column": 12
87 }, 152 },
88 "end": { 153 "end": {
89 "line": 53, 154 "line": 75,
90 "column": 3 155 "column": 3
91 } 156 }
92 }, 157 },
@@ -95,11 +160,11 @@
95 "defaultMessage": "!!!Display disabled services tabs", 160 "defaultMessage": "!!!Display disabled services tabs",
96 "file": "src/containers/settings/EditSettingsScreen.js", 161 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": { 162 "start": {
98 "line": 54, 163 "line": 76,
99 "column": 24 164 "column": 24
100 }, 165 },
101 "end": { 166 "end": {
102 "line": 57, 167 "line": 79,
103 "column": 3 168 "column": 3
104 } 169 }
105 }, 170 },
@@ -108,11 +173,11 @@
108 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 173 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
109 "file": "src/containers/settings/EditSettingsScreen.js", 174 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": { 175 "start": {
111 "line": 58, 176 "line": 80,
112 "column": 29 177 "column": 29
113 }, 178 },
114 "end": { 179 "end": {
115 "line": 61, 180 "line": 83,
116 "column": 3 181 "column": 3
117 } 182 }
118 }, 183 },
@@ -121,11 +186,11 @@
121 "defaultMessage": "!!!Enable spell checking", 186 "defaultMessage": "!!!Enable spell checking",
122 "file": "src/containers/settings/EditSettingsScreen.js", 187 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": { 188 "start": {
124 "line": 62, 189 "line": 84,
125 "column": 23 190 "column": 23
126 }, 191 },
127 "end": { 192 "end": {
128 "line": 65, 193 "line": 87,
129 "column": 3 194 "column": 3
130 } 195 }
131 }, 196 },
@@ -134,11 +199,11 @@
134 "defaultMessage": "!!!Enable GPU Acceleration", 199 "defaultMessage": "!!!Enable GPU Acceleration",
135 "file": "src/containers/settings/EditSettingsScreen.js", 200 "file": "src/containers/settings/EditSettingsScreen.js",
136 "start": { 201 "start": {
137 "line": 66, 202 "line": 88,
138 "column": 25 203 "column": 25
139 }, 204 },
140 "end": { 205 "end": {
141 "line": 69, 206 "line": 91,
142 "column": 3 207 "column": 3
143 } 208 }
144 }, 209 },
@@ -147,11 +212,11 @@
147 "defaultMessage": "!!!Include beta versions", 212 "defaultMessage": "!!!Include beta versions",
148 "file": "src/containers/settings/EditSettingsScreen.js", 213 "file": "src/containers/settings/EditSettingsScreen.js",
149 "start": { 214 "start": {
150 "line": 70, 215 "line": 92,
151 "column": 8 216 "column": 8
152 }, 217 },
153 "end": { 218 "end": {
154 "line": 73, 219 "line": 95,
155 "column": 3 220 "column": 3
156 } 221 }
157 }, 222 },
@@ -160,11 +225,11 @@
160 "defaultMessage": "!!!Enable Franz Todos", 225 "defaultMessage": "!!!Enable Franz Todos",
161 "file": "src/containers/settings/EditSettingsScreen.js", 226 "file": "src/containers/settings/EditSettingsScreen.js",
162 "start": { 227 "start": {
163 "line": 74, 228 "line": 96,
164 "column": 15 229 "column": 15
165 }, 230 },
166 "end": { 231 "end": {
167 "line": 77, 232 "line": 99,
168 "column": 3 233 "column": 3
169 } 234 }
170 }, 235 },
@@ -173,11 +238,11 @@
173 "defaultMessage": "!!!Keep all workspaces loaded", 238 "defaultMessage": "!!!Keep all workspaces loaded",
174 "file": "src/containers/settings/EditSettingsScreen.js", 239 "file": "src/containers/settings/EditSettingsScreen.js",
175 "start": { 240 "start": {
176 "line": 78, 241 "line": 100,
177 "column": 27 242 "column": 27
178 }, 243 },
179 "end": { 244 "end": {
180 "line": 81, 245 "line": 103,
181 "column": 3 246 "column": 3
182 } 247 }
183 } 248 }
diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
index eb1b66916..ba8b624a1 100644
--- a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
+++ b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
@@ -1,14 +1,14 @@
1[ 1[
2 { 2 {
3 "id": "feature.announcements.changelog.headline", 3 "id": "feature.announcements.changelog.headline",
4 "defaultMessage": "!!!Changes in Franz {version}", 4 "defaultMessage": "!!!Changes in Ferdi {version}",
5 "file": "src/features/announcements/components/AnnouncementScreen.js", 5 "file": "src/features/announcements/components/AnnouncementScreen.js",
6 "start": { 6 "start": {
7 "line": 20, 7 "line": 19,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 23, 11 "line": 22,
12 "column": 3 12 "column": 3
13 } 13 }
14 } 14 }
diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json
index 0d345a47b..77fabf236 100644
--- a/src/i18n/messages/src/features/delayApp/Component.json
+++ b/src/i18n/messages/src/features/delayApp/Component.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Please purchase license to skip waiting", 4 "defaultMessage": "!!!Please purchase license to skip waiting",
5 "file": "src/features/delayApp/Component.js", 5 "file": "src/features/delayApp/Component.js",
6 "start": { 6 "start": {
7 "line": 17, 7 "line": 14,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 20, 11 "line": 17,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line", 17 "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line",
18 "file": "src/features/delayApp/Component.js", 18 "file": "src/features/delayApp/Component.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 18,
21 "column": 17 21 "column": 17
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 24, 24 "line": 21,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Get a Franz Supporter License", 30 "defaultMessage": "!!!Get a Franz Supporter License",
31 "file": "src/features/delayApp/Component.js", 31 "file": "src/features/delayApp/Component.js",
32 "start": { 32 "start": {
33 "line": 25, 33 "line": 22,
34 "column": 10 34 "column": 10
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 28, 37 "line": 25,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,24 +43,24 @@
43 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", 43 "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional",
44 "file": "src/features/delayApp/Component.js", 44 "file": "src/features/delayApp/Component.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 26,
47 "column": 15 47 "column": 15
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 32, 50 "line": 29,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
54 { 54 {
55 "id": "feature.delayApp.text", 55 "id": "feature.delayApp.text",
56 "defaultMessage": "!!!Franz will continue in {seconds} seconds.", 56 "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.",
57 "file": "src/features/delayApp/Component.js", 57 "file": "src/features/delayApp/Component.js",
58 "start": { 58 "start": {
59 "line": 33, 59 "line": 30,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 36, 63 "line": 33,
64 "column": 3 64 "column": 3
65 } 65 }
66 } 66 }
diff --git a/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json b/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json
index df5bc03e8..e35ad8dd8 100644
--- a/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json
+++ b/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", 4 "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.",
5 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", 5 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js",
6 "start": { 6 "start": {
7 "line": 11, 7 "line": 9,
8 "column": 16 8 "column": 16
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 14, 11 "line": 12,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Upgrade account", 17 "defaultMessage": "!!!Upgrade account",
18 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", 18 "file": "src/features/serviceLimit/components/LimitReachedInfobox.js",
19 "start": { 19 "start": {
20 "line": 15, 20 "line": 13,
21 "column": 10 21 "column": 10
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 18, 24 "line": 16,
25 "column": 3 25 "column": 3
26 } 26 }
27 } 27 }
diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json
index 72150f2b0..402865ec5 100644
--- a/src/i18n/messages/src/features/shareFranz/Component.json
+++ b/src/i18n/messages/src/features/shareFranz/Component.json
@@ -1,27 +1,27 @@
1[ 1[
2 { 2 {
3 "id": "feature.shareFranz.headline", 3 "id": "feature.shareFranz.headline",
4 "defaultMessage": "!!!Franz is better together!", 4 "defaultMessage": "!!!Ferdi is better together!",
5 "file": "src/features/shareFranz/Component.js", 5 "file": "src/features/shareFranz/Component.js",
6 "start": { 6 "start": {
7 "line": 18, 7 "line": 17,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 21, 11 "line": 20,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
15 { 15 {
16 "id": "feature.shareFranz.text", 16 "id": "feature.shareFranz.text",
17 "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", 17 "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.",
18 "file": "src/features/shareFranz/Component.js", 18 "file": "src/features/shareFranz/Component.js",
19 "start": { 19 "start": {
20 "line": 22, 20 "line": 21,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 25, 24 "line": 24,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Share as email", 30 "defaultMessage": "!!!Share as email",
31 "file": "src/features/shareFranz/Component.js", 31 "file": "src/features/shareFranz/Component.js",
32 "start": { 32 "start": {
33 "line": 26, 33 "line": 25,
34 "column": 16 34 "column": 16
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 29, 37 "line": 28,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Share on Facebook", 43 "defaultMessage": "!!!Share on Facebook",
44 "file": "src/features/shareFranz/Component.js", 44 "file": "src/features/shareFranz/Component.js",
45 "start": { 45 "start": {
46 "line": 30, 46 "line": 29,
47 "column": 19 47 "column": 19
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 33, 50 "line": 32,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Share on Twitter", 56 "defaultMessage": "!!!Share on Twitter",
57 "file": "src/features/shareFranz/Component.js", 57 "file": "src/features/shareFranz/Component.js",
58 "start": { 58 "start": {
59 "line": 34, 59 "line": 33,
60 "column": 18 60 "column": 18
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 37, 63 "line": 36,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", 69 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
70 "file": "src/features/shareFranz/Component.js", 70 "file": "src/features/shareFranz/Component.js",
71 "start": { 71 "start": {
72 "line": 38, 72 "line": 37,
73 "column": 18 73 "column": 18
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 41, 76 "line": 40,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", 82 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
83 "file": "src/features/shareFranz/Component.js", 83 "file": "src/features/shareFranz/Component.js",
84 "start": { 84 "start": {
85 "line": 42, 85 "line": 41,
86 "column": 20 86 "column": 20
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 45, 89 "line": 44,
90 "column": 3 90 "column": 3
91 } 91 }
92 } 92 }
diff --git a/src/i18n/messages/src/features/todos/components/TodosWebview.json b/src/i18n/messages/src/features/todos/components/TodosWebview.json
index 7f230e82a..19ea81171 100644
--- a/src/i18n/messages/src/features/todos/components/TodosWebview.json
+++ b/src/i18n/messages/src/features/todos/components/TodosWebview.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Franz Todos are available to premium users now!", 4 "defaultMessage": "!!!Franz Todos are available to premium users now!",
5 "file": "src/features/todos/components/TodosWebview.js", 5 "file": "src/features/todos/components/TodosWebview.js",
6 "start": { 6 "start": {
7 "line": 15, 7 "line": 17,
8 "column": 15 8 "column": 15
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 18, 11 "line": 20,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Upgrade Account", 17 "defaultMessage": "!!!Upgrade Account",
18 "file": "src/features/todos/components/TodosWebview.js", 18 "file": "src/features/todos/components/TodosWebview.js",
19 "start": { 19 "start": {
20 "line": 19, 20 "line": 21,
21 "column": 14 21 "column": 14
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 22, 24 "line": 24,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Everyone else will have to wait a little longer.", 30 "defaultMessage": "!!!Everyone else will have to wait a little longer.",
31 "file": "src/features/todos/components/TodosWebview.js", 31 "file": "src/features/todos/components/TodosWebview.js",
32 "start": { 32 "start": {
33 "line": 23, 33 "line": 25,
34 "column": 15 34 "column": 15
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 26, 37 "line": 28,
38 "column": 3 38 "column": 3
39 } 39 }
40 } 40 }
diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json
index f62bac42c..1aabfb520 100644
--- a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json
+++ b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Create workspace", 4 "defaultMessage": "!!!Create workspace",
5 "file": "src/features/workspaces/components/CreateWorkspaceForm.js", 5 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
6 "start": { 6 "start": {
7 "line": 13, 7 "line": 12,
8 "column": 16 8 "column": 16
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 16, 11 "line": 15,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Name", 17 "defaultMessage": "!!!Name",
18 "file": "src/features/workspaces/components/CreateWorkspaceForm.js", 18 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
19 "start": { 19 "start": {
20 "line": 17, 20 "line": 16,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 20, 24 "line": 19,
25 "column": 3 25 "column": 3
26 } 26 }
27 } 27 }
diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json
index 20ed99f8d..4b047eac1 100644
--- a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json
+++ b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Delete workspace", 4 "defaultMessage": "!!!Delete workspace",
5 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 5 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
6 "start": { 6 "start": {
7 "line": 19, 7 "line": 21,
8 "column": 16 8 "column": 16
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 22, 11 "line": 24,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Save workspace", 17 "defaultMessage": "!!!Save workspace",
18 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 18 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
19 "start": { 19 "start": {
20 "line": 23, 20 "line": 25,
21 "column": 14 21 "column": 14
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 26, 24 "line": 28,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Name", 30 "defaultMessage": "!!!Name",
31 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 31 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
32 "start": { 32 "start": {
33 "line": 27, 33 "line": 29,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 30, 37 "line": 32,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,37 @@
43 "defaultMessage": "!!!Your workspaces", 43 "defaultMessage": "!!!Your workspaces",
44 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 44 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
45 "start": { 45 "start": {
46 "line": 31, 46 "line": 33,
47 "column": 18 47 "column": 18
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 34, 50 "line": 36,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.workspace.form.keepLoaded",
56 "defaultMessage": "!!!Keep this workspace loaded*",
57 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
58 "start": {
59 "line": 37,
60 "column": 14
61 },
62 "end": {
63 "line": 40,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.workspace.form.keepLoadedInfo",
69 "defaultMessage": "!!!*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
70 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
71 "start": {
72 "line": 41,
73 "column": 18
74 },
75 "end": {
76 "line": 44,
51 "column": 3 77 "column": 3
52 } 78 }
53 }, 79 },
@@ -56,11 +82,11 @@
56 "defaultMessage": "!!!Services in this Workspace", 82 "defaultMessage": "!!!Services in this Workspace",
57 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 83 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
58 "start": { 84 "start": {
59 "line": 35, 85 "line": 45,
60 "column": 31 86 "column": 31
61 }, 87 },
62 "end": { 88 "end": {
63 "line": 38, 89 "line": 48,
64 "column": 3 90 "column": 3
65 } 91 }
66 }, 92 },
@@ -69,11 +95,11 @@
69 "defaultMessage": "!!!You haven't added any services yet.", 95 "defaultMessage": "!!!You haven't added any services yet.",
70 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 96 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
71 "start": { 97 "start": {
72 "line": 39, 98 "line": 49,
73 "column": 19 99 "column": 19
74 }, 100 },
75 "end": { 101 "end": {
76 "line": 42, 102 "line": 52,
77 "column": 3 103 "column": 3
78 } 104 }
79 }, 105 },
@@ -82,11 +108,11 @@
82 "defaultMessage": "!!!Discover services", 108 "defaultMessage": "!!!Discover services",
83 "file": "src/features/workspaces/components/EditWorkspaceForm.js", 109 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
84 "start": { 110 "start": {
85 "line": 43, 111 "line": 53,
86 "column": 20 112 "column": 20
87 }, 113 },
88 "end": { 114 "end": {
89 "line": 46, 115 "line": 56,
90 "column": 3 116 "column": 3
91 } 117 }
92 } 118 }
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json
index 2f340f1e9..9f0935620 100644
--- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Workspaces", 4 "defaultMessage": "!!!Workspaces",
5 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 5 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
6 "start": { 6 "start": {
7 "line": 17, 7 "line": 16,
8 "column": 12 8 "column": 12
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 20, 11 "line": 19,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!All services", 17 "defaultMessage": "!!!All services",
18 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 18 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 20,
21 "column": 15 21 "column": 15
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 24, 24 "line": 23,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Workspaces settings", 30 "defaultMessage": "!!!Workspaces settings",
31 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 31 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
32 "start": { 32 "start": {
33 "line": 25, 33 "line": 24,
34 "column": 29 34 "column": 29
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 28, 37 "line": 27,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Info about workspace feature", 43 "defaultMessage": "!!!Info about workspace feature",
44 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 44 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 28,
47 "column": 24 47 "column": 24
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 32, 50 "line": 31,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Create your first workspace", 56 "defaultMessage": "!!!Create your first workspace",
57 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 57 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
58 "start": { 58 "start": {
59 "line": 33, 59 "line": 32,
60 "column": 25 60 "column": 25
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 36, 63 "line": 35,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Reactivate premium account", 69 "defaultMessage": "!!!Reactivate premium account",
70 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 70 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
71 "start": { 71 "start": {
72 "line": 37, 72 "line": 36,
73 "column": 28 73 "column": 28
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 40, 76 "line": 39,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!add new workspace", 82 "defaultMessage": "!!!add new workspace",
83 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 83 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
84 "start": { 84 "start": {
85 "line": 41, 85 "line": 40,
86 "column": 24 86 "column": 24
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 44, 89 "line": 43,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Premium feature", 95 "defaultMessage": "!!!Premium feature",
96 "file": "src/features/workspaces/components/WorkspaceDrawer.js", 96 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
97 "start": { 97 "start": {
98 "line": 45, 98 "line": 44,
99 "column": 23 99 "column": 23
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 48, 102 "line": 47,
103 "column": 3 103 "column": 3
104 } 104 }
105 } 105 }
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
index 7eb4fab50..4111ba760 100644
--- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
@@ -92,7 +92,7 @@
92 }, 92 },
93 { 93 {
94 "id": "settings.workspaces.workspaceFeatureHeadline", 94 "id": "settings.workspaces.workspaceFeatureHeadline",
95 "defaultMessage": "!!!Less is More: Introducing Franz 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": 47,
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json
index f4fd5b8b0..903de64cb 100644
--- a/src/i18n/messages/src/i18n/globalMessages.json
+++ b/src/i18n/messages/src/i18n/globalMessages.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "global.api.unhealthy", 3 "id": "global.api.unhealthy",
4 "defaultMessage": "!!!Can't connect to Franz Online Services", 4 "defaultMessage": "!!!Can't connect to Ferdi Online Services",
5 "file": "src/i18n/globalMessages.js", 5 "file": "src/i18n/globalMessages.js",
6 "start": { 6 "start": {
7 "line": 4, 7 "line": 4,
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index 26850c5b3..521022edd 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Edit", 4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js", 5 "file": "src/lib/Menu.js",
6 "start": { 6 "start": {
7 "line": 17, 7 "line": 16,
8 "column": 8 8 "column": 8
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 20, 11 "line": 19,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Undo", 17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js", 18 "file": "src/lib/Menu.js",
19 "start": { 19 "start": {
20 "line": 21, 20 "line": 20,
21 "column": 8 21 "column": 8
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 24, 24 "line": 23,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Redo", 30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js", 31 "file": "src/lib/Menu.js",
32 "start": { 32 "start": {
33 "line": 25, 33 "line": 24,
34 "column": 8 34 "column": 8
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 28, 37 "line": 27,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Cut", 43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js", 44 "file": "src/lib/Menu.js",
45 "start": { 45 "start": {
46 "line": 29, 46 "line": 28,
47 "column": 7 47 "column": 7
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 32, 50 "line": 31,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Copy", 56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js", 57 "file": "src/lib/Menu.js",
58 "start": { 58 "start": {
59 "line": 33, 59 "line": 32,
60 "column": 8 60 "column": 8
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 36, 63 "line": 35,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Paste", 69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js", 70 "file": "src/lib/Menu.js",
71 "start": { 71 "start": {
72 "line": 37, 72 "line": 36,
73 "column": 9 73 "column": 9
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 40, 76 "line": 39,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Paste And Match Style", 82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js", 83 "file": "src/lib/Menu.js",
84 "start": { 84 "start": {
85 "line": 41, 85 "line": 40,
86 "column": 22 86 "column": 22
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 44, 89 "line": 43,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Delete", 95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js", 96 "file": "src/lib/Menu.js",
97 "start": { 97 "start": {
98 "line": 45, 98 "line": 44,
99 "column": 10 99 "column": 10
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 48, 102 "line": 47,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Select All", 108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js", 109 "file": "src/lib/Menu.js",
110 "start": { 110 "start": {
111 "line": 49, 111 "line": 48,
112 "column": 13 112 "column": 13
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 52, 115 "line": 51,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Speech", 121 "defaultMessage": "!!!Speech",
122 "file": "src/lib/Menu.js", 122 "file": "src/lib/Menu.js",
123 "start": { 123 "start": {
124 "line": 53, 124 "line": 52,
125 "column": 10 125 "column": 10
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 56, 128 "line": 55,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Start Speaking", 134 "defaultMessage": "!!!Start Speaking",
135 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
136 "start": { 136 "start": {
137 "line": 57, 137 "line": 56,
138 "column": 17 138 "column": 17
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 60, 141 "line": 59,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Stop Speaking", 147 "defaultMessage": "!!!Stop Speaking",
148 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
149 "start": { 149 "start": {
150 "line": 61, 150 "line": 60,
151 "column": 16 151 "column": 16
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 64, 154 "line": 63,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Start Dictation", 160 "defaultMessage": "!!!Start Dictation",
161 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
162 "start": { 162 "start": {
163 "line": 65, 163 "line": 64,
164 "column": 18 164 "column": 18
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 68, 167 "line": 67,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,37 @@
173 "defaultMessage": "!!!Emoji & Symbols", 173 "defaultMessage": "!!!Emoji & Symbols",
174 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
175 "start": { 175 "start": {
176 "line": 69, 176 "line": 68,
177 "column": 16 177 "column": 16
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 71,
181 "column": 3
182 }
183 },
184 {
185 "id": "menu.view.back",
186 "defaultMessage": "!!!Back",
187 "file": "src/lib/Menu.js",
188 "start": {
180 "line": 72, 189 "line": 72,
190 "column": 8
191 },
192 "end": {
193 "line": 75,
194 "column": 3
195 }
196 },
197 {
198 "id": "menu.view.forward",
199 "defaultMessage": "!!!Forward",
200 "file": "src/lib/Menu.js",
201 "start": {
202 "line": 76,
203 "column": 11
204 },
205 "end": {
206 "line": 79,
181 "column": 3 207 "column": 3
182 } 208 }
183 }, 209 },
@@ -186,11 +212,11 @@
186 "defaultMessage": "!!!Actual Size", 212 "defaultMessage": "!!!Actual Size",
187 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
188 "start": { 214 "start": {
189 "line": 73, 215 "line": 80,
190 "column": 13 216 "column": 13
191 }, 217 },
192 "end": { 218 "end": {
193 "line": 76, 219 "line": 83,
194 "column": 3 220 "column": 3
195 } 221 }
196 }, 222 },
@@ -199,11 +225,11 @@
199 "defaultMessage": "!!!Zoom In", 225 "defaultMessage": "!!!Zoom In",
200 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
201 "start": { 227 "start": {
202 "line": 77, 228 "line": 84,
203 "column": 10 229 "column": 10
204 }, 230 },
205 "end": { 231 "end": {
206 "line": 80, 232 "line": 87,
207 "column": 3 233 "column": 3
208 } 234 }
209 }, 235 },
@@ -212,11 +238,11 @@
212 "defaultMessage": "!!!Zoom Out", 238 "defaultMessage": "!!!Zoom Out",
213 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
214 "start": { 240 "start": {
215 "line": 81, 241 "line": 88,
216 "column": 11 242 "column": 11
217 }, 243 },
218 "end": { 244 "end": {
219 "line": 84, 245 "line": 91,
220 "column": 3 246 "column": 3
221 } 247 }
222 }, 248 },
@@ -225,11 +251,11 @@
225 "defaultMessage": "!!!Enter Full Screen", 251 "defaultMessage": "!!!Enter Full Screen",
226 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
227 "start": { 253 "start": {
228 "line": 85, 254 "line": 92,
229 "column": 19 255 "column": 19
230 }, 256 },
231 "end": { 257 "end": {
232 "line": 88, 258 "line": 95,
233 "column": 3 259 "column": 3
234 } 260 }
235 }, 261 },
@@ -238,11 +264,11 @@
238 "defaultMessage": "!!!Exit Full Screen", 264 "defaultMessage": "!!!Exit Full Screen",
239 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
240 "start": { 266 "start": {
241 "line": 89, 267 "line": 96,
242 "column": 18 268 "column": 18
243 }, 269 },
244 "end": { 270 "end": {
245 "line": 92, 271 "line": 99,
246 "column": 3 272 "column": 3
247 } 273 }
248 }, 274 },
@@ -251,11 +277,11 @@
251 "defaultMessage": "!!!Toggle Full Screen", 277 "defaultMessage": "!!!Toggle Full Screen",
252 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
253 "start": { 279 "start": {
254 "line": 93, 280 "line": 100,
255 "column": 20 281 "column": 20
256 }, 282 },
257 "end": { 283 "end": {
258 "line": 96, 284 "line": 103,
259 "column": 3 285 "column": 3
260 } 286 }
261 }, 287 },
@@ -264,11 +290,11 @@
264 "defaultMessage": "!!!Toggle Developer Tools", 290 "defaultMessage": "!!!Toggle Developer Tools",
265 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
266 "start": { 292 "start": {
267 "line": 97, 293 "line": 104,
268 "column": 18 294 "column": 18
269 }, 295 },
270 "end": { 296 "end": {
271 "line": 100, 297 "line": 107,
272 "column": 3 298 "column": 3
273 } 299 }
274 }, 300 },
@@ -277,11 +303,11 @@
277 "defaultMessage": "!!!Toggle Todos Developer Tools", 303 "defaultMessage": "!!!Toggle Todos Developer Tools",
278 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
279 "start": { 305 "start": {
280 "line": 101, 306 "line": 108,
281 "column": 23 307 "column": 23
282 }, 308 },
283 "end": { 309 "end": {
284 "line": 104, 310 "line": 111,
285 "column": 3 311 "column": 3
286 } 312 }
287 }, 313 },
@@ -290,11 +316,11 @@
290 "defaultMessage": "!!!Toggle Service Developer Tools", 316 "defaultMessage": "!!!Toggle Service Developer Tools",
291 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
292 "start": { 318 "start": {
293 "line": 105, 319 "line": 112,
294 "column": 25 320 "column": 25
295 }, 321 },
296 "end": { 322 "end": {
297 "line": 108, 323 "line": 115,
298 "column": 3 324 "column": 3
299 } 325 }
300 }, 326 },
@@ -303,24 +329,37 @@
303 "defaultMessage": "!!!Reload Service", 329 "defaultMessage": "!!!Reload Service",
304 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
305 "start": { 331 "start": {
306 "line": 109, 332 "line": 116,
307 "column": 17 333 "column": 17
308 }, 334 },
309 "end": { 335 "end": {
310 "line": 112, 336 "line": 119,
311 "column": 3 337 "column": 3
312 } 338 }
313 }, 339 },
314 { 340 {
315 "id": "menu.view.reloadFranz", 341 "id": "menu.view.reloadFranz",
316 "defaultMessage": "!!!Reload Franz", 342 "defaultMessage": "!!!Reload Ferdi",
317 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
318 "start": { 344 "start": {
319 "line": 113, 345 "line": 120,
320 "column": 15 346 "column": 15
321 }, 347 },
322 "end": { 348 "end": {
323 "line": 116, 349 "line": 123,
350 "column": 3
351 }
352 },
353 {
354 "id": "menu.view.lockFerdi",
355 "defaultMessage": "!!!Lock Ferdi",
356 "file": "src/lib/Menu.js",
357 "start": {
358 "line": 124,
359 "column": 13
360 },
361 "end": {
362 "line": 127,
324 "column": 3 363 "column": 3
325 } 364 }
326 }, 365 },
@@ -329,11 +368,11 @@
329 "defaultMessage": "!!!Minimize", 368 "defaultMessage": "!!!Minimize",
330 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
331 "start": { 370 "start": {
332 "line": 117, 371 "line": 128,
333 "column": 12 372 "column": 12
334 }, 373 },
335 "end": { 374 "end": {
336 "line": 120, 375 "line": 131,
337 "column": 3 376 "column": 3
338 } 377 }
339 }, 378 },
@@ -342,11 +381,11 @@
342 "defaultMessage": "!!!Close", 381 "defaultMessage": "!!!Close",
343 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
344 "start": { 383 "start": {
345 "line": 121, 384 "line": 132,
346 "column": 9 385 "column": 9
347 }, 386 },
348 "end": { 387 "end": {
349 "line": 124, 388 "line": 135,
350 "column": 3 389 "column": 3
351 } 390 }
352 }, 391 },
@@ -355,11 +394,11 @@
355 "defaultMessage": "!!!Learn More", 394 "defaultMessage": "!!!Learn More",
356 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
357 "start": { 396 "start": {
358 "line": 125, 397 "line": 136,
359 "column": 13 398 "column": 13
360 }, 399 },
361 "end": { 400 "end": {
362 "line": 128, 401 "line": 139,
363 "column": 3 402 "column": 3
364 } 403 }
365 }, 404 },
@@ -368,11 +407,11 @@
368 "defaultMessage": "!!!Changelog", 407 "defaultMessage": "!!!Changelog",
369 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
370 "start": { 409 "start": {
371 "line": 129, 410 "line": 140,
372 "column": 13 411 "column": 13
373 }, 412 },
374 "end": { 413 "end": {
375 "line": 132, 414 "line": 143,
376 "column": 3 415 "column": 3
377 } 416 }
378 }, 417 },
@@ -381,11 +420,11 @@
381 "defaultMessage": "!!!Support", 420 "defaultMessage": "!!!Support",
382 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
383 "start": { 422 "start": {
384 "line": 133, 423 "line": 144,
385 "column": 11 424 "column": 11
386 }, 425 },
387 "end": { 426 "end": {
388 "line": 136, 427 "line": 147,
389 "column": 3 428 "column": 3
390 } 429 }
391 }, 430 },
@@ -394,24 +433,24 @@
394 "defaultMessage": "!!!Copy Debug Information", 433 "defaultMessage": "!!!Copy Debug Information",
395 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
396 "start": { 435 "start": {
397 "line": 137, 436 "line": 148,
398 "column": 13 437 "column": 13
399 }, 438 },
400 "end": { 439 "end": {
401 "line": 140, 440 "line": 151,
402 "column": 3 441 "column": 3
403 } 442 }
404 }, 443 },
405 { 444 {
406 "id": "menu.help.debugInfoCopiedHeadline", 445 "id": "menu.help.debugInfoCopiedHeadline",
407 "defaultMessage": "!!!Franz Debug Information", 446 "defaultMessage": "!!!Ferdi Debug Information",
408 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
409 "start": { 448 "start": {
410 "line": 141, 449 "line": 152,
411 "column": 27 450 "column": 27
412 }, 451 },
413 "end": { 452 "end": {
414 "line": 144, 453 "line": 155,
415 "column": 3 454 "column": 3
416 } 455 }
417 }, 456 },
@@ -420,11 +459,11 @@
420 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 459 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
421 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
422 "start": { 461 "start": {
423 "line": 145, 462 "line": 156,
424 "column": 23 463 "column": 23
425 }, 464 },
426 "end": { 465 "end": {
427 "line": 148, 466 "line": 159,
428 "column": 3 467 "column": 3
429 } 468 }
430 }, 469 },
@@ -433,11 +472,11 @@
433 "defaultMessage": "!!!Terms of Service", 472 "defaultMessage": "!!!Terms of Service",
434 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
435 "start": { 474 "start": {
436 "line": 149, 475 "line": 160,
437 "column": 7 476 "column": 7
438 }, 477 },
439 "end": { 478 "end": {
440 "line": 152, 479 "line": 163,
441 "column": 3 480 "column": 3
442 } 481 }
443 }, 482 },
@@ -446,11 +485,11 @@
446 "defaultMessage": "!!!Privacy Statement", 485 "defaultMessage": "!!!Privacy Statement",
447 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
448 "start": { 487 "start": {
449 "line": 153, 488 "line": 164,
450 "column": 11 489 "column": 11
451 }, 490 },
452 "end": { 491 "end": {
453 "line": 156, 492 "line": 167,
454 "column": 3 493 "column": 3
455 } 494 }
456 }, 495 },
@@ -459,11 +498,11 @@
459 "defaultMessage": "!!!File", 498 "defaultMessage": "!!!File",
460 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
461 "start": { 500 "start": {
462 "line": 157, 501 "line": 168,
463 "column": 8 502 "column": 8
464 }, 503 },
465 "end": { 504 "end": {
466 "line": 160, 505 "line": 171,
467 "column": 3 506 "column": 3
468 } 507 }
469 }, 508 },
@@ -472,11 +511,11 @@
472 "defaultMessage": "!!!View", 511 "defaultMessage": "!!!View",
473 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
474 "start": { 513 "start": {
475 "line": 161, 514 "line": 172,
476 "column": 8 515 "column": 8
477 }, 516 },
478 "end": { 517 "end": {
479 "line": 164, 518 "line": 175,
480 "column": 3 519 "column": 3
481 } 520 }
482 }, 521 },
@@ -485,11 +524,11 @@
485 "defaultMessage": "!!!Services", 524 "defaultMessage": "!!!Services",
486 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
487 "start": { 526 "start": {
488 "line": 165, 527 "line": 176,
489 "column": 12 528 "column": 12
490 }, 529 },
491 "end": { 530 "end": {
492 "line": 168, 531 "line": 179,
493 "column": 3 532 "column": 3
494 } 533 }
495 }, 534 },
@@ -498,11 +537,11 @@
498 "defaultMessage": "!!!Window", 537 "defaultMessage": "!!!Window",
499 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
500 "start": { 539 "start": {
501 "line": 169, 540 "line": 180,
502 "column": 10 541 "column": 10
503 }, 542 },
504 "end": { 543 "end": {
505 "line": 172, 544 "line": 183,
506 "column": 3 545 "column": 3
507 } 546 }
508 }, 547 },
@@ -511,24 +550,24 @@
511 "defaultMessage": "!!!Help", 550 "defaultMessage": "!!!Help",
512 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
513 "start": { 552 "start": {
514 "line": 173, 553 "line": 184,
515 "column": 8 554 "column": 8
516 }, 555 },
517 "end": { 556 "end": {
518 "line": 176, 557 "line": 187,
519 "column": 3 558 "column": 3
520 } 559 }
521 }, 560 },
522 { 561 {
523 "id": "menu.app.about", 562 "id": "menu.app.about",
524 "defaultMessage": "!!!About Franz", 563 "defaultMessage": "!!!About Ferdi",
525 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
526 "start": { 565 "start": {
527 "line": 177, 566 "line": 188,
528 "column": 9 567 "column": 9
529 }, 568 },
530 "end": { 569 "end": {
531 "line": 180, 570 "line": 191,
532 "column": 3 571 "column": 3
533 } 572 }
534 }, 573 },
@@ -537,11 +576,11 @@
537 "defaultMessage": "!!!What's new?", 576 "defaultMessage": "!!!What's new?",
538 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
539 "start": { 578 "start": {
540 "line": 181, 579 "line": 192,
541 "column": 16 580 "column": 16
542 }, 581 },
543 "end": { 582 "end": {
544 "line": 184, 583 "line": 195,
545 "column": 3 584 "column": 3
546 } 585 }
547 }, 586 },
@@ -550,11 +589,11 @@
550 "defaultMessage": "!!!Settings", 589 "defaultMessage": "!!!Settings",
551 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
552 "start": { 591 "start": {
553 "line": 185, 592 "line": 196,
554 "column": 12 593 "column": 12
555 }, 594 },
556 "end": { 595 "end": {
557 "line": 188, 596 "line": 199,
558 "column": 3 597 "column": 3
559 } 598 }
560 }, 599 },
@@ -563,11 +602,11 @@
563 "defaultMessage": "!!!Check for updates", 602 "defaultMessage": "!!!Check for updates",
564 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
565 "start": { 604 "start": {
566 "line": 189, 605 "line": 200,
567 "column": 19 606 "column": 19
568 }, 607 },
569 "end": { 608 "end": {
570 "line": 192, 609 "line": 203,
571 "column": 3 610 "column": 3
572 } 611 }
573 }, 612 },
@@ -576,11 +615,11 @@
576 "defaultMessage": "!!!Hide", 615 "defaultMessage": "!!!Hide",
577 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
578 "start": { 617 "start": {
579 "line": 193, 618 "line": 204,
580 "column": 8 619 "column": 8
581 }, 620 },
582 "end": { 621 "end": {
583 "line": 196, 622 "line": 207,
584 "column": 3 623 "column": 3
585 } 624 }
586 }, 625 },
@@ -589,11 +628,11 @@
589 "defaultMessage": "!!!Hide Others", 628 "defaultMessage": "!!!Hide Others",
590 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
591 "start": { 630 "start": {
592 "line": 197, 631 "line": 208,
593 "column": 14 632 "column": 14
594 }, 633 },
595 "end": { 634 "end": {
596 "line": 200, 635 "line": 211,
597 "column": 3 636 "column": 3
598 } 637 }
599 }, 638 },
@@ -602,11 +641,24 @@
602 "defaultMessage": "!!!Unhide", 641 "defaultMessage": "!!!Unhide",
603 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
604 "start": { 643 "start": {
605 "line": 201, 644 "line": 212,
606 "column": 10 645 "column": 10
607 }, 646 },
608 "end": { 647 "end": {
609 "line": 204, 648 "line": 215,
649 "column": 3
650 }
651 },
652 {
653 "id": "menu.app.autohideMenuBar",
654 "defaultMessage": "!!!Auto-hide menu bar",
655 "file": "src/lib/Menu.js",
656 "start": {
657 "line": 216,
658 "column": 19
659 },
660 "end": {
661 "line": 219,
610 "column": 3 662 "column": 3
611 } 663 }
612 }, 664 },
@@ -615,11 +667,11 @@
615 "defaultMessage": "!!!Quit", 667 "defaultMessage": "!!!Quit",
616 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
617 "start": { 669 "start": {
618 "line": 205, 670 "line": 220,
619 "column": 8 671 "column": 8
620 }, 672 },
621 "end": { 673 "end": {
622 "line": 208, 674 "line": 223,
623 "column": 3 675 "column": 3
624 } 676 }
625 }, 677 },
@@ -628,11 +680,11 @@
628 "defaultMessage": "!!!Add New Service...", 680 "defaultMessage": "!!!Add New Service...",
629 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
630 "start": { 682 "start": {
631 "line": 209, 683 "line": 224,
632 "column": 17 684 "column": 17
633 }, 685 },
634 "end": { 686 "end": {
635 "line": 212, 687 "line": 227,
636 "column": 3 688 "column": 3
637 } 689 }
638 }, 690 },
@@ -641,11 +693,11 @@
641 "defaultMessage": "!!!Add New Workspace...", 693 "defaultMessage": "!!!Add New Workspace...",
642 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
643 "start": { 695 "start": {
644 "line": 213, 696 "line": 228,
645 "column": 19 697 "column": 19
646 }, 698 },
647 "end": { 699 "end": {
648 "line": 216, 700 "line": 231,
649 "column": 3 701 "column": 3
650 } 702 }
651 }, 703 },
@@ -654,11 +706,11 @@
654 "defaultMessage": "!!!Open workspace drawer", 706 "defaultMessage": "!!!Open workspace drawer",
655 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
656 "start": { 708 "start": {
657 "line": 217, 709 "line": 232,
658 "column": 23 710 "column": 23
659 }, 711 },
660 "end": { 712 "end": {
661 "line": 220, 713 "line": 235,
662 "column": 3 714 "column": 3
663 } 715 }
664 }, 716 },
@@ -667,11 +719,11 @@
667 "defaultMessage": "!!!Close workspace drawer", 719 "defaultMessage": "!!!Close workspace drawer",
668 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
669 "start": { 721 "start": {
670 "line": 221, 722 "line": 236,
671 "column": 24 723 "column": 24
672 }, 724 },
673 "end": { 725 "end": {
674 "line": 224, 726 "line": 239,
675 "column": 3 727 "column": 3
676 } 728 }
677 }, 729 },
@@ -680,11 +732,11 @@
680 "defaultMessage": "!!!Activate next service...", 732 "defaultMessage": "!!!Activate next service...",
681 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
682 "start": { 734 "start": {
683 "line": 225, 735 "line": 240,
684 "column": 23 736 "column": 23
685 }, 737 },
686 "end": { 738 "end": {
687 "line": 228, 739 "line": 243,
688 "column": 3 740 "column": 3
689 } 741 }
690 }, 742 },
@@ -693,11 +745,11 @@
693 "defaultMessage": "!!!Activate previous service...", 745 "defaultMessage": "!!!Activate previous service...",
694 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
695 "start": { 747 "start": {
696 "line": 229, 748 "line": 244,
697 "column": 27 749 "column": 27
698 }, 750 },
699 "end": { 751 "end": {
700 "line": 232, 752 "line": 247,
701 "column": 3 753 "column": 3
702 } 754 }
703 }, 755 },
@@ -706,11 +758,11 @@
706 "defaultMessage": "!!!Disable notifications & audio", 758 "defaultMessage": "!!!Disable notifications & audio",
707 "file": "src/lib/Menu.js", 759 "file": "src/lib/Menu.js",
708 "start": { 760 "start": {
709 "line": 233, 761 "line": 248,
710 "column": 11 762 "column": 11
711 }, 763 },
712 "end": { 764 "end": {
713 "line": 236, 765 "line": 251,
714 "column": 3 766 "column": 3
715 } 767 }
716 }, 768 },
@@ -719,11 +771,11 @@
719 "defaultMessage": "!!!Enable notifications & audio", 771 "defaultMessage": "!!!Enable notifications & audio",
720 "file": "src/lib/Menu.js", 772 "file": "src/lib/Menu.js",
721 "start": { 773 "start": {
722 "line": 237, 774 "line": 252,
723 "column": 13 775 "column": 13
724 }, 776 },
725 "end": { 777 "end": {
726 "line": 240, 778 "line": 255,
727 "column": 3 779 "column": 3
728 } 780 }
729 }, 781 },
@@ -732,11 +784,11 @@
732 "defaultMessage": "!!!Workspaces", 784 "defaultMessage": "!!!Workspaces",
733 "file": "src/lib/Menu.js", 785 "file": "src/lib/Menu.js",
734 "start": { 786 "start": {
735 "line": 241, 787 "line": 256,
736 "column": 14 788 "column": 14
737 }, 789 },
738 "end": { 790 "end": {
739 "line": 244, 791 "line": 259,
740 "column": 3 792 "column": 3
741 } 793 }
742 }, 794 },
@@ -745,11 +797,11 @@
745 "defaultMessage": "!!!Default", 797 "defaultMessage": "!!!Default",
746 "file": "src/lib/Menu.js", 798 "file": "src/lib/Menu.js",
747 "start": { 799 "start": {
748 "line": 245, 800 "line": 260,
749 "column": 20 801 "column": 20
750 }, 802 },
751 "end": { 803 "end": {
752 "line": 248, 804 "line": 263,
753 "column": 3 805 "column": 3
754 } 806 }
755 }, 807 },
@@ -758,11 +810,11 @@
758 "defaultMessage": "!!!Todos", 810 "defaultMessage": "!!!Todos",
759 "file": "src/lib/Menu.js", 811 "file": "src/lib/Menu.js",
760 "start": { 812 "start": {
761 "line": 249, 813 "line": 264,
762 "column": 9 814 "column": 9
763 }, 815 },
764 "end": { 816 "end": {
765 "line": 252, 817 "line": 267,
766 "column": 3 818 "column": 3
767 } 819 }
768 }, 820 },
@@ -771,11 +823,11 @@
771 "defaultMessage": "!!!Open Todos drawer", 823 "defaultMessage": "!!!Open Todos drawer",
772 "file": "src/lib/Menu.js", 824 "file": "src/lib/Menu.js",
773 "start": { 825 "start": {
774 "line": 253, 826 "line": 268,
775 "column": 19 827 "column": 19
776 }, 828 },
777 "end": { 829 "end": {
778 "line": 256, 830 "line": 271,
779 "column": 3 831 "column": 3
780 } 832 }
781 }, 833 },
@@ -784,11 +836,11 @@
784 "defaultMessage": "!!!Close Todos drawer", 836 "defaultMessage": "!!!Close Todos drawer",
785 "file": "src/lib/Menu.js", 837 "file": "src/lib/Menu.js",
786 "start": { 838 "start": {
787 "line": 257, 839 "line": 272,
788 "column": 20 840 "column": 20
789 }, 841 },
790 "end": { 842 "end": {
791 "line": 260, 843 "line": 275,
792 "column": 3 844 "column": 3
793 } 845 }
794 }, 846 },
@@ -797,11 +849,11 @@
797 "defaultMessage": "!!!Enable Todos", 849 "defaultMessage": "!!!Enable Todos",
798 "file": "src/lib/Menu.js", 850 "file": "src/lib/Menu.js",
799 "start": { 851 "start": {
800 "line": 261, 852 "line": 276,
801 "column": 15 853 "column": 15
802 }, 854 },
803 "end": { 855 "end": {
804 "line": 264, 856 "line": 279,
805 "column": 3 857 "column": 3
806 } 858 }
807 } 859 }
diff --git a/src/index.html b/src/index.html
index 198c1ab7b..7f223b662 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,7 +1,7 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html lang="en"> 2<html lang="en">
3<head> 3<head>
4 <title>Franz</title> 4 <title>Ferdi</title>
5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
6 <link rel="stylesheet" type="text/css" href="./styles/main.css" /> 6 <link rel="stylesheet" type="text/css" href="./styles/main.css" />
7 <script type="text/javascript" src="./app.js"></script> 7 <script type="text/javascript" src="./app.js"></script>
diff --git a/src/index.js b/src/index.js
index d9d51fd5b..73fc6e299 100644
--- a/src/index.js
+++ b/src/index.js
@@ -37,7 +37,7 @@ import { asarPath } from './helpers/asar-helpers';
37import { isValidExternalURL } from './helpers/url-helpers'; 37import { isValidExternalURL } from './helpers/url-helpers';
38/* eslint-enable import/first */ 38/* eslint-enable import/first */
39 39
40const debug = require('debug')('Franz:App'); 40const debug = require('debug')('Ferdi:App');
41 41
42// Keep a global reference of the window object, if you don't, the window will 42// Keep a global reference of the window object, if you don't, the window will
43// be closed automatically when the JavaScript object is garbage collected. 43// be closed automatically when the JavaScript object is garbage collected.
@@ -96,7 +96,7 @@ if (!gotTheLock) {
96 } else if (argv.includes('--quit')) { 96 } else if (argv.includes('--quit')) {
97 // Needs to be delayed to not interfere with mainWindow.restore(); 97 // Needs to be delayed to not interfere with mainWindow.restore();
98 setTimeout(() => { 98 setTimeout(() => {
99 debug('Quitting Franz via Task'); 99 debug('Quitting Ferdi via Task');
100 app.quit(); 100 app.quit();
101 }, 1); 101 }, 1);
102 } 102 }
@@ -148,7 +148,7 @@ const createWindow = () => {
148 minHeight: 500, 148 minHeight: 500,
149 titleBarStyle: isMac ? 'hidden' : '', 149 titleBarStyle: isMac ? 'hidden' : '',
150 frame: isLinux, 150 frame: isLinux,
151 backgroundColor: !settings.get('darkMode') ? '#3498db' : '#1E1E1E', 151 backgroundColor: !settings.get('darkMode') ? '#7367F0' : '#1E1E1E',
152 webPreferences: { 152 webPreferences: {
153 nodeIntegration: true, 153 nodeIntegration: true,
154 webviewTag: true, 154 webviewTag: true,
@@ -158,7 +158,7 @@ const createWindow = () => {
158 mainWindow.webContents.on('did-finish-load', () => { 158 mainWindow.webContents.on('did-finish-load', () => {
159 const fns = onDidLoadFns; 159 const fns = onDidLoadFns;
160 onDidLoadFns = null; 160 onDidLoadFns = null;
161 for (const fn of fns) { 161 for (const fn of fns) { // eslint-disable-line no-unused-vars
162 fn(mainWindow); 162 fn(mainWindow);
163 } 163 }
164 }); 164 });
@@ -281,7 +281,7 @@ const createWindow = () => {
281// https://electronjs.org/docs/api/chrome-command-line-switches 281// https://electronjs.org/docs/api/chrome-command-line-switches
282// used for Kerberos support 282// used for Kerberos support
283// Usage e.g. MACOS 283// Usage e.g. MACOS
284// $ Franz.app/Contents/MacOS/Franz --auth-server-whitelist *.mydomain.com --auth-negotiate-delegate-whitelist *.mydomain.com 284// $ Franz.app/Contents/MacOS/Ferdi --auth-server-whitelist *.mydomain.com --auth-negotiate-delegate-whitelist *.mydomain.com
285const argv = require('minimist')(process.argv.slice(1)); 285const argv = require('minimist')(process.argv.slice(1));
286 286
287if (argv['auth-server-whitelist']) { 287if (argv['auth-server-whitelist']) {
@@ -296,10 +296,10 @@ if (argv['auth-negotiate-delegate-whitelist']) {
296// Some APIs can only be used after this event occurs. 296// Some APIs can only be used after this event occurs.
297app.on('ready', () => { 297app.on('ready', () => {
298 // Register App URL 298 // Register App URL
299 app.setAsDefaultProtocolClient('franz'); 299 app.setAsDefaultProtocolClient('ferdi');
300 300
301 if (isDevMode) { 301 if (isDevMode) {
302 app.setAsDefaultProtocolClient('franz-dev'); 302 app.setAsDefaultProtocolClient('ferdi-dev');
303 } 303 }
304 304
305 if (process.platform === 'win32') { 305 if (process.platform === 'win32') {
@@ -308,13 +308,13 @@ app.on('ready', () => {
308 arguments: `${isDevMode ? `${__dirname} ` : ''}--reset-window`, 308 arguments: `${isDevMode ? `${__dirname} ` : ''}--reset-window`,
309 iconPath: asarPath(path.join(isDevMode ? `${__dirname}../src/` : __dirname, 'assets/images/taskbar/win32/display.ico')), 309 iconPath: asarPath(path.join(isDevMode ? `${__dirname}../src/` : __dirname, 'assets/images/taskbar/win32/display.ico')),
310 iconIndex: 0, 310 iconIndex: 0,
311 title: 'Move Franz to Current Display', 311 title: 'Move Ferdi to Current Display',
312 description: 'Restore the position and size of Franz', 312 description: 'Restore the position and size of Ferdi',
313 }, { 313 }, {
314 program: process.execPath, 314 program: process.execPath,
315 arguments: `${isDevMode ? `${__dirname} ` : ''}--quit`, 315 arguments: `${isDevMode ? `${__dirname} ` : ''}--quit`,
316 iconIndex: 0, 316 iconIndex: 0,
317 title: 'Quit Franz', 317 title: 'Quit Ferdi',
318 }]); 318 }]);
319 } 319 }
320 320
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index b72f0df96..0c3df8db3 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -3,12 +3,11 @@ import { observable, autorun } from 'mobx';
3import { defineMessages } from 'react-intl'; 3import { defineMessages } from 'react-intl';
4 4
5import { isMac, ctrlKey, cmdKey } from '../environment'; 5import { isMac, ctrlKey, cmdKey } from '../environment';
6import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../features/workspaces/index'; 6import { workspaceStore } from '../features/workspaces/index';
7import { workspaceActions } from '../features/workspaces/actions'; 7import { workspaceActions } from '../features/workspaces/actions';
8import { gaEvent } from './analytics';
9import { announcementActions } from '../features/announcements/actions'; 8import { announcementActions } from '../features/announcements/actions';
10import { announcementsStore } from '../features/announcements'; 9import { announcementsStore } from '../features/announcements';
11import { GA_CATEGORY_TODOS, todosStore } from '../features/todos'; 10import { todosStore } from '../features/todos';
12import { todoActions } from '../features/todos/actions'; 11import { todoActions } from '../features/todos/actions';
13 12
14const { app, Menu, dialog } = remote; 13const { app, Menu, dialog } = remote;
@@ -70,6 +69,14 @@ const menuItems = defineMessages({
70 id: 'menu.edit.emojiSymbols', 69 id: 'menu.edit.emojiSymbols',
71 defaultMessage: '!!!Emoji & Symbols', 70 defaultMessage: '!!!Emoji & Symbols',
72 }, 71 },
72 back: {
73 id: 'menu.view.back',
74 defaultMessage: '!!!Back',
75 },
76 forward: {
77 id: 'menu.view.forward',
78 defaultMessage: '!!!Forward',
79 },
73 resetZoom: { 80 resetZoom: {
74 id: 'menu.view.resetZoom', 81 id: 'menu.view.resetZoom',
75 defaultMessage: '!!!Actual Size', 82 defaultMessage: '!!!Actual Size',
@@ -112,7 +119,11 @@ const menuItems = defineMessages({
112 }, 119 },
113 reloadFranz: { 120 reloadFranz: {
114 id: 'menu.view.reloadFranz', 121 id: 'menu.view.reloadFranz',
115 defaultMessage: '!!!Reload Franz', 122 defaultMessage: '!!!Reload Ferdi',
123 },
124 lockFerdi: {
125 id: 'menu.view.lockFerdi',
126 defaultMessage: '!!!Lock Ferdi',
116 }, 127 },
117 minimize: { 128 minimize: {
118 id: 'menu.window.minimize', 129 id: 'menu.window.minimize',
@@ -140,7 +151,7 @@ const menuItems = defineMessages({
140 }, 151 },
141 debugInfoCopiedHeadline: { 152 debugInfoCopiedHeadline: {
142 id: 'menu.help.debugInfoCopiedHeadline', 153 id: 'menu.help.debugInfoCopiedHeadline',
143 defaultMessage: '!!!Franz Debug Information', 154 defaultMessage: '!!!Ferdi Debug Information',
144 }, 155 },
145 debugInfoCopiedBody: { 156 debugInfoCopiedBody: {
146 id: 'menu.help.debugInfoCopiedBody', 157 id: 'menu.help.debugInfoCopiedBody',
@@ -176,7 +187,7 @@ const menuItems = defineMessages({
176 }, 187 },
177 about: { 188 about: {
178 id: 'menu.app.about', 189 id: 'menu.app.about',
179 defaultMessage: '!!!About Franz', 190 defaultMessage: '!!!About Ferdi',
180 }, 191 },
181 announcement: { 192 announcement: {
182 id: 'menu.app.announcement', 193 id: 'menu.app.announcement',
@@ -202,6 +213,10 @@ const menuItems = defineMessages({
202 id: 'menu.app.unhide', 213 id: 'menu.app.unhide',
203 defaultMessage: '!!!Unhide', 214 defaultMessage: '!!!Unhide',
204 }, 215 },
216 autohideMenuBar: {
217 id: 'menu.app.autohideMenuBar',
218 defaultMessage: '!!!Auto-hide menu bar',
219 },
205 quit: { 220 quit: {
206 id: 'menu.app.quit', 221 id: 'menu.app.quit',
207 defaultMessage: '!!!Quit', 222 defaultMessage: '!!!Quit',
@@ -265,7 +280,7 @@ const menuItems = defineMessages({
265}); 280});
266 281
267function getActiveWebview() { 282function getActiveWebview() {
268 return window.franz.stores.services.active.webview; 283 return window.ferdi.stores.services.active.webview;
269} 284}
270 285
271const _templateFactory = intl => [ 286const _templateFactory = intl => [
@@ -321,6 +336,25 @@ const _templateFactory = intl => [
321 type: 'separator', 336 type: 'separator',
322 }, 337 },
323 { 338 {
339 label: intl.formatMessage(menuItems.back),
340 accelerator: 'CmdOrCtrl+Left',
341 click() {
342 const activeService = getActiveWebview();
343 activeService.goBack();
344 },
345 },
346 {
347 label: intl.formatMessage(menuItems.forward),
348 accelerator: 'CmdOrCtrl+Right',
349 click() {
350 const activeService = getActiveWebview();
351 activeService.goForward();
352 },
353 },
354 {
355 type: 'separator',
356 },
357 {
324 label: intl.formatMessage(menuItems.resetZoom), 358 label: intl.formatMessage(menuItems.resetZoom),
325 accelerator: 'Cmd+0', 359 accelerator: 'Cmd+0',
326 click() { 360 click() {
@@ -401,7 +435,7 @@ const _templateFactory = intl => [
401 click: () => { 435 click: () => {
402 announcementActions.show(); 436 announcementActions.show();
403 }, 437 },
404 visible: window.franz.stores.user.isLoggedIn && announcementsStore.areNewsAvailable, 438 visible: window.ferdi.stores.user.isLoggedIn && announcementsStore.areNewsAvailable,
405 }, 439 },
406 { 440 {
407 type: 'separator', 441 type: 'separator',
@@ -427,7 +461,7 @@ const _templateFactory = intl => [
427 461
428const _titleBarTemplateFactory = intl => [ 462const _titleBarTemplateFactory = intl => [
429 { 463 {
430 label: intl.formatMessage(menuItems.edit), 464 label: `&${intl.formatMessage(menuItems.edit)}`,
431 submenu: [ 465 submenu: [
432 { 466 {
433 label: intl.formatMessage(menuItems.undo), 467 label: intl.formatMessage(menuItems.undo),
@@ -490,7 +524,7 @@ const _titleBarTemplateFactory = intl => [
490 ], 524 ],
491 }, 525 },
492 { 526 {
493 label: intl.formatMessage(menuItems.view), 527 label: `&${intl.formatMessage(menuItems.view)}`,
494 submenu: [ 528 submenu: [
495 { 529 {
496 type: 'separator', 530 type: 'separator',
@@ -539,11 +573,11 @@ const _titleBarTemplateFactory = intl => [
539 ], 573 ],
540 }, 574 },
541 { 575 {
542 label: intl.formatMessage(menuItems.services), 576 label: `&${intl.formatMessage(menuItems.services)}`,
543 submenu: [], 577 submenu: [],
544 }, 578 },
545 { 579 {
546 label: intl.formatMessage(menuItems.workspaces), 580 label: `&${intl.formatMessage(menuItems.workspaces)}`,
547 submenu: [], 581 submenu: [],
548 visible: workspaceStore.isFeatureEnabled, 582 visible: workspaceStore.isFeatureEnabled,
549 }, 583 },
@@ -572,7 +606,7 @@ const _titleBarTemplateFactory = intl => [
572 ], 606 ],
573 }, 607 },
574 { 608 {
575 label: '?', 609 label: '&?',
576 submenu: [ 610 submenu: [
577 { 611 {
578 label: intl.formatMessage(menuItems.learnMore), 612 label: intl.formatMessage(menuItems.learnMore),
@@ -628,12 +662,13 @@ export default class FranzMenu {
628 // need to clone object so we don't modify computed (cached) object 662 // need to clone object so we don't modify computed (cached) object
629 const serviceTpl = Object.assign([], this.serviceTpl()); 663 const serviceTpl = Object.assign([], this.serviceTpl());
630 664
631 if (window.franz === undefined) { 665 if (window.ferdi === undefined) {
632 return; 666 return;
633 } 667 }
634 668
635 const { intl } = window.franz; 669 const { intl } = window.ferdi;
636 const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); 670 const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl);
671 const { actions } = this;
637 672
638 tpl[1].submenu.push({ 673 tpl[1].submenu.push({
639 type: 'separator', 674 type: 'separator',
@@ -681,10 +716,24 @@ export default class FranzMenu {
681 click: () => { 716 click: () => {
682 window.location.reload(); 717 window.location.reload();
683 }, 718 },
719 }, {
720 type: 'separator',
721 }, {
722 label: intl.formatMessage(menuItems.lockFerdi),
723 accelerator: 'CmdOrCtrl+Shift+L',
724 enabled: this.stores.settings.app.lockingFeatureEnabled,
725 click() {
726 actions.settings.update({
727 type: 'app',
728 data: {
729 locked: true,
730 },
731 });
732 },
684 }); 733 });
685 734
686 tpl.unshift({ 735 tpl.unshift({
687 label: isMac ? app.getName() : intl.formatMessage(menuItems.file), 736 label: isMac ? app.getName() : `&${intl.formatMessage(menuItems.file)}`,
688 submenu: [ 737 submenu: [
689 { 738 {
690 label: intl.formatMessage(menuItems.about), 739 label: intl.formatMessage(menuItems.about),
@@ -730,6 +779,19 @@ export default class FranzMenu {
730 label: intl.formatMessage(menuItems.unhide), 779 label: intl.formatMessage(menuItems.unhide),
731 role: 'unhide', 780 role: 'unhide',
732 }, 781 },
782 ...(!isMac ? [{
783 label: intl.formatMessage(menuItems.autohideMenuBar),
784 type: 'checkbox',
785 checked: this.stores.settings.app.autohideMenuBar,
786 click: () => {
787 this.actions.settings.update({
788 type: 'app',
789 data: {
790 autohideMenuBar: !this.stores.settings.app.autohideMenuBar,
791 },
792 });
793 },
794 }] : []),
733 { 795 {
734 type: 'separator', 796 type: 'separator',
735 }, 797 },
@@ -748,8 +810,8 @@ export default class FranzMenu {
748 click: () => { 810 click: () => {
749 dialog.showMessageBox({ 811 dialog.showMessageBox({
750 type: 'info', 812 type: 'info',
751 title: 'Franz', 813 title: 'Franz Ferdinand',
752 message: 'Franz', 814 message: 'Ferdi',
753 detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`, 815 detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`,
754 }); 816 });
755 }, 817 },
@@ -829,7 +891,7 @@ export default class FranzMenu {
829 } 891 }
830 892
831 serviceTpl() { 893 serviceTpl() {
832 const { intl } = window.franz; 894 const { intl } = window.ferdi;
833 const { user, services, settings } = this.stores; 895 const { user, services, settings } = this.stores;
834 if (!user.isLoggedIn) return []; 896 if (!user.isLoggedIn) return [];
835 const menu = []; 897 const menu = [];
@@ -875,7 +937,7 @@ export default class FranzMenu {
875 937
876 workspacesMenu() { 938 workspacesMenu() {
877 const { workspaces, activeWorkspace, isWorkspaceDrawerOpen } = workspaceStore; 939 const { workspaces, activeWorkspace, isWorkspaceDrawerOpen } = workspaceStore;
878 const { intl } = window.franz; 940 const { intl } = window.ferdi;
879 const menu = []; 941 const menu = [];
880 942
881 // Add new workspace item: 943 // Add new workspace item:
@@ -897,7 +959,6 @@ export default class FranzMenu {
897 accelerator: `${cmdKey}+D`, 959 accelerator: `${cmdKey}+D`,
898 click: () => { 960 click: () => {
899 workspaceActions.toggleWorkspaceDrawer(); 961 workspaceActions.toggleWorkspaceDrawer();
900 gaEvent(GA_CATEGORY_WORKSPACES, 'toggleDrawer', 'menu');
901 }, 962 },
902 enabled: this.stores.user.isLoggedIn, 963 enabled: this.stores.user.isLoggedIn,
903 }, { 964 }, {
@@ -912,7 +973,6 @@ export default class FranzMenu {
912 checked: !activeWorkspace, 973 checked: !activeWorkspace,
913 click: () => { 974 click: () => {
914 workspaceActions.deactivate(); 975 workspaceActions.deactivate();
915 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'menu');
916 }, 976 },
917 }); 977 });
918 978
@@ -925,7 +985,6 @@ export default class FranzMenu {
925 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false, 985 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false,
926 click: () => { 986 click: () => {
927 workspaceActions.activate({ workspace }); 987 workspaceActions.activate({ workspace });
928 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'menu');
929 }, 988 },
930 })); 989 }));
931 } 990 }
@@ -945,7 +1004,6 @@ export default class FranzMenu {
945 accelerator: `${cmdKey}+T`, 1004 accelerator: `${cmdKey}+T`,
946 click: () => { 1005 click: () => {
947 todoActions.toggleTodosPanel(); 1006 todoActions.toggleTodosPanel();
948 gaEvent(GA_CATEGORY_TODOS, 'toggleDrawer', 'menu');
949 }, 1007 },
950 enabled: this.stores.user.isLoggedIn && isFeatureEnabledByUser, 1008 enabled: this.stores.user.isLoggedIn && isFeatureEnabledByUser,
951 }); 1009 });
@@ -957,7 +1015,6 @@ export default class FranzMenu {
957 label: intl.formatMessage(menuItems.enableTodos), 1015 label: intl.formatMessage(menuItems.enableTodos),
958 click: () => { 1016 click: () => {
959 todoActions.toggleTodosFeatureVisibility(); 1017 todoActions.toggleTodosFeatureVisibility();
960 gaEvent(GA_CATEGORY_TODOS, 'enable', 'menu');
961 }, 1018 },
962 }); 1019 });
963 } 1020 }
@@ -967,7 +1024,7 @@ export default class FranzMenu {
967 1024
968 1025
969 debugMenu() { 1026 debugMenu() {
970 const { intl } = window.franz; 1027 const { intl } = window.ferdi;
971 1028
972 return { 1029 return {
973 label: intl.formatMessage(menuItems.debugInfo), 1030 label: intl.formatMessage(menuItems.debugInfo),
@@ -993,7 +1050,7 @@ export default class FranzMenu {
993 return service.name; 1050 return service.name;
994 } 1051 }
995 1052
996 let name = service.recipe.name; 1053 let { name } = service.recipe;
997 1054
998 if (service.team) { 1055 if (service.team) {
999 name = `${name} (${service.team})`; 1056 name = `${name} (${service.team})`;
diff --git a/src/lib/Tray.js b/src/lib/Tray.js
index 192e24796..90974de3f 100644
--- a/src/lib/Tray.js
+++ b/src/lib/Tray.js
@@ -20,7 +20,7 @@ export default class TrayIcon {
20 this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN)); 20 this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN));
21 const trayMenuTemplate = [ 21 const trayMenuTemplate = [
22 { 22 {
23 label: 'Show Franz', 23 label: 'Show Ferdi',
24 click() { 24 click() {
25 if (app.mainWindow.isMinimized()) { 25 if (app.mainWindow.isMinimized()) {
26 app.mainWindow.restore(); 26 app.mainWindow.restore();
@@ -29,7 +29,7 @@ export default class TrayIcon {
29 app.mainWindow.focus(); 29 app.mainWindow.focus();
30 }, 30 },
31 }, { 31 }, {
32 label: 'Quit Franz', 32 label: 'Quit Ferdi',
33 click() { 33 click() {
34 app.quit(); 34 app.quit();
35 }, 35 },
@@ -84,7 +84,7 @@ export default class TrayIcon {
84 } 84 }
85 85
86 _getAsset(type, asset) { 86 _getAsset(type, asset) {
87 let platform = process.platform; 87 let { platform } = process;
88 88
89 if (platform === 'darwin' && systemPreferences.isDarkMode()) { 89 if (platform === 'darwin' && systemPreferences.isDarkMode()) {
90 platform = `${platform}-dark`; 90 platform = `${platform}-dark`;
diff --git a/src/lib/analytics.js b/src/lib/analytics.js
deleted file mode 100644
index c305fdb00..000000000
--- a/src/lib/analytics.js
+++ /dev/null
@@ -1,55 +0,0 @@
1import { remote } from 'electron';
2import querystring from 'querystring';
3
4import { GA_ID, STATS_API } from '../config';
5import { isDevMode } from '../environment';
6
7const debug = require('debug')('Franz:Analytics');
8
9const { app } = remote;
10
11/* eslint-disable */
12(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
13(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
14m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
15})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
16/* eslint-enable */
17
18const GA_LOCAL_STORAGE_KEY = 'gaUid';
19
20ga('create', GA_ID, {
21 storage: 'none',
22 clientId: localStorage.getItem(GA_LOCAL_STORAGE_KEY),
23});
24
25ga((tracker) => {
26 localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
27});
28ga('set', 'checkProtocolTask', null);
29ga('set', 'version', app.getVersion());
30ga('send', 'App');
31
32export function gaPage(page) {
33 ga('send', 'pageview', page);
34 debug('GA track page', page);
35}
36
37export function gaEvent(category, action, label) {
38 ga('send', 'event', category, action, label);
39 debug('GA track event', category, action, label);
40}
41
42export function statsEvent(key, value) {
43 const params = {
44 key,
45 value: value || key,
46 platform: process.platform,
47 version: remote.app.getVersion(),
48 };
49
50 debug('Send Franz stats event', params);
51
52 if (!isDevMode) {
53 window.fetch(`${STATS_API}/event/?${querystring.stringify(params)}`);
54 }
55}
diff --git a/src/models/Recipe.js b/src/models/Recipe.js
index b0d60e75e..3f7299e34 100644
--- a/src/models/Recipe.js
+++ b/src/models/Recipe.js
@@ -42,7 +42,7 @@ export default class Recipe {
42 } 42 }
43 43
44 if (!data.id) { 44 if (!data.id) {
45 // Franz 4 recipes do not have an Id 45 // Ferdi 4 recipes do not have an Id
46 throw Error(`Recipe '${data.name}' requires Id`); 46 throw Error(`Recipe '${data.name}' requires Id`);
47 } 47 }
48 48
diff --git a/src/models/Service.js b/src/models/Service.js
index 848a84aa2..b48233237 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -2,7 +2,7 @@ import { computed, observable, autorun } from 'mobx';
2import path from 'path'; 2import path from 'path';
3import normalizeUrl from 'normalize-url'; 3import normalizeUrl from 'normalize-url';
4 4
5const debug = require('debug')('Franz:Service'); 5const debug = require('debug')('Ferdi:Service');
6 6
7export const RESTRICTION_TYPES = { 7export const RESTRICTION_TYPES = {
8 SERVICE_LIMIT: 0, 8 SERVICE_LIMIT: 0,
@@ -177,11 +177,15 @@ export default class Service {
177 } 177 }
178 178
179 @computed get userAgent() { 179 @computed get userAgent() {
180 let userAgent = window.navigator.userAgent; 180 let { userAgent } = window.navigator;
181 if (typeof this.recipe.overrideUserAgent === 'function') { 181 if (typeof this.recipe.overrideUserAgent === 'function') {
182 userAgent = this.recipe.overrideUserAgent(); 182 userAgent = this.recipe.overrideUserAgent();
183 } 183 }
184 184
185 // Remove Ferdi as it can cause incompatabilities with services.
186 // This way, Ferdi will look like a normal Chrome instance
187 userAgent = userAgent.replace(/(Ferdi|Electron)([^\s]+\s)/g, '');
188
185 return userAgent; 189 return userAgent;
186 } 190 }
187 191
diff --git a/src/models/User.js b/src/models/User.js
index 0a2b1f62a..5a614efbe 100644
--- a/src/models/User.js
+++ b/src/models/User.js
@@ -20,11 +20,11 @@ export default class User {
20 20
21 @observable isSubscriptionOwner = false; 21 @observable isSubscriptionOwner = false;
22 22
23 @observable hasSubscription = false; 23 @observable hasSubscription = true;
24 24
25 @observable hadSubscription = false; 25 @observable hadSubscription = false;
26 26
27 @observable isPremium = false; 27 @observable isPremium = true;
28 28
29 @observable beta = false; 29 @observable beta = false;
30 30
@@ -50,7 +50,7 @@ export default class User {
50 this.lastname = data.lastname || this.lastname; 50 this.lastname = data.lastname || this.lastname;
51 this.organization = data.organization || this.organization; 51 this.organization = data.organization || this.organization;
52 this.accountType = data.accountType || this.accountType; 52 this.accountType = data.accountType || this.accountType;
53 this.isPremium = data.isPremium || this.isPremium; 53 this.isPremium = true;
54 this.beta = data.beta || this.beta; 54 this.beta = data.beta || this.beta;
55 this.donor = data.donor || this.donor; 55 this.donor = data.donor || this.donor;
56 this.isDonor = data.isDonor || this.isDonor; 56 this.isDonor = data.isDonor || this.isDonor;
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 315235ba4..5bae6e8d4 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -1,6 +1,6 @@
1import { remote, ipcRenderer, shell } from 'electron'; 1import { remote, ipcRenderer, shell } from 'electron';
2import { 2import {
3 action, computed, observable, reaction, 3 action, computed, observable,
4} from 'mobx'; 4} from 'mobx';
5import moment from 'moment'; 5import moment from 'moment';
6import { getDoNotDisturb } from '@meetfranz/electron-notification-state'; 6import { getDoNotDisturb } from '@meetfranz/electron-notification-state';
@@ -17,14 +17,13 @@ import Request from './lib/Request';
17import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; 17import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config';
18import { isMac } from '../environment'; 18import { isMac } from '../environment';
19import locales from '../i18n/translations'; 19import locales from '../i18n/translations';
20import { gaEvent, gaPage, statsEvent } from '../lib/analytics';
21import { onVisibilityChange } from '../helpers/visibility-helper'; 20import { onVisibilityChange } from '../helpers/visibility-helper';
22import { getLocale } from '../helpers/i18n-helpers'; 21import { getLocale } from '../helpers/i18n-helpers';
23 22
24import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; 23import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js';
25import { isValidExternalURL } from '../helpers/url-helpers'; 24import { isValidExternalURL } from '../helpers/url-helpers';
26 25
27const debug = require('debug')('Franz:AppStore'); 26const debug = require('debug')('Ferdi:AppStore');
28 27
29const { app, systemPreferences, screen } = remote; 28const { app, systemPreferences, screen } = remote;
30 29
@@ -32,7 +31,7 @@ const mainWindow = remote.getCurrentWindow();
32 31
33const defaultLocale = DEFAULT_APP_SETTINGS.locale; 32const defaultLocale = DEFAULT_APP_SETTINGS.locale;
34const autoLauncher = new AutoLaunch({ 33const autoLauncher = new AutoLaunch({
35 name: 'Franz', 34 name: 'Ferdi',
36}); 35});
37 36
38export default class AppStore extends Store { 37export default class AppStore extends Store {
@@ -54,6 +53,8 @@ export default class AppStore extends Store {
54 53
55 @observable isOnline = navigator.onLine; 54 @observable isOnline = navigator.onLine;
56 55
56 @observable authRequestFailed = false;
57
57 @observable timeOfflineStart; 58 @observable timeOfflineStart;
58 59
59 @observable updateStatus = null; 60 @observable updateStatus = null;
@@ -113,7 +114,7 @@ export default class AppStore extends Store {
113 114
114 this.isOnline = navigator.onLine; 115 this.isOnline = navigator.onLine;
115 116
116 // Check if Franz should launch on start 117 // Check if Ferdi should launch on start
117 // Needs to be delayed a bit 118 // Needs to be delayed a bit
118 this._autoStart(); 119 this._autoStart();
119 120
@@ -173,13 +174,6 @@ export default class AppStore extends Store {
173 174
174 debug('Window is visible/focused', isVisible); 175 debug('Window is visible/focused', isVisible);
175 }); 176 });
176
177 // analytics autorun
178 reaction(() => this.stores.router.location.pathname, (pathname) => {
179 gaPage(pathname);
180 });
181
182 statsEvent('app-start');
183 } 177 }
184 178
185 @computed get cacheSize() { 179 @computed get cacheSize() {
@@ -267,8 +261,6 @@ export default class AppStore extends Store {
267 } catch (err) { 261 } catch (err) {
268 console.warn(err); 262 console.warn(err);
269 } 263 }
270
271 gaEvent('App', enable ? 'enable autostart' : 'disable autostart');
272 } 264 }
273 265
274 @action _openExternalUrl({ url }) { 266 @action _openExternalUrl({ url }) {
@@ -278,8 +270,6 @@ export default class AppStore extends Store {
278 if (isValidExternalURL(url)) { 270 if (isValidExternalURL(url)) {
279 shell.openExternal(url); 271 shell.openExternal(url);
280 } 272 }
281
282 gaEvent('External URL', 'open', parsedUrl.host);
283 } 273 }
284 274
285 @action _checkForUpdates() { 275 @action _checkForUpdates() {
@@ -373,7 +363,7 @@ export default class AppStore extends Store {
373 } 363 }
374 364
375 _muteAppHandler() { 365 _muteAppHandler() {
376 const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted; 366 const { showMessageBadgesEvenWhenMuted } = this.stores.ui;
377 367
378 if (!showMessageBadgesEvenWhenMuted) { 368 if (!showMessageBadgesEvenWhenMuted) {
379 this.actions.app.setBadge({ unreadDirectMessageCount: 0, unreadIndirectMessageCount: 0 }); 369 this.actions.app.setBadge({ unreadDirectMessageCount: 0, unreadIndirectMessageCount: 0 });
diff --git a/src/stores/GlobalErrorStore.js b/src/stores/GlobalErrorStore.js
index 7a85c2daa..8bdafb68c 100644
--- a/src/stores/GlobalErrorStore.js
+++ b/src/stores/GlobalErrorStore.js
@@ -24,9 +24,12 @@ export default class GlobalErrorStore extends Store {
24 this.response = {}; 24 this.response = {};
25 } 25 }
26 if (this.error.status === 401) { 26 if (this.error.status === 401) {
27 this.actions.user.logout({ serverLogout: true }); 27 window.ferdi.stores.app.authRequestFailed = true;
28 // this.actions.user.logout({ serverLogout: true });
28 } 29 }
29 } 30 }
31 } else {
32 window.ferdi.stores.app.authRequestFailed = false;
30 } 33 }
31 }); 34 });
32} 35}
diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js
index d4de476c8..8579812ad 100644
--- a/src/stores/PaymentStore.js
+++ b/src/stores/PaymentStore.js
@@ -3,7 +3,6 @@ import { action, observable, computed } from 'mobx';
3import Store from './lib/Store'; 3import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest'; 4import CachedRequest from './lib/CachedRequest';
5import Request from './lib/Request'; 5import Request from './lib/Request';
6import { gaEvent } from '../lib/analytics';
7 6
8export default class PaymentStore extends Store { 7export default class PaymentStore extends Store {
9 @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); 8 @observable plansRequest = new CachedRequest(this.api.payment, 'plans');
@@ -26,8 +25,6 @@ export default class PaymentStore extends Store {
26 @action _createHostedPage({ planId }) { 25 @action _createHostedPage({ planId }) {
27 const request = this.createHostedPageRequest.execute(planId); 26 const request = this.createHostedPageRequest.execute(planId);
28 27
29 gaEvent('Payment', 'createHostedPage', planId);
30
31 return request; 28 return request;
32 } 29 }
33} 30}
diff --git a/src/stores/RecipePreviewsStore.js b/src/stores/RecipePreviewsStore.js
index 382820d58..989e1124a 100644
--- a/src/stores/RecipePreviewsStore.js
+++ b/src/stores/RecipePreviewsStore.js
@@ -1,11 +1,8 @@
1import { action, computed, observable } from 'mobx'; 1import { action, computed, observable } from 'mobx';
2import { debounce } from 'lodash';
3import ms from 'ms';
4 2
5import Store from './lib/Store'; 3import Store from './lib/Store';
6import CachedRequest from './lib/CachedRequest'; 4import CachedRequest from './lib/CachedRequest';
7import Request from './lib/Request'; 5import Request from './lib/Request';
8import { gaEvent } from '../lib/analytics';
9 6
10export default class RecipePreviewsStore extends Store { 7export default class RecipePreviewsStore extends Store {
11 @observable allRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'all'); 8 @observable allRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'all');
@@ -41,13 +38,6 @@ export default class RecipePreviewsStore extends Store {
41 @action _search({ needle }) { 38 @action _search({ needle }) {
42 if (needle !== '') { 39 if (needle !== '') {
43 this.searchRecipePreviewsRequest.execute(needle); 40 this.searchRecipePreviewsRequest.execute(needle);
44
45 this._analyticsSearch(needle);
46 } 41 }
47 } 42 }
48
49 // Helper
50 _analyticsSearch = debounce((needle) => {
51 gaEvent('Recipe', 'search', needle);
52 }, ms('3s'));
53} 43}
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js
index d51192078..7f91049df 100644
--- a/src/stores/RecipesStore.js
+++ b/src/stores/RecipesStore.js
@@ -5,7 +5,7 @@ import CachedRequest from './lib/CachedRequest';
5import Request from './lib/Request'; 5import Request from './lib/Request';
6import { matchRoute } from '../helpers/routing-helpers'; 6import { matchRoute } from '../helpers/routing-helpers';
7 7
8const debug = require('debug')('Franz:RecipeStore'); 8const debug = require('debug')('Ferdi:RecipeStore');
9 9
10export default class RecipesStore extends Store { 10export default class RecipesStore extends Store {
11 @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); 11 @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all');
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js
index 9254e3223..2587d4eef 100644
--- a/src/stores/RequestStore.js
+++ b/src/stores/RequestStore.js
@@ -3,7 +3,7 @@ import ms from 'ms';
3 3
4import Store from './lib/Store'; 4import Store from './lib/Store';
5 5
6const debug = require('debug')('Franz:RequestsStore'); 6const debug = require('debug')('Ferdi:RequestsStore');
7 7
8export default class RequestStore extends Store { 8export default class RequestStore extends Store {
9 @observable userInfoRequest; 9 @observable userInfoRequest;
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index d1fd2be3d..f88b14983 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -4,19 +4,19 @@ import {
4 computed, 4 computed,
5 observable, 5 observable,
6} from 'mobx'; 6} from 'mobx';
7import { debounce, remove } from 'lodash'; 7import { remove } from 'lodash';
8import ms from 'ms'; 8import ms from 'ms';
9 9
10import Store from './lib/Store'; 10import Store from './lib/Store';
11import Request from './lib/Request'; 11import Request from './lib/Request';
12import CachedRequest from './lib/CachedRequest'; 12import CachedRequest from './lib/CachedRequest';
13import { matchRoute } from '../helpers/routing-helpers'; 13import { matchRoute } from '../helpers/routing-helpers';
14import { gaEvent, statsEvent } from '../lib/analytics';
15import { workspaceStore } from '../features/workspaces'; 14import { workspaceStore } from '../features/workspaces';
16import { serviceLimitStore } from '../features/serviceLimit'; 15import { serviceLimitStore } from '../features/serviceLimit';
17import { RESTRICTION_TYPES } from '../models/Service'; 16import { RESTRICTION_TYPES } from '../models/Service';
17import { KEEP_WS_LOADED_USID } from '../config';
18 18
19const debug = require('debug')('Franz:ServiceStore'); 19const debug = require('debug')('Ferdi:ServiceStore');
20 20
21export default class ServicesStore extends Store { 21export default class ServicesStore extends Store {
22 @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); 22 @observable allServicesRequest = new CachedRequest(this.api.services, 'all');
@@ -125,7 +125,35 @@ export default class ServicesStore extends Store {
125 const { keepAllWorkspacesLoaded } = this.stores.workspaces.settings; 125 const { keepAllWorkspacesLoaded } = this.stores.workspaces.settings;
126 const services = this.allServicesRequest.execute().result || []; 126 const services = this.allServicesRequest.execute().result || [];
127 const filteredServices = showDisabledServices ? services : services.filter(service => service.isEnabled); 127 const filteredServices = showDisabledServices ? services : services.filter(service => service.isEnabled);
128 return keepAllWorkspacesLoaded ? filteredServices : workspaceStore.filterServicesByActiveWorkspace(filteredServices); 128
129 let displayedServices;
130 if (keepAllWorkspacesLoaded) {
131 // Keep all enabled services loaded
132 displayedServices = filteredServices;
133 } else {
134 // Keep all services in current workspace loaded
135 displayedServices = workspaceStore.filterServicesByActiveWorkspace(filteredServices);
136
137 // Keep all services active in workspaces that should be kept loaded
138 for (const workspace of this.stores.workspaces.workspaces) {
139 // Check if workspace needs to be kept loaded
140 if (workspace.services.includes(KEEP_WS_LOADED_USID)) {
141 // Get services for workspace
142 const serviceIDs = workspace.services.filter(i => i !== KEEP_WS_LOADED_USID);
143 const wsServices = filteredServices.filter(service => serviceIDs.includes(service.id));
144
145 displayedServices = [
146 ...displayedServices,
147 ...wsServices,
148 ];
149 }
150 }
151
152 // Make sure every service is in the list only once
153 displayedServices = displayedServices.filter((v, i, a) => a.indexOf(v) === i);
154 }
155
156 return displayedServices;
129 } 157 }
130 158
131 @computed get filtered() { 159 @computed get filtered() {
@@ -182,7 +210,6 @@ export default class ServicesStore extends Store {
182 210
183 if (redirect) { 211 if (redirect) {
184 this.stores.router.push('/settings/recipes'); 212 this.stores.router.push('/settings/recipes');
185 gaEvent('Service', 'create', recipeId);
186 } 213 }
187 } 214 }
188 215
@@ -259,7 +286,6 @@ export default class ServicesStore extends Store {
259 286
260 if (redirect) { 287 if (redirect) {
261 this.stores.router.push('/settings/services'); 288 this.stores.router.push('/settings/services');
262 gaEvent('Service', 'update', service.recipe.id);
263 } 289 }
264 } 290 }
265 291
@@ -274,19 +300,14 @@ export default class ServicesStore extends Store {
274 remove(result, c => c.id === serviceId); 300 remove(result, c => c.id === serviceId);
275 }); 301 });
276 302
277 const service = this.one(serviceId);
278
279 await request._promise; 303 await request._promise;
280 this.actionStatus = request.result.status; 304 this.actionStatus = request.result.status;
281
282 gaEvent('Service', 'delete', service.recipe.id);
283 } 305 }
284 306
285 @action async _clearCache({ serviceId }) { 307 @action async _clearCache({ serviceId }) {
286 this.clearCacheRequest.reset(); 308 this.clearCacheRequest.reset();
287 const request = this.clearCacheRequest.execute(serviceId); 309 const request = this.clearCacheRequest.execute(serviceId);
288 await request._promise; 310 await request._promise;
289 gaEvent('Service', 'clear cache');
290 } 311 }
291 312
292 @action _setActive({ serviceId, keepActiveRoute }) { 313 @action _setActive({ serviceId, keepActiveRoute }) {
@@ -298,8 +319,6 @@ export default class ServicesStore extends Store {
298 }); 319 });
299 service.isActive = true; 320 service.isActive = true;
300 321
301 statsEvent('activate-service', service.recipe.id);
302
303 this._focusActiveService(); 322 this._focusActiveService();
304 } 323 }
305 324
@@ -402,7 +421,7 @@ export default class ServicesStore extends Store {
402 }, 421 },
403 }); 422 });
404 } else if (channel === 'notification') { 423 } else if (channel === 'notification') {
405 const options = args[0].options; 424 const { options } = args[0];
406 if (service.recipe.hasNotificationSound || service.isMuted || this.stores.settings.all.app.isAppMuted) { 425 if (service.recipe.hasNotificationSound || service.isMuted || this.stores.settings.all.app.isAppMuted) {
407 Object.assign(options, { 426 Object.assign(options, {
408 silent: true, 427 silent: true,
@@ -410,8 +429,17 @@ export default class ServicesStore extends Store {
410 } 429 }
411 430
412 if (service.isNotificationEnabled) { 431 if (service.isNotificationEnabled) {
413 const title = typeof args[0].title === 'string' ? args[0].title : service.name; 432 let title = `Notification from ${service.name}`;
414 options.body = typeof options.body === 'string' ? options.body : ''; 433 if (!this.stores.settings.all.app.privateNotifications) {
434 options.body = typeof options.body === 'string' ? options.body : '';
435 title = typeof args[0].title === 'string' ? args[0].title : service.name;
436 } else {
437 // Remove message data from notification in private mode
438 options.body = '';
439 options.icon = '/assets/img/notification-badge.gif';
440 }
441
442 console.log(title, options);
415 443
416 this.actions.app.notify({ 444 this.actions.app.notify({
417 notificationId: args[0].notificationId, 445 notificationId: args[0].notificationId,
@@ -529,7 +557,7 @@ export default class ServicesStore extends Store {
529 } 557 }
530 558
531 @action _reorderService({ oldIndex, newIndex }) { 559 @action _reorderService({ oldIndex, newIndex }) {
532 const showDisabledServices = this.stores.settings.all.app.showDisabledServices; 560 const { showDisabledServices } = this.stores.settings.all.app;
533 const oldEnabledSortIndex = showDisabledServices ? oldIndex : this.all.indexOf(this.enabled[oldIndex]); 561 const oldEnabledSortIndex = showDisabledServices ? oldIndex : this.all.indexOf(this.enabled[oldIndex]);
534 const newEnabledSortIndex = showDisabledServices ? newIndex : this.all.indexOf(this.enabled[newIndex]); 562 const newEnabledSortIndex = showDisabledServices ? newIndex : this.all.indexOf(this.enabled[newIndex]);
535 563
@@ -548,8 +576,6 @@ export default class ServicesStore extends Store {
548 service.order = services[s.id]; 576 service.order = services[s.id];
549 }); 577 });
550 }); 578 });
551
552 this._reorderAnalytics();
553 } 579 }
554 580
555 @action _toggleNotifications({ serviceId }) { 581 @action _toggleNotifications({ serviceId }) {
@@ -625,8 +651,8 @@ export default class ServicesStore extends Store {
625 } 651 }
626 652
627 _getUnreadMessageCountReaction() { 653 _getUnreadMessageCountReaction() {
628 const showMessageBadgeWhenMuted = this.stores.settings.all.app.showMessageBadgeWhenMuted; 654 const { showMessageBadgeWhenMuted } = this.stores.settings.all.app;
629 const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted; 655 const { showMessageBadgesEvenWhenMuted } = this.stores.ui;
630 656
631 const unreadDirectMessageCount = this.allDisplayed 657 const unreadDirectMessageCount = this.allDisplayed
632 .filter(s => (showMessageBadgeWhenMuted || s.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && s.isBadgeEnabled) 658 .filter(s => (showMessageBadgeWhenMuted || s.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && s.isBadgeEnabled)
@@ -751,10 +777,6 @@ export default class ServicesStore extends Store {
751 } 777 }
752 } 778 }
753 779
754 _reorderAnalytics = debounce(() => {
755 gaEvent('Service', 'order');
756 }, ms('5s'));
757
758 _wrapIndex(index, delta, size) { 780 _wrapIndex(index, delta, size) {
759 return (((index + delta) % size) + size) % size; 781 return (((index + delta) % size) + size) % size;
760 } 782 }
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index 75bb38fe0..c09f24af7 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -1,17 +1,18 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer, remote } from 'electron';
2import { 2import {
3 action, computed, observable, 3 action, computed, observable, reaction,
4} from 'mobx'; 4} from 'mobx';
5import localStorage from 'mobx-localstorage'; 5import localStorage from 'mobx-localstorage';
6 6
7import Store from './lib/Store'; 7import Store from './lib/Store';
8import Request from './lib/Request'; 8import Request from './lib/Request';
9import { getLocale } from '../helpers/i18n-helpers'; 9import { getLocale } from '../helpers/i18n-helpers';
10import { API } from '../environment';
10 11
11import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config'; 12import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config';
12import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 13import { SPELLCHECKER_LOCALES } from '../i18n/languages';
13 14
14const debug = require('debug')('Franz:SettingsStore'); 15const debug = require('debug')('Ferdi:SettingsStore');
15 16
16export default class SettingsStore extends Store { 17export default class SettingsStore extends Store {
17 @observable updateAppSettingsRequest = new Request(this.api.local, 'updateAppSettings'); 18 @observable updateAppSettingsRequest = new Request(this.api.local, 'updateAppSettings');
@@ -43,6 +44,41 @@ export default class SettingsStore extends Store {
43 44
44 async setup() { 45 async setup() {
45 await this._migrate(); 46 await this._migrate();
47
48 reaction(
49 () => this.all.app.autohideMenuBar,
50 () => remote.getCurrentWindow().setAutoHideMenuBar(
51 this.all.app.autohideMenuBar,
52 ),
53 );
54
55 reaction(
56 () => this.all.app.locked,
57 () => {
58 const { router } = window.ferdi.stores;
59
60 if (this.all.app.locked && this.all.app.lockingFeatureEnabled) {
61 // App just got locked, redirect to unlock screen
62 router.push('/auth/locked');
63 } else if (router.location.pathname.includes('/auth/locked')) {
64 // App is unlocked but user is still on locked screen
65 // Redirect to homepage
66 router.push('/');
67 }
68 },
69 );
70
71 // Make sure to lock app on launch if locking feature is enabled
72 setTimeout(() => {
73 if (this.all.app.lockingFeatureEnabled) {
74 this.actions.settings.update({
75 type: 'app',
76 data: {
77 locked: true,
78 },
79 });
80 }
81 }, 1000);
46 } 82 }
47 83
48 @computed get app() { 84 @computed get app() {
@@ -121,6 +157,7 @@ export default class SettingsStore extends Store {
121 runInBackground: legacySettings.runInBackground, 157 runInBackground: legacySettings.runInBackground,
122 enableSystemTray: legacySettings.enableSystemTray, 158 enableSystemTray: legacySettings.enableSystemTray,
123 minimizeToSystemTray: legacySettings.minimizeToSystemTray, 159 minimizeToSystemTray: legacySettings.minimizeToSystemTray,
160 server: API,
124 isAppMuted: legacySettings.isAppMuted, 161 isAppMuted: legacySettings.isAppMuted,
125 enableGPUAcceleration: legacySettings.enableGPUAcceleration, 162 enableGPUAcceleration: legacySettings.enableGPUAcceleration,
126 showMessageBadgeWhenMuted: legacySettings.showMessageBadgeWhenMuted, 163 showMessageBadgeWhenMuted: legacySettings.showMessageBadgeWhenMuted,
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index b652098f9..61b7d4adf 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -8,12 +8,11 @@ import { isDevMode } from '../environment';
8import Store from './lib/Store'; 8import Store from './lib/Store';
9import Request from './lib/Request'; 9import Request from './lib/Request';
10import CachedRequest from './lib/CachedRequest'; 10import CachedRequest from './lib/CachedRequest';
11import { gaEvent } from '../lib/analytics';
12import { sleep } from '../helpers/async-helpers'; 11import { sleep } from '../helpers/async-helpers';
13import { getPlan } from '../helpers/plan-helpers'; 12import { getPlan } from '../helpers/plan-helpers';
14import { PLANS } from '../config'; 13import { PLANS } from '../config';
15 14
16const debug = require('debug')('Franz:UserStore'); 15const debug = require('debug')('Ferdi:UserStore');
17 16
18// TODO: split stores into UserStore and AuthStore 17// TODO: split stores into UserStore and AuthStore
19export default class UserStore extends Store { 18export default class UserStore extends Store {
@@ -94,7 +93,7 @@ export default class UserStore extends Store {
94 93
95 // Reactions 94 // Reactions
96 this.registerReactions([ 95 this.registerReactions([
97 this._requireAuthenticatedUser, 96 // this._requireAuthenticatedUser,
98 this._getUserData.bind(this), 97 this._getUserData.bind(this),
99 this._resetTrialActivationState.bind(this), 98 this._resetTrialActivationState.bind(this),
100 ]); 99 ]);
@@ -157,7 +156,7 @@ export default class UserStore extends Store {
157 } 156 }
158 157
159 @computed get isPremium() { 158 @computed get isPremium() {
160 return !!this.data.isPremium; 159 return true;
161 } 160 }
162 161
163 @computed get isPremiumOverride() { 162 @computed get isPremiumOverride() {
@@ -172,12 +171,13 @@ export default class UserStore extends Store {
172 } 171 }
173 172
174 @computed get isPro() { 173 @computed get isPro() {
175 if (this.isPremiumOverride) return true; 174 return true;
175 // if (this.isPremiumOverride) return true;
176 176
177 if (!this.team || (!this.team.plan || this.team.state === 'expired')) return false; 177 // if (!this.team || (!this.team.plan || this.team.state === 'expired')) return false;
178 const plan = getPlan(this.team.plan); 178 // const plan = getPlan(this.team.plan);
179 179
180 return plan === PLANS.PRO || plan === PLANS.LEGACY; 180 // return plan === PLANS.PRO || plan === PLANS.LEGACY;
181 } 181 }
182 182
183 @computed get legacyServices() { 183 @computed get legacyServices() {
@@ -190,16 +190,12 @@ export default class UserStore extends Store {
190 this._setUserData(authToken); 190 this._setUserData(authToken);
191 191
192 this.stores.router.push('/'); 192 this.stores.router.push('/');
193
194 gaEvent('User', 'login');
195 } 193 }
196 194
197 @action _tokenLogin(authToken) { 195 @action _tokenLogin(authToken) {
198 this._setUserData(authToken); 196 this._setUserData(authToken);
199 197
200 this.stores.router.push('/'); 198 this.stores.router.push('/');
201
202 gaEvent('User', 'tokenLogin');
203 } 199 }
204 200
205 @action async _signup({ 201 @action async _signup({
@@ -215,13 +211,11 @@ export default class UserStore extends Store {
215 locale: this.stores.app.locale, 211 locale: this.stores.app.locale,
216 }); 212 });
217 213
218 this.hasCompletedSignup = false; 214 this.hasCompletedSignup = true;
219 215
220 this._setUserData(authToken); 216 this._setUserData(authToken);
221 217
222 this.stores.router.push(this.PRICING_ROUTE); 218 this.stores.router.push('/');
223
224 gaEvent('User', 'signup');
225 } 219 }
226 220
227 @action async _retrievePassword({ email }) { 221 @action async _retrievePassword({ email }) {
@@ -229,8 +223,6 @@ export default class UserStore extends Store {
229 223
230 await request._promise; 224 await request._promise;
231 this.actionStatus = request.result.status || []; 225 this.actionStatus = request.result.status || [];
232
233 gaEvent('User', 'retrievePassword');
234 } 226 }
235 227
236 @action async _activateTrial({ planId }) { 228 @action async _activateTrial({ planId }) {
@@ -246,9 +238,6 @@ export default class UserStore extends Store {
246 238
247 this.stores.features.featuresRequest.invalidate({ immediately: true }); 239 this.stores.features.featuresRequest.invalidate({ immediately: true });
248 this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); 240 this.stores.user.getUserInfoRequest.invalidate({ immediately: true });
249
250
251 gaEvent('User', 'activateTrial');
252 } 241 }
253 242
254 @action async _invite({ invites }) { 243 @action async _invite({ invites }) {
@@ -262,8 +251,6 @@ export default class UserStore extends Store {
262 if (this.stores.router.location.pathname.includes(this.INVITE_ROUTE)) { 251 if (this.stores.router.location.pathname.includes(this.INVITE_ROUTE)) {
263 this.stores.router.push('/'); 252 this.stores.router.push('/');
264 } 253 }
265
266 gaEvent('User', 'inviteUsers');
267 } 254 }
268 255
269 @action async _update({ userData }) { 256 @action async _update({ userData }) {
@@ -273,8 +260,6 @@ export default class UserStore extends Store {
273 260
274 this.getUserInfoRequest.patch(() => response.data); 261 this.getUserInfoRequest.patch(() => response.data);
275 this.actionStatus = response.status || []; 262 this.actionStatus = response.status || [];
276
277 gaEvent('User', 'update');
278 } 263 }
279 264
280 @action _resetStatus() { 265 @action _resetStatus() {
@@ -297,12 +282,12 @@ export default class UserStore extends Store {
297 const recipes = services.filter((obj, pos, arr) => arr.map(mapObj => mapObj.recipe.id).indexOf(obj.recipe.id) === pos).map(s => s.recipe.id); 282 const recipes = services.filter((obj, pos, arr) => arr.map(mapObj => mapObj.recipe.id).indexOf(obj.recipe.id) === pos).map(s => s.recipe.id);
298 283
299 // Install recipes 284 // Install recipes
300 for (const recipe of recipes) { 285 for (const recipe of recipes) { // eslint-disable-line no-unused-vars
301 // eslint-disable-next-line 286 // eslint-disable-next-line
302 await this.stores.recipes._install({ recipeId: recipe }); 287 await this.stores.recipes._install({ recipeId: recipe });
303 } 288 }
304 289
305 for (const service of services) { 290 for (const service of services) { // eslint-disable-line no-unused-vars
306 this.actions.service.createFromLegacyService({ 291 this.actions.service.createFromLegacyService({
307 data: service, 292 data: service,
308 }); 293 });
diff --git a/src/styles/auth.scss b/src/styles/auth.scss
index 154a71a36..44c752677 100644
--- a/src/styles/auth.scss
+++ b/src/styles/auth.scss
@@ -27,7 +27,7 @@
27} 27}
28 28
29.auth { 29.auth {
30 background: $theme-brand-primary; 30 background: $theme-brand-gradient;
31 display: flex; 31 display: flex;
32 justify-content: center; 32 justify-content: center;
33 33
diff --git a/src/styles/colors.scss b/src/styles/colors.scss
index 80c2fb633..d89d42b9e 100644
--- a/src/styles/colors.scss
+++ b/src/styles/colors.scss
@@ -1,6 +1,7 @@
1@import "./type-helper"; 1@import "./type-helper";
2 2
3$theme-brand-primary: convert-rgb-string-to-color($raw-theme-brand-primary); 3$theme-brand-primary: convert-rgb-string-to-color($raw-theme-brand-primary);
4$theme-brand-gradient: linear-gradient( 135deg, #CE9FFC 10%, #7367F0 100%);
4$theme-brand-success: convert-rgb-string-to-color($raw-theme-brand-success); 5$theme-brand-success: convert-rgb-string-to-color($raw-theme-brand-success);
5$theme-brand-info: convert-rgb-string-to-color($raw-theme-brand-info); 6$theme-brand-info: convert-rgb-string-to-color($raw-theme-brand-info);
6$theme-brand-warning: convert-rgb-string-to-color($raw-theme-brand-warning); 7$theme-brand-warning: convert-rgb-string-to-color($raw-theme-brand-warning);
diff --git a/src/theme/default/legacy.js b/src/theme/default/legacy.js
index b676dc1d9..46847c60b 100644
--- a/src/theme/default/legacy.js
+++ b/src/theme/default/legacy.js
@@ -1,5 +1,5 @@
1/* legacy config, injected into sass */ 1/* legacy config, injected into sass */
2export const themeBrandPrimary = '#3498db'; 2export const themeBrandPrimary = '#7367F0';
3export const themeBrandSuccess = '#5cb85c'; 3export const themeBrandSuccess = '#5cb85c';
4export const themeBrandInfo = '#5bc0de'; 4export const themeBrandInfo = '#5bc0de';
5export const themeBrandWarning = '#FF9F00'; 5export const themeBrandWarning = '#FF9F00';
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js
index 83914f581..ec5833848 100644
--- a/src/webview/contextMenu.js
+++ b/src/webview/contextMenu.js
@@ -8,7 +8,7 @@ import {
8import { isDevMode, isMac } from '../environment'; 8import { isDevMode, isMac } from '../environment';
9import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 9import { SPELLCHECKER_LOCALES } from '../i18n/languages';
10 10
11const debug = require('debug')('Franz:contextMenu'); 11const debug = require('debug')('Ferdi:contextMenu');
12 12
13const { Menu } = remote; 13const { Menu } = remote;
14 14
diff --git a/src/webview/darkmode.js b/src/webview/darkmode.js
index 73c7007c6..ab629435c 100644
--- a/src/webview/darkmode.js
+++ b/src/webview/darkmode.js
@@ -3,7 +3,7 @@
3import path from 'path'; 3import path from 'path';
4import fs from 'fs-extra'; 4import fs from 'fs-extra';
5 5
6const debug = require('debug')('Franz:DarkMode'); 6const debug = require('debug')('Ferdi:DarkMode');
7 7
8const chars = [...'abcdefghijklmnopqrstuvwxyz']; 8const chars = [...'abcdefghijklmnopqrstuvwxyz'];
9 9
diff --git a/src/webview/notifications.js b/src/webview/notifications.js
index f8fe53e1b..021f05cc3 100644
--- a/src/webview/notifications.js
+++ b/src/webview/notifications.js
@@ -1,7 +1,7 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import uuidV1 from 'uuid/v1'; 2import uuidV1 from 'uuid/v1';
3 3
4const debug = require('debug')('Franz:Notifications'); 4const debug = require('debug')('Ferdi:Notifications');
5 5
6class Notification { 6class Notification {
7 static permission = 'granted'; 7 static permission = 'granted';
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index c223b73de..e00566283 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -13,7 +13,7 @@ import './notifications';
13 13
14import { DEFAULT_APP_SETTINGS } from '../config'; 14import { DEFAULT_APP_SETTINGS } from '../config';
15 15
16const debug = require('debug')('Franz:Plugin'); 16const debug = require('debug')('Ferdi:Plugin');
17 17
18class RecipeController { 18class RecipeController {
19 @observable settings = { 19 @observable settings = {
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index 9158b3b94..1b2d60faf 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -5,7 +5,7 @@ import path from 'path';
5import { DICTIONARY_PATH } from '../config'; 5import { DICTIONARY_PATH } from '../config';
6import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 6import { SPELLCHECKER_LOCALES } from '../i18n/languages';
7 7
8const debug = require('debug')('Franz:spellchecker'); 8const debug = require('debug')('Ferdi:spellchecker');
9 9
10let provider; 10let provider;
11let currentDict; 11let currentDict;
diff --git a/uidev/src/stories/infobox.stories.tsx b/uidev/src/stories/infobox.stories.tsx
index c3442da0d..b0416b844 100644
--- a/uidev/src/stories/infobox.stories.tsx
+++ b/uidev/src/stories/infobox.stories.tsx
@@ -69,7 +69,7 @@ storiesOf('Infobox')
69 ctaLabel: 'Ok, hi!', 69 ctaLabel: 'Ok, hi!',
70 })} 70 })}
71 > 71 >
72 Franz is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Franz currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts,GroupMe, Skype and many more. 72 Ferdi is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Ferdi currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts,GroupMe, Skype and many more.
73 </WithStoreInfobox> 73 </WithStoreInfobox>
74 )) 74 ))
75 .add('Secondary', () => ( 75 .add('Secondary', () => (