aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml4
-rw-r--r--CHANGELOG.md36
-rw-r--r--README.md6
-rw-r--r--appveyor.yml2
-rw-r--r--build-helpers/images/icon.pngbin547480 -> 126364 bytes
-rw-r--r--build-helpers/images/icons/1024x1024.pngbin547480 -> 126364 bytes
-rw-r--r--build-helpers/images/icons/128x128.pngbin0 -> 5538 bytes
-rw-r--r--build-helpers/images/icons/16x16.pngbin0 -> 682 bytes
-rw-r--r--build-helpers/images/icons/24x24.pngbin0 -> 1143 bytes
-rw-r--r--build-helpers/images/icons/256x256.pngbin0 -> 13267 bytes
-rw-r--r--build-helpers/images/icons/32x32.pngbin0 -> 1526 bytes
-rw-r--r--build-helpers/images/icons/48x48.pngbin0 -> 2262 bytes
-rw-r--r--build-helpers/images/icons/512x512.pngbin0 -> 38356 bytes
-rw-r--r--build-helpers/images/icons/64x64.pngbin0 -> 2885 bytes
-rw-r--r--build-helpers/images/icons/96x96.pngbin0 -> 4422 bytes
-rw-r--r--electron-builder.yml7
-rw-r--r--gulpfile.babel.js4
-rw-r--r--package.json13
-rw-r--r--src/actions/app.js2
-rw-r--r--src/actions/service.js3
-rw-r--r--src/actions/user.js1
-rw-r--r--src/api/LocalApi.js8
-rw-r--r--src/api/ServicesApi.js7
-rw-r--r--src/api/UserApi.js4
-rw-r--r--src/api/server/LocalApi.js36
-rw-r--r--src/api/server/ServerApi.js76
-rw-r--r--src/app.js2
-rw-r--r--src/components/auth/Import.js2
-rw-r--r--src/components/auth/Welcome.js12
-rw-r--r--src/components/layout/Sidebar.js8
-rw-r--r--src/components/services/content/ServiceWebview.js2
-rw-r--r--src/components/services/tabs/TabBarSortableList.js6
-rw-r--r--src/components/services/tabs/TabItem.js37
-rw-r--r--src/components/services/tabs/Tabbar.js6
-rw-r--r--src/components/settings/account/AccountDashboard.js49
-rw-r--r--src/components/settings/recipes/RecipesDashboard.js20
-rw-r--r--src/components/settings/services/EditServiceForm.js100
-rw-r--r--src/components/settings/services/ServicesDashboard.js42
-rw-r--r--src/components/settings/settings/EditSettingsForm.js44
-rw-r--r--src/components/ui/Button.js2
-rw-r--r--src/components/ui/ImageUpload.js108
-rw-r--r--src/components/ui/SearchInput.js48
-rw-r--r--src/components/ui/SubscriptionPopup.js1
-rw-r--r--src/config.js4
-rw-r--r--src/containers/layout/AppLayoutContainer.js8
-rw-r--r--src/containers/settings/AccountScreen.js5
-rw-r--r--src/containers/settings/EditServiceScreen.js36
-rw-r--r--src/containers/settings/EditSettingsScreen.js29
-rw-r--r--src/containers/settings/ServicesScreen.js1
-rw-r--r--src/electron/deepLinking.js7
-rw-r--r--src/electron/ipc-api/autoUpdate.js3
-rw-r--r--src/helpers/async-helpers.js5
-rw-r--r--src/helpers/service-helpers.js20
-rw-r--r--src/helpers/webview-ime-focus-helpers.js38
-rw-r--r--src/i18n/languages.js42
-rw-r--r--src/i18n/locales/ca.json27
-rw-r--r--src/i18n/locales/cs.json97
-rw-r--r--src/i18n/locales/de.json95
-rw-r--r--src/i18n/locales/el.json395
-rw-r--r--src/i18n/locales/en-US.json25
-rw-r--r--src/i18n/locales/es.json391
-rw-r--r--src/i18n/locales/fr.json143
-rw-r--r--src/i18n/locales/ga.json139
-rw-r--r--src/i18n/locales/hr.json209
-rw-r--r--src/i18n/locales/hu.json71
-rw-r--r--src/i18n/locales/id.json33
-rw-r--r--src/i18n/locales/it.json67
-rw-r--r--src/i18n/locales/ja.json71
-rw-r--r--src/i18n/locales/ka.json23
-rw-r--r--src/i18n/locales/nl-BE.json23
-rw-r--r--src/i18n/locales/nl.json57
-rw-r--r--src/i18n/locales/pl.json65
-rw-r--r--src/i18n/locales/pt-BR.json81
-rw-r--r--src/i18n/locales/pt.json71
-rw-r--r--src/i18n/locales/ru.json127
-rw-r--r--src/i18n/locales/sk.json71
-rw-r--r--src/i18n/locales/sr.json209
-rw-r--r--src/i18n/locales/tr.json209
-rw-r--r--src/i18n/locales/uk.json75
-rw-r--r--src/i18n/locales/zh-TW.json209
-rw-r--r--src/index.html18
-rw-r--r--src/index.js25
-rw-r--r--src/lib/Menu.js4
-rw-r--r--src/models/Recipe.js9
-rw-r--r--src/models/Service.js18
-rw-r--r--src/models/Settings.js7
-rw-r--r--src/stores/AppStore.js108
-rw-r--r--src/stores/ServicesStore.js63
-rw-r--r--src/stores/SettingsStore.js3
-rw-r--r--src/stores/UIStore.js8
-rw-r--r--src/stores/UserStore.js6
-rw-r--r--src/styles/button.scss12
-rw-r--r--src/styles/content-tabs.scss12
-rw-r--r--src/styles/image-upload.scss91
-rw-r--r--src/styles/input.scss4
-rw-r--r--src/styles/main.scss1
-rw-r--r--src/styles/searchInput.scss16
-rw-r--r--src/styles/services.scss1
-rw-r--r--src/styles/settings.scss74
-rw-r--r--src/styles/tabs.scss20
-rw-r--r--src/styles/welcome.scss18
-rw-r--r--src/webview/ime.js10
-rw-r--r--src/webview/lib/RecipeWebview.js4
-rw-r--r--src/webview/notifications.js4
-rw-r--r--src/webview/plugin.js45
-rw-r--r--src/webview/spellchecker.js65
-rw-r--r--yarn.lock175
107 files changed, 3491 insertions, 1209 deletions
diff --git a/.travis.yml b/.travis.yml
index b3ebc4f25..78c1e3693 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,8 +9,6 @@ matrix:
9language: node_js 9language: node_js
10 10
11before_script: 11before_script:
12- yarn add global gulp-cli@1.2.2
13- yarn add global gulpjs/gulp#4.0
14- yarn add global node-sass 12- yarn add global node-sass
15- yarn install 13- yarn install
16 14
@@ -19,7 +17,7 @@ script:
19- travis_wait yarn build 17- travis_wait yarn build
20 18
21node_js: 19node_js:
22- '7' 20- '8'
23 21
24before_install: 22before_install:
25- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev; fi 23- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev; fi
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ef7e1c586..2dd42eec2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,39 @@
1<a name="5.0.0-beta.15"></a>
2# [5.0.0-beta.15](https://github.com/meetfranz/franz/compare/v5.0.0-beta.14...v5.0.0-beta.15) (2018-01-10)
3
4
5### Features
6
7* **App:** Add option to clear app cache ([@dannyqiu](https://github.com/dannyqiu)) ([be801ff](https://github.com/meetfranz/franz/commit/be801ff))
8* **App:** Add option to show/hide notification badges for muted ([893a9f6](https://github.com/meetfranz/franz/commit/893a9f6))
9* **Recipes:** Add semver version validation ([5826dc3](https://github.com/meetfranz/franz/commit/5826dc3))
10* **Recipes:** Add `hasHostedOption` to enable hosted & self hosted services ([03610f2](https://github.com/meetfranz/franz/commit/03610f2))
11* **Services:** Add custom service icon upload ([6b97e42](https://github.com/meetfranz/franz/commit/6b97e42))
12* **Services:** Add option to completely disable message badges ([cea7a5c](https://github.com/meetfranz/franz/commit/cea7a5c))
13* **Services:** Improve handling of external links ([e2d6edf](https://github.com/meetfranz/franz/commit/e2d6edf))
14* **Services:** Improve user experience of service search ([7e784c6](https://github.com/meetfranz/franz/commit/7e784c6))
15* **Account:** Enable a user to delete their own account ([1f3df73](https://github.com/meetfranz/franz/commit/1f3df73))
16* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)**
17
18
19
20### Bug Fixes
21
22* **App:** Allow to turn on notifications when system dnd is enabled ([3045b47](https://github.com/meetfranz/franz/commit/3045b47))
23* **App:** App mute now disables notifications as well ([0fa1caf](https://github.com/meetfranz/franz/commit/0fa1caf))
24* **App:** Fix service reload after waking machine up ([531531e](https://github.com/meetfranz/franz/commit/531531e))
25* **App:** Fix "add services manually" message ([ac417dc](https://github.com/meetfranz/franz/commit/ac417dc))
26* **i18n:** Fallback to system language or english ([9733eaf](https://github.com/meetfranz/franz/commit/9733eaf))
27* **Notification:** Remove notification sound when app is muted ([53fde0c](https://github.com/meetfranz/franz/commit/53fde0c))
28* **Recipes:** Enable `urlInputPrefix` for team and customURL ([873957d](https://github.com/meetfranz/franz/commit/873957d))
29* **Services:** Ctrl/Cmd+R now navigates back to the service root ([7293492](https://github.com/meetfranz/franz/commit/7293492))
30* **Services:** Fix transparent service background ([ed0098f](https://github.com/meetfranz/franz/commit/ed0098f)), closes [#361](https://github.com/meetfranz/franz/issues/361)
31* **Shortcuts:** Fixed settings shortcut inconsistency ([ca74846](https://github.com/meetfranz/franz/commit/ca74846))
32* **Spell checker:** Fixed issues with spell checker ([965fdf2](https://github.com/meetfranz/franz/commit/965fdf2))
33* **Translations:** Re-add Spanish to available languages. ([ad936f2](https://github.com/meetfranz/franz/commit/ad936f2))
34* **Windows:** Open window when clicking on toast notification ([b82bbc8](https://github.com/meetfranz/franz/commit/b82bbc8)), closes [#370](https://github.com/meetfranz/franz/issues/370)
35
36
1<a name="5.0.0-beta.14"></a> 37<a name="5.0.0-beta.14"></a>
2# [5.0.0-beta.14](https://github.com/meetfranz/franz/compare/v5.0.0-beta.13...v5.0.0-beta.14) (2017-11-23) 38# [5.0.0-beta.14](https://github.com/meetfranz/franz/compare/v5.0.0-beta.13...v5.0.0-beta.14) (2017-11-23)
3 39
diff --git a/README.md b/README.md
index 6110573a8..099100284 100644
--- a/README.md
+++ b/README.md
@@ -31,12 +31,6 @@ $ brew install yarn
31##### Linux 31##### Linux
32[Install Yarn on Linux](https://yarnpkg.com/lang/en/docs/install/) 32[Install Yarn on Linux](https://yarnpkg.com/lang/en/docs/install/)
33 33
34#### Install Gulp 4
35```bash
36$ yarn add global gulp-cli@1.2.2
37$ yarn add global gulpjs/gulp#4.0
38```
39
40#### Fix native modules to match current electron node version 34#### Fix native modules to match current electron node version
41```bash 35```bash
42$ yarn run rebuild 36$ yarn run rebuild
diff --git a/appveyor.yml b/appveyor.yml
index a8e55d25f..d9296b1f6 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -11,8 +11,6 @@ version: 5.0.0.{build}
11install: 11install:
12 - ps: Install-Product node 8 12 - ps: Install-Product node 8
13 - yarn cache clean 13 - yarn cache clean
14 - yarn add global gulp-cli@1.2.2
15 - yarn add global gulpjs/gulp#4.0
16 - yarn install 14 - yarn install
17 15
18# cache: 16# cache:
diff --git a/build-helpers/images/icon.png b/build-helpers/images/icon.png
index e0b4935b5..9c39f06e0 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 e0b4935b5..9c39f06e0 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
new file mode 100644
index 000000000..8eb811283
--- /dev/null
+++ 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
new file mode 100644
index 000000000..2523dd8a7
--- /dev/null
+++ 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
new file mode 100644
index 000000000..9cb17a0b1
--- /dev/null
+++ 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
new file mode 100644
index 000000000..5742147b8
--- /dev/null
+++ 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
new file mode 100644
index 000000000..09b88a805
--- /dev/null
+++ 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
new file mode 100644
index 000000000..c9d2f331c
--- /dev/null
+++ 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
new file mode 100644
index 000000000..9d5f1c658
--- /dev/null
+++ 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
new file mode 100644
index 000000000..7842217ed
--- /dev/null
+++ 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
new file mode 100644
index 000000000..bbae07f45
--- /dev/null
+++ b/build-helpers/images/icons/96x96.png
Binary files differ
diff --git a/electron-builder.yml b/electron-builder.yml
index adc8f8ae9..96bd63cc2 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -24,10 +24,17 @@ linux:
24 icon: ./build-helpers/images/icons 24 icon: ./build-helpers/images/icons
25 category: Network;InstantMessaging; 25 category: Network;InstantMessaging;
26 executableName: franz 26 executableName: franz
27 synopsis: "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more."
28 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."
27 target: 29 target:
28 - target: AppImage 30 - target: AppImage
29 - target: deb 31 - target: deb
32 - target: tar.gz
30 33
31nsis: 34nsis:
32 perMachine: false 35 perMachine: false
33 oneClick: true 36 oneClick: true
37
38protocols:
39 name: Franz
40 schemes: [franz]
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index d947974b3..95b026f66 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -110,7 +110,9 @@ export function watch() {
110} 110}
111 111
112export function webserver() { 112export function webserver() {
113 gulp.src(paths.dest) 113 gulp.src([
114 paths.dest,
115 ])
114 .pipe(server({ 116 .pipe(server({
115 livereload: true, 117 livereload: true,
116 })); 118 }));
diff --git a/package.json b/package.json
index 54df530ca..d9145dd7a 100644
--- a/package.json
+++ b/package.json
@@ -2,10 +2,11 @@
2 "name": "franz", 2 "name": "franz",
3 "productName": "Franz", 3 "productName": "Franz",
4 "appId": "com.meetfranz.franz", 4 "appId": "com.meetfranz.franz",
5 "version": "5.0.0-beta.14", 5 "version": "5.0.0-beta.15",
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": "adlk x franz - Stefan Malzner",
8 "main": "index.js", 8 "main": "index.js",
9 "homepage": "https://meetfranz.com",
9 "repository": "https://github.com/meetfranz/franz.git", 10 "repository": "https://github.com/meetfranz/franz.git",
10 "private": true, 11 "private": true,
11 "scripts": { 12 "scripts": {
@@ -33,11 +34,13 @@
33 "babel-polyfill": "^6.23.0", 34 "babel-polyfill": "^6.23.0",
34 "babel-runtime": "^6.23.0", 35 "babel-runtime": "^6.23.0",
35 "classnames": "^2.2.5", 36 "classnames": "^2.2.5",
37 "du": "^0.1.0",
36 "electron-fetch": "^1.1.0", 38 "electron-fetch": "^1.1.0",
37 "electron-spellchecker": "^1.2.0", 39 "electron-spellchecker": "^1.1.2",
38 "electron-updater": "^2.4.3", 40 "electron-updater": "^2.4.3",
39 "electron-window-state": "^4.1.0", 41 "electron-window-state": "^4.1.0",
40 "fs-extra": "^3.0.1", 42 "fs-extra": "^3.0.1",
43 "gulp-cli": "1.2.2",
41 "ini": "^1.3.4", 44 "ini": "^1.3.4",
42 "jshashes": "^1.0.6", 45 "jshashes": "^1.0.6",
43 "jsonwebtoken": "^7.4.1", 46 "jsonwebtoken": "^7.4.1",
@@ -48,15 +51,17 @@
48 "mkdirp": "^0.5.1", 51 "mkdirp": "^0.5.1",
49 "mobx": "^3.1.0", 52 "mobx": "^3.1.0",
50 "mobx-react": "^4.1.0", 53 "mobx-react": "^4.1.0",
51 "mobx-react-form": "1.24.0", 54 "mobx-react-form": "^1.32.2",
52 "mobx-react-router": "^3.1.2", 55 "mobx-react-router": "^3.1.2",
53 "moment": "^2.17.1", 56 "moment": "^2.17.1",
54 "normalize-url": "^1.9.1", 57 "normalize-url": "^1.9.1",
58 "pretty-bytes": "^4.0.2",
55 "prop-types": "^15.5.10", 59 "prop-types": "^15.5.10",
56 "prop-types-extended": "^0.2.1", 60 "prop-types-extended": "^0.2.1",
57 "react": "^15.4.1", 61 "react": "^15.4.1",
58 "react-addons-css-transition-group": "^15.4.2", 62 "react-addons-css-transition-group": "^15.4.2",
59 "react-dom": "^15.4.1", 63 "react-dom": "^15.4.1",
64 "react-dropzone": "^4.2.1",
60 "react-electron-web-view": "^2.0.1", 65 "react-electron-web-view": "^2.0.1",
61 "react-intl": "^2.3.0", 66 "react-intl": "^2.3.0",
62 "react-loader": "^2.4.0", 67 "react-loader": "^2.4.0",
@@ -102,7 +107,7 @@
102 "gulp-sass": "^3.1.0", 107 "gulp-sass": "^3.1.0",
103 "gulp-sass-variables": "^1.1.1", 108 "gulp-sass-variables": "^1.1.1",
104 "gulp-server-livereload": "^1.9.2", 109 "gulp-server-livereload": "^1.9.2",
105 "node-sass": "^4.5.3" 110 "node-sass": "^4.7.2"
106 }, 111 },
107 "config": { 112 "config": {
108 "commitizen": { 113 "commitizen": {
diff --git a/src/actions/app.js b/src/actions/app.js
index 25ff9344d..e6f7f22ba 100644
--- a/src/actions/app.js
+++ b/src/actions/app.js
@@ -22,6 +22,8 @@ export default {
22 healthCheck: {}, 22 healthCheck: {},
23 muteApp: { 23 muteApp: {
24 isMuted: PropTypes.bool.isRequired, 24 isMuted: PropTypes.bool.isRequired,
25 overrideSystemMute: PropTypes.bool,
25 }, 26 },
26 toggleMuteApp: {}, 27 toggleMuteApp: {},
28 clearAllCache: {},
27}; 29};
diff --git a/src/actions/service.js b/src/actions/service.js
index e3100e986..5d483b12a 100644
--- a/src/actions/service.js
+++ b/src/actions/service.js
@@ -25,6 +25,9 @@ export default {
25 serviceId: PropTypes.string.isRequired, 25 serviceId: PropTypes.string.isRequired,
26 redirect: PropTypes.string, 26 redirect: PropTypes.string,
27 }, 27 },
28 clearCache: {
29 serviceId: PropTypes.string.isRequired,
30 },
28 setUnreadMessageCount: { 31 setUnreadMessageCount: {
29 serviceId: PropTypes.string.isRequired, 32 serviceId: PropTypes.string.isRequired,
30 count: PropTypes.object.isRequired, 33 count: PropTypes.object.isRequired,
diff --git a/src/actions/user.js b/src/actions/user.js
index fe32b8a05..ccf1fa56a 100644
--- a/src/actions/user.js
+++ b/src/actions/user.js
@@ -27,4 +27,5 @@ export default {
27 importLegacyServices: PropTypes.arrayOf(PropTypes.shape({ 27 importLegacyServices: PropTypes.arrayOf(PropTypes.shape({
28 recipe: PropTypes.string.isRequired, 28 recipe: PropTypes.string.isRequired,
29 })).isRequired, 29 })).isRequired,
30 delete: {},
30}; 31};
diff --git a/src/api/LocalApi.js b/src/api/LocalApi.js
index 6f2b049d6..3f84f8a0b 100644
--- a/src/api/LocalApi.js
+++ b/src/api/LocalApi.js
@@ -15,4 +15,12 @@ export default class LocalApi {
15 removeKey(key) { 15 removeKey(key) {
16 return this.local.removeKey(key); 16 return this.local.removeKey(key);
17 } 17 }
18
19 getAppCacheSize() {
20 return this.local.getAppCacheSize();
21 }
22
23 clearAppCache() {
24 return this.local.clearAppCache();
25 }
18} 26}
diff --git a/src/api/ServicesApi.js b/src/api/ServicesApi.js
index 3cb40ba0d..36ed9482f 100644
--- a/src/api/ServicesApi.js
+++ b/src/api/ServicesApi.js
@@ -1,5 +1,6 @@
1export default class ServicesApi { 1export default class ServicesApi {
2 constructor(server) { 2 constructor(server, local) {
3 this.local = local;
3 this.server = server; 4 this.server = server;
4 } 5 }
5 6
@@ -30,4 +31,8 @@ export default class ServicesApi {
30 reorder(data) { 31 reorder(data) {
31 return this.server.reorderService(data); 32 return this.server.reorderService(data);
32 } 33 }
34
35 clearCache(serviceId) {
36 return this.local.clearCache(serviceId);
37 }
33} 38}
diff --git a/src/api/UserApi.js b/src/api/UserApi.js
index e8fd75bed..edfb88988 100644
--- a/src/api/UserApi.js
+++ b/src/api/UserApi.js
@@ -46,4 +46,8 @@ export default class UserApi {
46 getLegacyServices() { 46 getLegacyServices() {
47 return this.server.getLegacyServices(); 47 return this.server.getLegacyServices();
48 } 48 }
49
50 delete() {
51 return this.server.deleteAccount();
52 }
49} 53}
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js
index eba236f16..e95d750ac 100644
--- a/src/api/server/LocalApi.js
+++ b/src/api/server/LocalApi.js
@@ -1,4 +1,9 @@
1import SettingsModel from '../../models/Settings'; 1import { remote } from 'electron';
2import du from 'du';
3
4import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js';
5
6const { session } = remote;
2 7
3export default class LocalApi { 8export default class LocalApi {
4 // App 9 // App
@@ -15,7 +20,7 @@ export default class LocalApi {
15 async getAppSettings() { 20 async getAppSettings() {
16 const settingsString = localStorage.getItem('app'); 21 const settingsString = localStorage.getItem('app');
17 try { 22 try {
18 const settings = new SettingsModel(JSON.parse(settingsString) || {}); 23 const settings = JSON.parse(settingsString) || {};
19 console.debug('LocalApi::getAppSettings resolves', settings); 24 console.debug('LocalApi::getAppSettings resolves', settings);
20 25
21 return settings; 26 return settings;
@@ -32,4 +37,31 @@ export default class LocalApi {
32 localStorage.setItem('app', JSON.stringify(settings)); 37 localStorage.setItem('app', JSON.stringify(settings));
33 } 38 }
34 } 39 }
40
41 // Services
42 async getAppCacheSize() {
43 const partitionsDir = getServicePartitionsDirectory();
44 return new Promise((resolve, reject) => {
45 du(partitionsDir, (err, size) => {
46 if (err) reject(err);
47
48 console.debug('LocalApi::getAppCacheSize resolves', size);
49 resolve(size);
50 });
51 });
52 }
53
54 async clearCache(serviceId) {
55 const s = session.fromPartition(`persist:service-${serviceId}`);
56
57 console.debug('LocalApi::clearCache resolves', serviceId);
58 return new Promise(resolve => s.clearCache(resolve));
59 }
60
61 async clearAppCache() {
62 const s = session.defaultSession;
63
64 console.debug('LocalApi::clearCache clearAppCache');
65 return new Promise(resolve => s.clearCache(resolve));
66 }
35} 67}
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index f25f02eaa..d37ff51f8 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -12,6 +12,8 @@ import NewsModel from '../../models/News';
12import UserModel from '../../models/User'; 12import UserModel from '../../models/User';
13import OrderModel from '../../models/Order'; 13import OrderModel from '../../models/Order';
14 14
15import { sleep } from '../../helpers/async-helpers';
16
15import { API } from '../../environment'; 17import { API } from '../../environment';
16 18
17import { 19import {
@@ -20,6 +22,10 @@ import {
20 loadRecipeConfig, 22 loadRecipeConfig,
21} from '../../helpers/recipe-helpers'; 23} from '../../helpers/recipe-helpers';
22 24
25import {
26 removeServicePartitionDirectory,
27} from '../../helpers/service-helpers.js';
28
23module.paths.unshift( 29module.paths.unshift(
24 getDevRecipeDirectory(), 30 getDevRecipeDirectory(),
25 getRecipeDirectory(), 31 getRecipeDirectory(),
@@ -125,6 +131,19 @@ export default class ServerApi {
125 return user; 131 return user;
126 } 132 }
127 133
134 async deleteAccount() {
135 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me`, this._prepareAuthRequest({
136 method: 'DELETE',
137 }));
138 if (!request.ok) {
139 throw request;
140 }
141 const data = await request.json();
142
143 console.debug('ServerApi::deleteAccount resolves', data);
144 return data;
145 }
146
128 // Services 147 // Services
129 async getServices() { 148 async getServices() {
130 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me/services`, this._prepareAuthRequest({ 149 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me/services`, this._prepareAuthRequest({
@@ -152,27 +171,65 @@ export default class ServerApi {
152 throw request; 171 throw request;
153 } 172 }
154 const serviceData = await request.json(); 173 const serviceData = await request.json();
174
175 if (data.iconFile) {
176 const iconData = await this.uploadServiceIcon(serviceData.data.id, data.iconFile);
177
178 serviceData.data = iconData;
179 }
180
155 const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); 181 const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) });
156 182
157 console.debug('ServerApi::createService resolves', service); 183 console.debug('ServerApi::createService resolves', service);
158 return service; 184 return service;
159 } 185 }
160 186
161 async updateService(recipeId, data) { 187 async updateService(serviceId, rawData) {
162 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${recipeId}`, this._prepareAuthRequest({ 188 const data = rawData;
189
190 if (data.iconFile) {
191 await this.uploadServiceIcon(serviceId, data.iconFile);
192 }
193
194 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${serviceId}`, this._prepareAuthRequest({
163 method: 'PUT', 195 method: 'PUT',
164 body: JSON.stringify(data), 196 body: JSON.stringify(data),
165 })); 197 }));
198
166 if (!request.ok) { 199 if (!request.ok) {
167 throw request; 200 throw request;
168 } 201 }
202
169 const serviceData = await request.json(); 203 const serviceData = await request.json();
204
170 const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); 205 const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) });
171 206
172 console.debug('ServerApi::updateService resolves', service); 207 console.debug('ServerApi::updateService resolves', service);
173 return service; 208 return service;
174 } 209 }
175 210
211 async uploadServiceIcon(serviceId, icon) {
212 const formData = new FormData();
213 formData.append('icon', icon);
214
215 const requestData = this._prepareAuthRequest({
216 method: 'PUT',
217 body: formData,
218 });
219
220 delete requestData.headers['Content-Type'];
221
222 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${serviceId}`, requestData);
223
224 if (!request.ok) {
225 throw request;
226 }
227
228 const serviceData = await request.json();
229
230 return serviceData.data;
231 }
232
176 async reorderService(data) { 233 async reorderService(data) {
177 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/reorder`, this._prepareAuthRequest({ 234 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/reorder`, this._prepareAuthRequest({
178 method: 'PUT', 235 method: 'PUT',
@@ -195,6 +252,8 @@ export default class ServerApi {
195 } 252 }
196 const data = await request.json(); 253 const data = await request.json();
197 254
255 removeServicePartitionDirectory(id, true);
256
198 console.debug('ServerApi::deleteService resolves', data); 257 console.debug('ServerApi::deleteService resolves', data);
199 return data; 258 return data;
200 } 259 }
@@ -290,18 +349,25 @@ export default class ServerApi {
290 349
291 fs.ensureDirSync(recipeTempDirectory); 350 fs.ensureDirSync(recipeTempDirectory);
292 const res = await fetch(packageUrl); 351 const res = await fetch(packageUrl);
352 console.debug('Recipe downloaded', recipeId);
293 const buffer = await res.buffer(); 353 const buffer = await res.buffer();
294 fs.writeFileSync(archivePath, buffer); 354 fs.writeFileSync(archivePath, buffer);
295 355
296 tar.x({ 356 await sleep(10);
357
358 await tar.x({
297 file: archivePath, 359 file: archivePath,
298 cwd: recipeTempDirectory, 360 cwd: recipeTempDirectory,
299 sync: true, 361 preservePaths: true,
362 unlink: true,
363 preserveOwner: false,
364 onwarn: x => console.log('warn', recipeId, x),
300 }); 365 });
301 366
367 await sleep(10);
368
302 const { id } = fs.readJsonSync(path.join(recipeTempDirectory, 'package.json')); 369 const { id } = fs.readJsonSync(path.join(recipeTempDirectory, 'package.json'));
303 const recipeDirectory = path.join(recipesDirectory, id); 370 const recipeDirectory = path.join(recipesDirectory, id);
304
305 fs.copySync(recipeTempDirectory, recipeDirectory); 371 fs.copySync(recipeTempDirectory, recipeDirectory);
306 fs.remove(recipeTempDirectory); 372 fs.remove(recipeTempDirectory);
307 fs.remove(path.join(recipesDirectory, recipeId, 'recipe.tar.gz')); 373 fs.remove(path.join(recipesDirectory, recipeId, 'recipe.tar.gz'));
diff --git a/src/app.js b/src/app.js
index a0b88611c..8e62776d2 100644
--- a/src/app.js
+++ b/src/app.js
@@ -105,3 +105,5 @@ window.addEventListener('load', () => {
105// Prevent drag and drop into window from redirecting 105// Prevent drag and drop into window from redirecting
106window.addEventListener('dragover', event => event.preventDefault()); 106window.addEventListener('dragover', event => event.preventDefault());
107window.addEventListener('drop', event => event.preventDefault()); 107window.addEventListener('drop', event => event.preventDefault());
108window.addEventListener('dragover', event => event.stopPropagation());
109window.addEventListener('drop', event => event.stopPropagation());
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js
index 06493a0fd..078244434 100644
--- a/src/components/auth/Import.js
+++ b/src/components/auth/Import.js
@@ -24,7 +24,7 @@ const messages = defineMessages({
24 }, 24 },
25 skipButtonLabel: { 25 skipButtonLabel: {
26 id: 'import.skip.label', 26 id: 'import.skip.label',
27 defaultMessage: '!!!I want add services manually', 27 defaultMessage: '!!!I want to add services manually',
28 }, 28 },
29}); 29});
30 30
diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js
index 06b10ecfe..eb9fbb847 100644
--- a/src/components/auth/Welcome.js
+++ b/src/components/auth/Welcome.js
@@ -55,12 +55,16 @@ export default class Login extends Component {
55 </div> 55 </div>
56 <div className="welcome__featured-services"> 56 <div className="welcome__featured-services">
57 {recipes.map(recipe => ( 57 {recipes.map(recipe => (
58 <img 58 <div
59 key={recipe.id} 59 key={recipe.id}
60 src={recipe.icons.svg}
61 className="welcome__featured-service" 60 className="welcome__featured-service"
62 alt="" 61 >
63 /> 62 <img
63 key={recipe.id}
64 src={recipe.icons.svg}
65 alt=""
66 />
67 </div>
64 ))} 68 ))}
65 </div> 69 </div>
66 </div> 70 </div>
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index cb2ecc8ce..915ebeace 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -17,12 +17,12 @@ const messages = defineMessages({
17 defaultMessage: '!!!Add new service', 17 defaultMessage: '!!!Add new service',
18 }, 18 },
19 mute: { 19 mute: {
20 id: 'sidebar.mute', 20 id: 'sidebar.muteApp',
21 defaultMessage: '!!!Disable audio', 21 defaultMessage: '!!!Disable notifications & audio',
22 }, 22 },
23 unmute: { 23 unmute: {
24 id: 'sidebar.unmute', 24 id: 'sidebar.unmuteApp',
25 defaultMessage: '!!!Enable audio', 25 defaultMessage: '!!!Enable notifications & audio',
26 }, 26 },
27}); 27});
28 28
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index faa356d3d..c146abf4e 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -65,6 +65,7 @@ export default class ServiceWebview extends Component {
65 65
66 const webviewClasses = classnames({ 66 const webviewClasses = classnames({
67 services__webview: true, 67 services__webview: true,
68 'services__webview-wrapper': true,
68 'is-active': service.isActive, 69 'is-active': service.isActive,
69 'services__webview--force-repaint': this.state.forceRepaint, 70 'services__webview--force-repaint': this.state.forceRepaint,
70 }); 71 });
@@ -105,7 +106,6 @@ export default class ServiceWebview extends Component {
105 onUpdateTargetUrl={this.updateTargetUrl} 106 onUpdateTargetUrl={this.updateTargetUrl}
106 useragent={service.userAgent} 107 useragent={service.userAgent}
107 muted={isAppMuted || service.isMuted} 108 muted={isAppMuted || service.isMuted}
108 disablewebsecurity
109 allowpopups 109 allowpopups
110 /> 110 />
111 )} 111 )}
diff --git a/src/components/services/tabs/TabBarSortableList.js b/src/components/services/tabs/TabBarSortableList.js
index 2daf55676..489027d57 100644
--- a/src/components/services/tabs/TabBarSortableList.js
+++ b/src/components/services/tabs/TabBarSortableList.js
@@ -17,6 +17,8 @@ class TabBarSortableList extends Component {
17 deleteService: PropTypes.func.isRequired, 17 deleteService: PropTypes.func.isRequired,
18 disableService: PropTypes.func.isRequired, 18 disableService: PropTypes.func.isRequired,
19 enableService: PropTypes.func.isRequired, 19 enableService: PropTypes.func.isRequired,
20 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired,
21 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired,
20 } 22 }
21 23
22 render() { 24 render() {
@@ -30,6 +32,8 @@ class TabBarSortableList extends Component {
30 disableService, 32 disableService,
31 enableService, 33 enableService,
32 openSettings, 34 openSettings,
35 showMessageBadgeWhenMutedSetting,
36 showMessageBadgesEvenWhenMuted,
33 } = this.props; 37 } = this.props;
34 38
35 return ( 39 return (
@@ -50,6 +54,8 @@ class TabBarSortableList extends Component {
50 disableService={() => disableService({ serviceId: service.id })} 54 disableService={() => disableService({ serviceId: service.id })}
51 enableService={() => enableService({ serviceId: service.id })} 55 enableService={() => enableService({ serviceId: service.id })}
52 openSettings={openSettings} 56 openSettings={openSettings}
57 showMessageBadgeWhenMutedSetting={showMessageBadgeWhenMutedSetting}
58 showMessageBadgesEvenWhenMuted={showMessageBadgesEvenWhenMuted}
53 /> 59 />
54 ))} 60 ))}
55 {/* <li> 61 {/* <li>
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index a7136c43f..7aed8fda7 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -63,6 +63,8 @@ class TabItem extends Component {
63 deleteService: PropTypes.func.isRequired, 63 deleteService: PropTypes.func.isRequired,
64 disableService: PropTypes.func.isRequired, 64 disableService: PropTypes.func.isRequired,
65 enableService: PropTypes.func.isRequired, 65 enableService: PropTypes.func.isRequired,
66 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired,
67 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired,
66 }; 68 };
67 69
68 static contextTypes = { 70 static contextTypes = {
@@ -81,6 +83,8 @@ class TabItem extends Component {
81 disableService, 83 disableService,
82 enableService, 84 enableService,
83 openSettings, 85 openSettings,
86 showMessageBadgeWhenMutedSetting,
87 showMessageBadgesEvenWhenMuted,
84 } = this.props; 88 } = this.props;
85 const { intl } = this.context; 89 const { intl } = this.context;
86 90
@@ -121,6 +125,26 @@ class TabItem extends Component {
121 }]; 125 }];
122 const menu = Menu.buildFromTemplate(menuTemplate); 126 const menu = Menu.buildFromTemplate(menuTemplate);
123 127
128 let notificationBadge = null;
129 if ((showMessageBadgeWhenMutedSetting || service.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && service.isBadgeEnabled) {
130 notificationBadge = (
131 <span>
132 {service.unreadDirectMessageCount > 0 && (
133 <span className="tab-item__message-count">
134 {service.unreadDirectMessageCount}
135 </span>
136 )}
137 {service.unreadIndirectMessageCount > 0
138 && service.unreadDirectMessageCount === 0
139 && service.isIndirectMessageBadgeEnabled && (
140 <span className="tab-item__message-count is-indirect">
141 •
142 </span>
143 )}
144 </span>
145 );
146 }
147
124 return ( 148 return (
125 <li 149 <li
126 className={classnames({ 150 className={classnames({
@@ -138,18 +162,7 @@ class TabItem extends Component {
138 className="tab-item__icon" 162 className="tab-item__icon"
139 alt="" 163 alt=""
140 /> 164 />
141 {service.unreadDirectMessageCount > 0 && ( 165 {notificationBadge}
142 <span className="tab-item__message-count">
143 {service.unreadDirectMessageCount}
144 </span>
145 )}
146 {service.unreadIndirectMessageCount > 0
147 && service.unreadDirectMessageCount === 0
148 && service.isIndirectMessageBadgeEnabled && (
149 <span className="tab-item__message-count is-indirect">
150 •
151 </span>
152 )}
153 </li> 166 </li>
154 ); 167 );
155 } 168 }
diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js
index 9da1090b7..ceb88c51c 100644
--- a/src/components/services/tabs/Tabbar.js
+++ b/src/components/services/tabs/Tabbar.js
@@ -18,6 +18,8 @@ export default class TabBar extends Component {
18 toggleAudio: PropTypes.func.isRequired, 18 toggleAudio: PropTypes.func.isRequired,
19 deleteService: PropTypes.func.isRequired, 19 deleteService: PropTypes.func.isRequired,
20 updateService: PropTypes.func.isRequired, 20 updateService: PropTypes.func.isRequired,
21 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired,
22 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired,
21 } 23 }
22 24
23 onSortEnd = ({ oldIndex, newIndex }) => { 25 onSortEnd = ({ oldIndex, newIndex }) => {
@@ -64,6 +66,8 @@ export default class TabBar extends Component {
64 toggleNotifications, 66 toggleNotifications,
65 toggleAudio, 67 toggleAudio,
66 deleteService, 68 deleteService,
69 showMessageBadgeWhenMutedSetting,
70 showMessageBadgesEvenWhenMuted,
67 } = this.props; 71 } = this.props;
68 72
69 return ( 73 return (
@@ -85,6 +89,8 @@ export default class TabBar extends Component {
85 axis="y" 89 axis="y"
86 lockAxis="y" 90 lockAxis="y"
87 helperClass="is-reordering" 91 helperClass="is-reordering"
92 showMessageBadgeWhenMutedSetting={showMessageBadgeWhenMutedSetting}
93 showMessageBadgesEvenWhenMuted={showMessageBadgesEvenWhenMuted}
88 /> 94 />
89 </div> 95 </div>
90 ); 96 );
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 75dbdef49..89fa07800 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -28,6 +28,10 @@ const messages = defineMessages({
28 id: 'settings.account.headlineInvoices', 28 id: 'settings.account.headlineInvoices',
29 defaultMessage: '!!Invoices', 29 defaultMessage: '!!Invoices',
30 }, 30 },
31 headlineDangerZone: {
32 id: 'settings.account.headlineDangerZone',
33 defaultMessage: '!!Danger Zone',
34 },
31 manageSubscriptionButtonLabel: { 35 manageSubscriptionButtonLabel: {
32 id: 'settings.account.manageSubscription.label', 36 id: 'settings.account.manageSubscription.label',
33 defaultMessage: '!!!Manage your subscription', 37 defaultMessage: '!!!Manage your subscription',
@@ -72,6 +76,18 @@ const messages = defineMessages({
72 id: 'settings.account.mining.cancel', 76 id: 'settings.account.mining.cancel',
73 defaultMessage: '!!!Cancel mining', 77 defaultMessage: '!!!Cancel mining',
74 }, 78 },
79 deleteAccount: {
80 id: 'settings.account.deleteAccount',
81 defaultMessage: '!!!Delete account',
82 },
83 deleteInfo: {
84 id: 'settings.account.deleteInfo',
85 defaultMessage: '!!!If you don\'t need your Franz account any longer, you can delete your account and all related data here.',
86 },
87 deleteEmailSent: {
88 id: 'settings.account.deleteEmailSent',
89 defaultMessage: '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!',
90 },
75}); 91});
76 92
77@observer 93@observer
@@ -90,6 +106,9 @@ export default class AccountDashboard extends Component {
90 openExternalUrl: PropTypes.func.isRequired, 106 openExternalUrl: PropTypes.func.isRequired,
91 onCloseSubscriptionWindow: PropTypes.func.isRequired, 107 onCloseSubscriptionWindow: PropTypes.func.isRequired,
92 stopMiner: PropTypes.func.isRequired, 108 stopMiner: PropTypes.func.isRequired,
109 deleteAccount: PropTypes.func.isRequired,
110 isLoadingDeleteAccount: PropTypes.bool.isRequired,
111 isDeleteAccountSuccessful: PropTypes.bool.isRequired,
93 }; 112 };
94 113
95 static contextTypes = { 114 static contextTypes = {
@@ -111,6 +130,9 @@ export default class AccountDashboard extends Component {
111 retryUserInfoRequest, 130 retryUserInfoRequest,
112 onCloseSubscriptionWindow, 131 onCloseSubscriptionWindow,
113 stopMiner, 132 stopMiner,
133 deleteAccount,
134 isLoadingDeleteAccount,
135 isDeleteAccountSuccessful,
114 } = this.props; 136 } = this.props;
115 const { intl } = this.context; 137 const { intl } = this.context;
116 138
@@ -201,7 +223,7 @@ export default class AccountDashboard extends Component {
201 /> 223 />
202 </div> 224 </div>
203 </div> 225 </div>
204 <div className="account__box account__box--last"> 226 <div className="account__box">
205 <h2>{intl.formatMessage(messages.headlineInvoices)}</h2> 227 <h2>{intl.formatMessage(messages.headlineInvoices)}</h2>
206 <table className="invoices"> 228 <table className="invoices">
207 <tbody> 229 <tbody>
@@ -230,7 +252,7 @@ export default class AccountDashboard extends Component {
230 252
231 {user.isMiner && ( 253 {user.isMiner && (
232 <div className="account franz-form"> 254 <div className="account franz-form">
233 <div className="account__box"> 255 <div className="account__box account__box--last">
234 <h2>{intl.formatMessage(messages.headlineSubscription)}</h2> 256 <h2>{intl.formatMessage(messages.headlineSubscription)}</h2>
235 <div className="account__subscription"> 257 <div className="account__subscription">
236 <div> 258 <div>
@@ -267,7 +289,7 @@ export default class AccountDashboard extends Component {
267 <Loader /> 289 <Loader />
268 ) : ( 290 ) : (
269 <div className="account franz-form"> 291 <div className="account franz-form">
270 <div className="account__box account__box--last"> 292 <div className="account__box">
271 <h2>{intl.formatMessage(messages.headlineUpgrade)}</h2> 293 <h2>{intl.formatMessage(messages.headlineUpgrade)}</h2>
272 <SubscriptionForm 294 <SubscriptionForm
273 onCloseWindow={onCloseSubscriptionWindow} 295 onCloseWindow={onCloseSubscriptionWindow}
@@ -276,8 +298,29 @@ export default class AccountDashboard extends Component {
276 </div> 298 </div>
277 ) 299 )
278 )} 300 )}
301
302 <div className="account franz-form">
303 <div className="account__box">
304 <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2>
305 {!isDeleteAccountSuccessful && (
306 <div className="account__subscription">
307 <p>{intl.formatMessage(messages.deleteInfo)}</p>
308 <Button
309 label={intl.formatMessage(messages.deleteAccount)}
310 buttonType="danger"
311 onClick={() => deleteAccount()}
312 loaded={!isLoadingDeleteAccount}
313 />
314 </div>
315 )}
316 {isDeleteAccountSuccessful && (
317 <p>{intl.formatMessage(messages.deleteEmailSent)}</p>
318 )}
319 </div>
320 </div>
279 </div> 321 </div>
280 )} 322 )}
323
281 </div> 324 </div>
282 <ReactTooltip place="right" type="dark" effect="solid" /> 325 <ReactTooltip place="right" type="dark" effect="solid" />
283 </div> 326 </div>
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js
index b6ade5da4..4610c69a5 100644
--- a/src/components/settings/recipes/RecipesDashboard.js
+++ b/src/components/settings/recipes/RecipesDashboard.js
@@ -16,6 +16,10 @@ const messages = defineMessages({
16 id: 'settings.recipes.headline', 16 id: 'settings.recipes.headline',
17 defaultMessage: '!!!Available Services', 17 defaultMessage: '!!!Available Services',
18 }, 18 },
19 searchService: {
20 id: 'settings.searchService',
21 defaultMessage: '!!!Search service',
22 },
19 mostPopularRecipes: { 23 mostPopularRecipes: {
20 id: 'settings.recipes.mostPopular', 24 id: 'settings.recipes.mostPopular',
21 defaultMessage: '!!!Most popular', 25 defaultMessage: '!!!Most popular',
@@ -81,13 +85,7 @@ export default class RecipesDashboard extends Component {
81 return ( 85 return (
82 <div className="settings__main"> 86 <div className="settings__main">
83 <div className="settings__header"> 87 <div className="settings__header">
84 <SearchInput 88 <h1>{intl.formatMessage(messages.headline)}</h1>
85 className="settings__search-header"
86 defaultValue={intl.formatMessage(messages.headline)}
87 onChange={e => searchRecipes(e)}
88 onReset={() => resetSearch()}
89 throttle
90 />
91 </div> 89 </div>
92 <div className="settings__body recipes"> 90 <div className="settings__body recipes">
93 {serviceStatus.length > 0 && serviceStatus.includes('created') && ( 91 {serviceStatus.length > 0 && serviceStatus.includes('created') && (
@@ -101,7 +99,13 @@ export default class RecipesDashboard extends Component {
101 </Infobox> 99 </Infobox>
102 </Appear> 100 </Appear>
103 )} 101 )}
104 {/* {!searchNeedle && ( */} 102 <SearchInput
103 placeholder={intl.formatMessage(messages.searchService)}
104 onChange={e => searchRecipes(e)}
105 onReset={() => resetSearch()}
106 autoFocus
107 throttle
108 />
105 <div className="recipes__navigation"> 109 <div className="recipes__navigation">
106 <Link 110 <Link
107 to="/settings/recipes" 111 to="/settings/recipes"
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 36cefe87c..f6f2df2f3 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -13,6 +13,7 @@ import Tabs, { TabItem } from '../../ui/Tabs';
13import Input from '../../ui/Input'; 13import Input from '../../ui/Input';
14import Toggle from '../../ui/Toggle'; 14import Toggle from '../../ui/Toggle';
15import Button from '../../ui/Button'; 15import Button from '../../ui/Button';
16import ImageUpload from '../../ui/ImageUpload';
16 17
17const messages = defineMessages({ 18const messages = defineMessages({
18 saveService: { 19 saveService: {
@@ -47,6 +48,10 @@ const messages = defineMessages({
47 id: 'settings.service.form.tabOnPremise', 48 id: 'settings.service.form.tabOnPremise',
48 defaultMessage: '!!!Self hosted â­ï¸', 49 defaultMessage: '!!!Self hosted â­ï¸',
49 }, 50 },
51 useHostedService: {
52 id: 'settings.service.form.useHostedService',
53 defaultMessage: '!!!Use the hosted {name} service.',
54 },
50 customUrlValidationError: { 55 customUrlValidationError: {
51 id: 'settings.service.form.customUrlValidationError', 56 id: 'settings.service.form.customUrlValidationError',
52 defaultMessage: '!!!Could not validate custom {name} server.', 57 defaultMessage: '!!!Could not validate custom {name} server.',
@@ -67,6 +72,26 @@ const messages = defineMessages({
67 id: 'settings.service.form.isMutedInfo', 72 id: 'settings.service.form.isMutedInfo',
68 defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', 73 defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted',
69 }, 74 },
75 headlineNotifications: {
76 id: 'settings.service.form.headlineNotifications',
77 defaultMessage: '!!!Notifications',
78 },
79 headlineBadges: {
80 id: 'settings.service.form.headlineBadges',
81 defaultMessage: '!!!Unread message badges',
82 },
83 headlineGeneral: {
84 id: 'settings.service.form.headlineGeneral',
85 defaultMessage: '!!!General',
86 },
87 iconDelete: {
88 id: 'settings.service.form.iconDelete',
89 defaultMessage: '!!!Delete',
90 },
91 iconUpload: {
92 id: 'settings.service.form.iconUpload',
93 defaultMessage: '!!!Drop your image, or click here',
94 },
70}); 95});
71 96
72@observer 97@observer
@@ -108,9 +133,13 @@ export default class EditServiceForm extends Component {
108 this.props.form.submit({ 133 this.props.form.submit({
109 onSuccess: async (form) => { 134 onSuccess: async (form) => {
110 const values = form.values(); 135 const values = form.values();
111
112 let isValid = true; 136 let isValid = true;
113 137
138 const files = form.$('customIcon').files;
139 if (files) {
140 values.iconFile = files[0];
141 }
142
114 if (recipe.validateUrl && values.customUrl) { 143 if (recipe.validateUrl && values.customUrl) {
115 this.setState({ isValidatingCustomUrl: true }); 144 this.setState({ isValidatingCustomUrl: true });
116 try { 145 try {
@@ -166,6 +195,13 @@ export default class EditServiceForm extends Component {
166 /> 195 />
167 ); 196 );
168 197
198 let activeTabIndex = 0;
199 if (recipe.hasHostedOption && service.team) {
200 activeTabIndex = 1;
201 } else if (recipe.hasHostedOption && service.customUrl) {
202 activeTabIndex = 2;
203 }
204
169 return ( 205 return (
170 <div className="settings__main"> 206 <div className="settings__main">
171 <div className="settings__header"> 207 <div className="settings__header">
@@ -195,14 +231,25 @@ export default class EditServiceForm extends Component {
195 </div> 231 </div>
196 <div className="settings__body"> 232 <div className="settings__body">
197 <form onSubmit={e => this.submit(e)} id="form"> 233 <form onSubmit={e => this.submit(e)} id="form">
198 <Input field={form.$('name')} focus /> 234 <div className="service-name">
235 <Input field={form.$('name')} focus />
236 </div>
199 {(recipe.hasTeamId || recipe.hasCustomUrl) && ( 237 {(recipe.hasTeamId || recipe.hasCustomUrl) && (
200 <Tabs 238 <Tabs
201 active={service.customUrl ? 1 : 0} 239 active={activeTabIndex}
202 > 240 >
241 {recipe.hasHostedOption && (
242 <TabItem title={recipe.name}>
243 {intl.formatMessage(messages.useHostedService, { name: recipe.name })}
244 </TabItem>
245 )}
203 {recipe.hasTeamId && ( 246 {recipe.hasTeamId && (
204 <TabItem title={intl.formatMessage(messages.tabHosted)}> 247 <TabItem title={intl.formatMessage(messages.tabHosted)}>
205 <Input field={form.$('team')} suffix={recipe.urlInputSuffix} /> 248 <Input
249 field={form.$('team')}
250 prefix={recipe.urlInputPrefix}
251 suffix={recipe.urlInputSuffix}
252 />
206 </TabItem> 253 </TabItem>
207 )} 254 )}
208 {recipe.hasCustomUrl && ( 255 {recipe.hasCustomUrl && (
@@ -230,21 +277,42 @@ export default class EditServiceForm extends Component {
230 )} 277 )}
231 </Tabs> 278 </Tabs>
232 )} 279 )}
233 <div className="settings__options"> 280 <div className="service-flex-grid">
234 <Toggle field={form.$('isNotificationEnabled')} /> 281 <div className="settings__options">
235 {recipe.hasIndirectMessages && ( 282 <div className="settings__settings-group">
236 <div> 283 <h3>{intl.formatMessage(messages.headlineNotifications)}</h3>
237 <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> 284 <Toggle field={form.$('isNotificationEnabled')} />
285 <Toggle field={form.$('isMuted')} />
238 <p className="settings__help"> 286 <p className="settings__help">
239 {intl.formatMessage(messages.indirectMessageInfo)} 287 {intl.formatMessage(messages.isMutedInfo)}
240 </p> 288 </p>
241 </div> 289 </div>
242 )} 290
243 <Toggle field={form.$('isMuted')} /> 291 <div className="settings__settings-group">
244 <p className="settings__help"> 292 <h3>{intl.formatMessage(messages.headlineBadges)}</h3>
245 {intl.formatMessage(messages.isMutedInfo)} 293 <Toggle field={form.$('isBadgeEnabled')} />
246 </p> 294 {recipe.hasIndirectMessages && form.$('isBadgeEnabled').value && (
247 <Toggle field={form.$('isEnabled')} /> 295 <div>
296 <Toggle field={form.$('isIndirectMessageBadgeEnabled')} />
297 <p className="settings__help">
298 {intl.formatMessage(messages.indirectMessageInfo)}
299 </p>
300 </div>
301 )}
302 </div>
303
304 <div className="settings__settings-group">
305 <h3>{intl.formatMessage(messages.headlineGeneral)}</h3>
306 <Toggle field={form.$('isEnabled')} />
307 </div>
308 </div>
309 <div className="service-icon">
310 <ImageUpload
311 field={form.$('customIcon')}
312 textDelete={intl.formatMessage(messages.iconDelete)}
313 textUpload={intl.formatMessage(messages.iconUpload)}
314 />
315 </div>
248 </div> 316 </div>
249 {recipe.message && ( 317 {recipe.message && (
250 <p className="settings__message"> 318 <p className="settings__message">
diff --git a/src/components/settings/services/ServicesDashboard.js b/src/components/settings/services/ServicesDashboard.js
index 5f146b5f3..20e451f01 100644
--- a/src/components/settings/services/ServicesDashboard.js
+++ b/src/components/settings/services/ServicesDashboard.js
@@ -15,10 +15,18 @@ const messages = defineMessages({
15 id: 'settings.services.headline', 15 id: 'settings.services.headline',
16 defaultMessage: '!!!Your services', 16 defaultMessage: '!!!Your services',
17 }, 17 },
18 searchService: {
19 id: 'settings.searchService',
20 defaultMessage: '!!!Search service',
21 },
18 noServicesAdded: { 22 noServicesAdded: {
19 id: 'settings.services.noServicesAdded', 23 id: 'settings.services.noServicesAdded',
20 defaultMessage: '!!!You haven\'t added any services yet.', 24 defaultMessage: '!!!You haven\'t added any services yet.',
21 }, 25 },
26 noServiceFound: {
27 id: 'settings.recipes.nothingFound',
28 defaultMessage: '!!!Sorry, but no service matched your search term.',
29 },
22 discoverServices: { 30 discoverServices: {
23 id: 'settings.services.discoverServices', 31 id: 'settings.services.discoverServices',
24 defaultMessage: '!!!Discover services', 32 defaultMessage: '!!!Discover services',
@@ -53,7 +61,13 @@ export default class ServicesDashboard extends Component {
53 servicesRequestFailed: PropTypes.bool.isRequired, 61 servicesRequestFailed: PropTypes.bool.isRequired,
54 retryServicesRequest: PropTypes.func.isRequired, 62 retryServicesRequest: PropTypes.func.isRequired,
55 status: MobxPropTypes.arrayOrObservableArray.isRequired, 63 status: MobxPropTypes.arrayOrObservableArray.isRequired,
64 searchNeedle: PropTypes.string,
56 }; 65 };
66
67 static defaultProps = {
68 searchNeedle: '',
69 }
70
57 static contextTypes = { 71 static contextTypes = {
58 intl: intlShape, 72 intl: intlShape,
59 }; 73 };
@@ -69,20 +83,24 @@ export default class ServicesDashboard extends Component {
69 servicesRequestFailed, 83 servicesRequestFailed,
70 retryServicesRequest, 84 retryServicesRequest,
71 status, 85 status,
86 searchNeedle,
72 } = this.props; 87 } = this.props;
73 const { intl } = this.context; 88 const { intl } = this.context;
74 89
75 return ( 90 return (
76 <div className="settings__main"> 91 <div className="settings__main">
77 <div className="settings__header"> 92 <div className="settings__header">
78 <SearchInput 93 <h1>{intl.formatMessage(messages.headline)}</h1>
79 className="settings__search-header"
80 defaultValue={intl.formatMessage(messages.headline)}
81 onChange={needle => filterServices({ needle })}
82 onReset={() => resetFilter()}
83 />
84 </div> 94 </div>
85 <div className="settings__body"> 95 <div className="settings__body">
96 {!isLoading && (
97 <SearchInput
98 placeholder={intl.formatMessage(messages.searchService)}
99 onChange={needle => filterServices({ needle })}
100 onReset={() => resetFilter()}
101 autoFocus
102 />
103 )}
86 {!isLoading && servicesRequestFailed && ( 104 {!isLoading && servicesRequestFailed && (
87 <div> 105 <div>
88 <Infobox 106 <Infobox
@@ -121,7 +139,7 @@ export default class ServicesDashboard extends Component {
121 </Appear> 139 </Appear>
122 )} 140 )}
123 141
124 {!isLoading && services.length === 0 && ( 142 {!isLoading && services.length === 0 && !searchNeedle && (
125 <div className="align-middle settings__empty-state"> 143 <div className="align-middle settings__empty-state">
126 <p className="settings__empty-text"> 144 <p className="settings__empty-text">
127 <span className="emoji"> 145 <span className="emoji">
@@ -132,6 +150,16 @@ export default class ServicesDashboard extends Component {
132 <Link to="/settings/recipes" className="button">{intl.formatMessage(messages.discoverServices)}</Link> 150 <Link to="/settings/recipes" className="button">{intl.formatMessage(messages.discoverServices)}</Link>
133 </div> 151 </div>
134 )} 152 )}
153 {!isLoading && services.length === 0 && searchNeedle && (
154 <div className="align-middle settings__empty-state">
155 <p className="settings__empty-text">
156 <span className="emoji">
157 <img src="./assets/images/emoji/dontknow.png" alt="" />
158 </span>
159 {intl.formatMessage(messages.noServiceFound)}
160 </p>
161 </div>
162 )}
135 {isLoading ? ( 163 {isLoading ? (
136 <Loader /> 164 <Loader />
137 ) : ( 165 ) : (
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 4ce9b7ab2..72aa5a8af 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -40,6 +40,18 @@ const messages = defineMessages({
40 id: 'settings.app.translationHelp', 40 id: 'settings.app.translationHelp',
41 defaultMessage: '!!!Help us to translate Franz into your language.', 41 defaultMessage: '!!!Help us to translate Franz into your language.',
42 }, 42 },
43 subheadlineCache: {
44 id: 'settings.app.subheadlineCache',
45 defaultMessage: '!!!Cache',
46 },
47 cacheInfo: {
48 id: 'settings.app.cacheInfo',
49 defaultMessage: '!!!Franz cache is currently using {size} of disk space.',
50 },
51 buttonClearAllCache: {
52 id: 'settings.app.buttonClearAllCache',
53 defaultMessage: '!!!Clear cache',
54 },
43 buttonSearchForUpdate: { 55 buttonSearchForUpdate: {
44 id: 'settings.app.buttonSearchForUpdate', 56 id: 'settings.app.buttonSearchForUpdate',
45 defaultMessage: '!!!Check for updates', 57 defaultMessage: '!!!Check for updates',
@@ -64,10 +76,6 @@ const messages = defineMessages({
64 id: 'settings.app.currentVersion', 76 id: 'settings.app.currentVersion',
65 defaultMessage: '!!!Current version:', 77 defaultMessage: '!!!Current version:',
66 }, 78 },
67 restartRequired: {
68 id: 'settings.app.restartRequired',
69 defaultMessage: '!!!Changes require restart',
70 },
71}); 79});
72 80
73@observer 81@observer
@@ -81,6 +89,9 @@ export default class EditSettingsForm extends Component {
81 isUpdateAvailable: PropTypes.bool.isRequired, 89 isUpdateAvailable: PropTypes.bool.isRequired,
82 noUpdateAvailable: PropTypes.bool.isRequired, 90 noUpdateAvailable: PropTypes.bool.isRequired,
83 updateIsReadyToInstall: PropTypes.bool.isRequired, 91 updateIsReadyToInstall: PropTypes.bool.isRequired,
92 isClearingAllCache: PropTypes.bool.isRequired,
93 onClearAllCache: PropTypes.func.isRequired,
94 cacheSize: PropTypes.string.isRequired,
84 }; 95 };
85 96
86 static contextTypes = { 97 static contextTypes = {
@@ -107,6 +118,9 @@ export default class EditSettingsForm extends Component {
107 isUpdateAvailable, 118 isUpdateAvailable,
108 noUpdateAvailable, 119 noUpdateAvailable,
109 updateIsReadyToInstall, 120 updateIsReadyToInstall,
121 isClearingAllCache,
122 onClearAllCache,
123 cacheSize,
110 } = this.props; 124 } = this.props;
111 const { intl } = this.context; 125 const { intl } = this.context;
112 126
@@ -142,6 +156,7 @@ export default class EditSettingsForm extends Component {
142 {/* Appearance */} 156 {/* Appearance */}
143 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> 157 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2>
144 <Toggle field={form.$('showDisabledServices')} /> 158 <Toggle field={form.$('showDisabledServices')} />
159 <Toggle field={form.$('showMessageBadgeWhenMuted')} />
145 160
146 {/* Language */} 161 {/* Language */}
147 <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> 162 <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2>
@@ -157,8 +172,26 @@ export default class EditSettingsForm extends Component {
157 {/* Advanced */} 172 {/* Advanced */}
158 <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2> 173 <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2>
159 <Toggle field={form.$('enableSpellchecking')} /> 174 <Toggle field={form.$('enableSpellchecking')} />
160 <p className="settings__help">{intl.formatMessage(messages.restartRequired)}</p>
161 {/* <Select field={form.$('spellcheckingLanguage')} /> */} 175 {/* <Select field={form.$('spellcheckingLanguage')} /> */}
176 <div className="settings__settings-group">
177 <h3>
178 {intl.formatMessage(messages.subheadlineCache)}
179 </h3>
180 <p>
181 {intl.formatMessage(messages.cacheInfo, {
182 size: cacheSize,
183 })}
184 </p>
185 <p>
186 <Button
187 buttonType="secondary"
188 label={intl.formatMessage(messages.buttonClearAllCache)}
189 onClick={onClearAllCache}
190 disabled={isClearingAllCache}
191 loaded={!isClearingAllCache}
192 />
193 </p>
194 </div>
162 195
163 {/* Updates */} 196 {/* Updates */}
164 <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2> 197 <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2>
@@ -169,6 +202,7 @@ export default class EditSettingsForm extends Component {
169 /> 202 />
170 ) : ( 203 ) : (
171 <Button 204 <Button
205 buttonType="secondary"
172 label={intl.formatMessage(updateButtonLabelMessage)} 206 label={intl.formatMessage(updateButtonLabelMessage)}
173 onClick={checkForUpdates} 207 onClick={checkForUpdates}
174 disabled={isCheckingForUpdates || isUpdateAvailable} 208 disabled={isCheckingForUpdates || isUpdateAvailable}
diff --git a/src/components/ui/Button.js b/src/components/ui/Button.js
index 07e94192f..554206cb7 100644
--- a/src/components/ui/Button.js
+++ b/src/components/ui/Button.js
@@ -68,7 +68,7 @@ export default class Button extends Component {
68 loaded={loaded} 68 loaded={loaded}
69 lines={10} 69 lines={10}
70 scale={0.4} 70 scale={0.4}
71 color={buttonType === '' ? '#FFF' : '#373a3c'} 71 color={buttonType !== 'secondary' ? '#FFF' : '#373a3c'}
72 component="span" 72 component="span"
73 /> 73 />
74 {label} 74 {label}
diff --git a/src/components/ui/ImageUpload.js b/src/components/ui/ImageUpload.js
new file mode 100644
index 000000000..81c3b8da6
--- /dev/null
+++ b/src/components/ui/ImageUpload.js
@@ -0,0 +1,108 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { Field } from 'mobx-react-form';
5// import Loader from 'react-loader';
6import classnames from 'classnames';
7import Dropzone from 'react-dropzone';
8
9@observer
10export default class ImageUpload extends Component {
11 static propTypes = {
12 field: PropTypes.instanceOf(Field).isRequired,
13 className: PropTypes.string,
14 multiple: PropTypes.bool,
15 textDelete: PropTypes.string.isRequired,
16 textUpload: PropTypes.string.isRequired,
17 };
18
19 static defaultProps = {
20 className: null,
21 multiple: false,
22 };
23
24 state = {
25 path: null,
26 }
27
28 onDrop(acceptedFiles) {
29 const { field } = this.props;
30
31 acceptedFiles.forEach((file) => {
32 this.setState({
33 path: file.path,
34 });
35 this.props.field.onDrop(file);
36 });
37
38 field.set('');
39 }
40
41 dropzoneRef = null;
42
43 render() {
44 const {
45 field,
46 className,
47 multiple,
48 textDelete,
49 textUpload,
50 } = this.props;
51
52 const cssClasses = classnames({
53 'image-upload__dropzone': true,
54 [`${className}`]: className,
55 });
56
57 return (
58 <div className="image-upload-wrapper">
59 <label className="franz-form__label" htmlFor="iconUpload">{field.label}</label>
60 <div className="image-upload">
61 {(field.value && field.value !== 'delete') || this.state.path ? (
62 <div>
63 <div
64 className="image-upload__preview"
65 style={({
66 backgroundImage: `url("${this.state.path || field.value}")`,
67 })}
68 />
69 <div className="image-upload__action">
70 <button
71 type="button"
72 onClick={() => {
73 if (field.value) {
74 field.set('delete');
75 } else {
76 this.setState({
77 path: null,
78 });
79 }
80 }}
81 >
82 <i className="mdi mdi-delete" />
83 <p>
84 {textDelete}
85 </p>
86 </button>
87 <div className="image-upload__action-background" />
88 </div>
89 </div>
90 ) : (
91 <Dropzone
92 ref={(node) => { this.dropzoneRef = node; }}
93 onDrop={this.onDrop.bind(this)}
94 className={cssClasses}
95 multiple={multiple}
96 accept="image/jpeg, image/png"
97 >
98 <i className="mdi mdi-file-image" />
99 <p>
100 {textUpload}
101 </p>
102 </Dropzone>
103 )}
104 </div>
105 </div>
106 );
107 }
108}
diff --git a/src/components/ui/SearchInput.js b/src/components/ui/SearchInput.js
index bca412cef..a94cde201 100644
--- a/src/components/ui/SearchInput.js
+++ b/src/components/ui/SearchInput.js
@@ -9,36 +9,46 @@ import { debounce } from 'lodash';
9export default class SearchInput extends Component { 9export default class SearchInput extends Component {
10 static propTypes = { 10 static propTypes = {
11 value: PropTypes.string, 11 value: PropTypes.string,
12 defaultValue: PropTypes.string, 12 placeholder: PropTypes.string,
13 className: PropTypes.string, 13 className: PropTypes.string,
14 onChange: PropTypes.func, 14 onChange: PropTypes.func,
15 onReset: PropTypes.func, 15 onReset: PropTypes.func,
16 name: PropTypes.string, 16 name: PropTypes.string,
17 throttle: PropTypes.bool, 17 throttle: PropTypes.bool,
18 throttleDelay: PropTypes.number, 18 throttleDelay: PropTypes.number,
19 autoFocus: PropTypes.bool,
19 }; 20 };
20 21
21 static defaultProps = { 22 static defaultProps = {
22 value: '', 23 value: '',
23 defaultValue: '', 24 placeholder: '',
24 className: '', 25 className: '',
25 name: uuidv1(), 26 name: uuidv1(),
26 throttle: false, 27 throttle: false,
27 throttleDelay: 250, 28 throttleDelay: 250,
28 onChange: () => null, 29 onChange: () => null,
29 onReset: () => null, 30 onReset: () => null,
31 autoFocus: false,
30 } 32 }
31 33
32 constructor(props) { 34 constructor(props) {
33 super(props); 35 super(props);
34 36
35 this.state = { 37 this.state = {
36 value: props.value || props.defaultValue, 38 value: props.value,
37 }; 39 };
38 40
39 this.throttledOnChange = debounce(this.throttledOnChange, this.props.throttleDelay); 41 this.throttledOnChange = debounce(this.throttledOnChange, this.props.throttleDelay);
40 } 42 }
41 43
44 componentDidMount() {
45 const { autoFocus } = this.props;
46
47 if (autoFocus) {
48 this.input.focus();
49 }
50 }
51
42 onChange(e) { 52 onChange(e) {
43 const { throttle, onChange } = this.props; 53 const { throttle, onChange } = this.props;
44 const { value } = e.target; 54 const { value } = e.target;
@@ -52,26 +62,6 @@ export default class SearchInput extends Component {
52 } 62 }
53 } 63 }
54 64
55 onClick() {
56 const { defaultValue } = this.props;
57 const { value } = this.state;
58
59 if (value === defaultValue) {
60 this.setState({ value: '' });
61 }
62
63 this.input.focus();
64 }
65
66 onBlur() {
67 const { defaultValue } = this.props;
68 const { value } = this.state;
69
70 if (value === '') {
71 this.setState({ value: defaultValue });
72 }
73 }
74
75 throttledOnChange(e) { 65 throttledOnChange(e) {
76 const { onChange } = this.props; 66 const { onChange } = this.props;
77 67
@@ -79,8 +69,8 @@ export default class SearchInput extends Component {
79 } 69 }
80 70
81 reset() { 71 reset() {
82 const { defaultValue, onReset } = this.props; 72 const { onReset } = this.props;
83 this.setState({ value: defaultValue }); 73 this.setState({ value: '' });
84 74
85 onReset(); 75 onReset();
86 } 76 }
@@ -88,7 +78,7 @@ export default class SearchInput extends Component {
88 input = null; 78 input = null;
89 79
90 render() { 80 render() {
91 const { className, name, defaultValue } = this.props; 81 const { className, name, placeholder } = this.props;
92 const { value } = this.state; 82 const { value } = this.state;
93 83
94 return ( 84 return (
@@ -101,18 +91,16 @@ export default class SearchInput extends Component {
101 <label 91 <label
102 htmlFor={name} 92 htmlFor={name}
103 className="mdi mdi-magnify" 93 className="mdi mdi-magnify"
104 onClick={() => this.onClick()}
105 /> 94 />
106 <input 95 <input
107 name={name} 96 name={name}
108 type="text" 97 type="text"
98 placeholder={placeholder}
109 value={value} 99 value={value}
110 onChange={e => this.onChange(e)} 100 onChange={e => this.onChange(e)}
111 onClick={() => this.onClick()}
112 onBlur={() => this.onBlur()}
113 ref={(ref) => { this.input = ref; }} 101 ref={(ref) => { this.input = ref; }}
114 /> 102 />
115 {value !== defaultValue && value.length > 0 && ( 103 {value.length > 0 && (
116 <span 104 <span
117 className="mdi mdi-close-circle-outline" 105 className="mdi mdi-close-circle-outline"
118 onClick={() => this.reset()} 106 onClick={() => this.reset()}
diff --git a/src/components/ui/SubscriptionPopup.js b/src/components/ui/SubscriptionPopup.js
index 5aae2c47a..528d02907 100644
--- a/src/components/ui/SubscriptionPopup.js
+++ b/src/components/ui/SubscriptionPopup.js
@@ -58,7 +58,6 @@ export default class SubscriptionPopup extends Component {
58 58
59 autosize 59 autosize
60 src={encodeURI(url)} 60 src={encodeURI(url)}
61 disablewebsecurity
62 onDidNavigate={completeCheck} 61 onDidNavigate={completeCheck}
63 // onNewWindow={(event, url, frameName, options) => 62 // onNewWindow={(event, url, frameName, options) =>
64 // openWindow({ event, url, frameName, options })} 63 // openWindow({ event, url, frameName, options })}
diff --git a/src/config.js b/src/config.js
index b3e00c92c..e66594c59 100644
--- a/src/config.js
+++ b/src/config.js
@@ -11,9 +11,11 @@ export const DEFAULT_APP_SETTINGS = {
11 enableSystemTray: true, 11 enableSystemTray: true,
12 minimizeToSystemTray: false, 12 minimizeToSystemTray: false,
13 showDisabledServices: true, 13 showDisabledServices: true,
14 showMessageBadgeWhenMuted: true,
14 enableSpellchecking: true, 15 enableSpellchecking: true,
15 // spellcheckingLanguage: 'auto', 16 // spellcheckingLanguage: 'auto',
16 locale: 'en-US', 17 locale: '',
18 fallbackLocale: 'en-US',
17 beta: false, 19 beta: false,
18 isAppMuted: false, 20 isAppMuted: false,
19}; 21};
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 7c6ceccd6..e4a9d60c3 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -73,13 +73,11 @@ export default class AppLayoutContainer extends Component {
73 ); 73 );
74 } 74 }
75 75
76 const isMuted = settings.all.isAppMuted || app.isSystemMuted;
77
78 const sidebar = ( 76 const sidebar = (
79 <Sidebar 77 <Sidebar
80 services={services.allDisplayed} 78 services={services.allDisplayed}
81 setActive={setActive} 79 setActive={setActive}
82 isAppMuted={isMuted} 80 isAppMuted={settings.all.isAppMuted}
83 openSettings={openSettings} 81 openSettings={openSettings}
84 closeSettings={closeSettings} 82 closeSettings={closeSettings}
85 reorder={reorder} 83 reorder={reorder}
@@ -89,6 +87,8 @@ export default class AppLayoutContainer extends Component {
89 deleteService={deleteService} 87 deleteService={deleteService}
90 updateService={updateService} 88 updateService={updateService}
91 toggleMuteApp={toggleMuteApp} 89 toggleMuteApp={toggleMuteApp}
90 showMessageBadgeWhenMutedSetting={settings.all.showMessageBadgeWhenMuted}
91 showMessageBadgesEvenWhenMuted={ui.showMessageBadgesEvenWhenMuted}
92 /> 92 />
93 ); 93 );
94 94
@@ -99,7 +99,7 @@ export default class AppLayoutContainer extends Component {
99 setWebviewReference={setWebviewReference} 99 setWebviewReference={setWebviewReference}
100 openWindow={openWindow} 100 openWindow={openWindow}
101 reload={reload} 101 reload={reload}
102 isAppMuted={isMuted} 102 isAppMuted={settings.all.isAppMuted}
103 update={updateService} 103 update={updateService}
104 /> 104 />
105 ); 105 );
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index a1ac8bda3..008c495d4 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -69,6 +69,7 @@ export default class AccountScreen extends Component {
69 render() { 69 render() {
70 const { user, payment, app } = this.props.stores; 70 const { user, payment, app } = this.props.stores;
71 const { openExternalUrl } = this.props.actions.app; 71 const { openExternalUrl } = this.props.actions.app;
72 const { user: userActions } = this.props.actions;
72 73
73 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; 74 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting;
74 const isLoadingOrdersInfo = payment.ordersDataRequest.isExecuting; 75 const isLoadingOrdersInfo = payment.ordersDataRequest.isExecuting;
@@ -89,6 +90,9 @@ export default class AccountScreen extends Component {
89 openExternalUrl={url => openExternalUrl({ url })} 90 openExternalUrl={url => openExternalUrl({ url })}
90 onCloseSubscriptionWindow={() => this.onCloseWindow()} 91 onCloseSubscriptionWindow={() => this.onCloseWindow()}
91 stopMiner={() => this.stopMiner()} 92 stopMiner={() => this.stopMiner()}
93 deleteAccount={userActions.delete}
94 isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting}
95 isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError}
92 /> 96 />
93 ); 97 );
94 } 98 }
@@ -109,6 +113,7 @@ AccountScreen.wrappedComponent.propTypes = {
109 }).isRequired, 113 }).isRequired,
110 user: PropTypes.shape({ 114 user: PropTypes.shape({
111 update: PropTypes.func.isRequired, 115 update: PropTypes.func.isRequired,
116 delete: PropTypes.func.isRequired,
112 }).isRequired, 117 }).isRequired,
113 }).isRequired, 118 }).isRequired,
114}; 119};
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index 191ef447b..c26195a1e 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -26,6 +26,10 @@ const messages = defineMessages({
26 id: 'settings.service.form.enableNotification', 26 id: 'settings.service.form.enableNotification',
27 defaultMessage: '!!!Enable Notifications', 27 defaultMessage: '!!!Enable Notifications',
28 }, 28 },
29 enableBadge: {
30 id: 'settings.service.form.enableBadge',
31 defaultMessage: '!!!Show unread message badges',
32 },
29 enableAudio: { 33 enableAudio: {
30 id: 'settings.service.form.enableAudio', 34 id: 'settings.service.form.enableAudio',
31 defaultMessage: '!!!Enable audio', 35 defaultMessage: '!!!Enable audio',
@@ -42,6 +46,10 @@ const messages = defineMessages({
42 id: 'settings.service.form.indirectMessages', 46 id: 'settings.service.form.indirectMessages',
43 defaultMessage: '!!!Show message badge for all new messages', 47 defaultMessage: '!!!Show message badge for all new messages',
44 }, 48 },
49 icon: {
50 id: 'settings.service.form.icon',
51 defaultMessage: '!!!Custom icon',
52 },
45}); 53});
46 54
47@inject('stores', 'actions') @observer 55@inject('stores', 'actions') @observer
@@ -88,11 +96,22 @@ export default class EditServiceScreen extends Component {
88 value: service.isNotificationEnabled, 96 value: service.isNotificationEnabled,
89 default: true, 97 default: true,
90 }, 98 },
99 isBadgeEnabled: {
100 label: intl.formatMessage(messages.enableBadge),
101 value: service.isBadgeEnabled,
102 default: true,
103 },
91 isMuted: { 104 isMuted: {
92 label: intl.formatMessage(messages.enableAudio), 105 label: intl.formatMessage(messages.enableAudio),
93 value: !service.isMuted, 106 value: !service.isMuted,
94 default: true, 107 default: true,
95 }, 108 },
109 customIcon: {
110 label: intl.formatMessage(messages.icon),
111 value: service.hasCustomUploadedIcon ? service.icon : false,
112 default: null,
113 type: 'file',
114 },
96 }, 115 },
97 }; 116 };
98 117
@@ -118,11 +137,22 @@ export default class EditServiceScreen extends Component {
118 }); 137 });
119 } 138 }
120 139
140 // More fine grained and use case specific validation rules
121 if (recipe.hasTeamId && recipe.hasCustomUrl) { 141 if (recipe.hasTeamId && recipe.hasCustomUrl) {
122 config.fields.team.validate = [oneRequired(['team', 'customUrl'])]; 142 config.fields.team.validate = [oneRequired(['team', 'customUrl'])];
123 config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])]; 143 config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])];
124 } 144 }
125 145
146 // If a service can be hosted and has a teamId or customUrl
147 if (recipe.hasHostedOption && (recipe.hasTeamId || recipe.hasCustomUrl)) {
148 if (config.fields.team) {
149 config.fields.team.validate = [];
150 }
151 if (config.fields.customUrl) {
152 config.fields.customUrl.validate = [url];
153 }
154 }
155
126 if (recipe.hasIndirectMessages) { 156 if (recipe.hasIndirectMessages) {
127 Object.assign(config.fields, { 157 Object.assign(config.fields, {
128 isIndirectMessageBadgeEnabled: { 158 isIndirectMessageBadgeEnabled: {
@@ -179,6 +209,12 @@ export default class EditServiceScreen extends Component {
179 return (<div>Loading...</div>); 209 return (<div>Loading...</div>);
180 } 210 }
181 211
212 if (!recipe) {
213 return (
214 <div>something went wrong</div>
215 );
216 }
217
182 const form = this.prepareForm(recipe, service); 218 const form = this.prepareForm(recipe, service);
183 219
184 return ( 220 return (
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 62e255dab..1fa7ce8bc 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -43,6 +43,10 @@ const messages = defineMessages({
43 id: 'settings.app.form.showDisabledServices', 43 id: 'settings.app.form.showDisabledServices',
44 defaultMessage: '!!!Display disabled services tabs', 44 defaultMessage: '!!!Display disabled services tabs',
45 }, 45 },
46 showMessageBadgeWhenMuted: {
47 id: 'settings.app.form.showMessagesBadgesWhenMuted',
48 defaultMessage: '!!!Show unread message badge when notifications are disabled',
49 },
46 enableSpellchecking: { 50 enableSpellchecking: {
47 id: 'settings.app.form.enableSpellchecking', 51 id: 'settings.app.form.enableSpellchecking',
48 defaultMessage: '!!!Enable spell checking', 52 defaultMessage: '!!!Enable spell checking',
@@ -85,6 +89,7 @@ export default class EditSettingsScreen extends Component {
85 enableSystemTray: settingsData.enableSystemTray, 89 enableSystemTray: settingsData.enableSystemTray,
86 minimizeToSystemTray: settingsData.minimizeToSystemTray, 90 minimizeToSystemTray: settingsData.minimizeToSystemTray,
87 showDisabledServices: settingsData.showDisabledServices, 91 showDisabledServices: settingsData.showDisabledServices,
92 showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted,
88 enableSpellchecking: settingsData.enableSpellchecking, 93 enableSpellchecking: settingsData.enableSpellchecking,
89 // spellcheckingLanguage: settingsData.spellcheckingLanguage, 94 // spellcheckingLanguage: settingsData.spellcheckingLanguage,
90 locale: settingsData.locale, 95 locale: settingsData.locale,
@@ -104,7 +109,7 @@ export default class EditSettingsScreen extends Component {
104 const { intl } = this.context; 109 const { intl } = this.context;
105 110
106 const locales = []; 111 const locales = [];
107 Object.keys(APP_LOCALES).forEach((key) => { 112 Object.keys(APP_LOCALES).sort(Intl.Collator().compare).forEach((key) => {
108 locales.push({ 113 locales.push({
109 value: key, 114 value: key,
110 label: APP_LOCALES[key], 115 label: APP_LOCALES[key],
@@ -154,6 +159,11 @@ export default class EditSettingsScreen extends Component {
154 value: settings.all.showDisabledServices, 159 value: settings.all.showDisabledServices,
155 default: DEFAULT_APP_SETTINGS.showDisabledServices, 160 default: DEFAULT_APP_SETTINGS.showDisabledServices,
156 }, 161 },
162 showMessageBadgeWhenMuted: {
163 label: intl.formatMessage(messages.showMessageBadgeWhenMuted),
164 value: settings.all.showMessageBadgeWhenMuted,
165 default: DEFAULT_APP_SETTINGS.showMessageBadgeWhenMuted,
166 },
157 enableSpellchecking: { 167 enableSpellchecking: {
158 label: intl.formatMessage(messages.enableSpellchecking), 168 label: intl.formatMessage(messages.enableSpellchecking),
159 value: settings.all.enableSpellchecking, 169 value: settings.all.enableSpellchecking,
@@ -183,8 +193,17 @@ export default class EditSettingsScreen extends Component {
183 } 193 }
184 194
185 render() { 195 render() {
186 const { updateStatus, updateStatusTypes } = this.props.stores.app; 196 const {
187 const { checkForUpdates, installUpdate } = this.props.actions.app; 197 updateStatus,
198 cacheSize,
199 updateStatusTypes,
200 isClearingAllCache,
201 } = this.props.stores.app;
202 const {
203 checkForUpdates,
204 installUpdate,
205 clearAllCache,
206 } = this.props.actions.app;
188 const form = this.prepareForm(); 207 const form = this.prepareForm();
189 208
190 return ( 209 return (
@@ -197,6 +216,9 @@ export default class EditSettingsScreen extends Component {
197 noUpdateAvailable={updateStatus === updateStatusTypes.NOT_AVAILABLE} 216 noUpdateAvailable={updateStatus === updateStatusTypes.NOT_AVAILABLE}
198 updateIsReadyToInstall={updateStatus === updateStatusTypes.DOWNLOADED} 217 updateIsReadyToInstall={updateStatus === updateStatusTypes.DOWNLOADED}
199 onSubmit={d => this.onSubmit(d)} 218 onSubmit={d => this.onSubmit(d)}
219 cacheSize={cacheSize}
220 isClearingAllCache={isClearingAllCache}
221 onClearAllCache={clearAllCache}
200 /> 222 />
201 ); 223 );
202 } 224 }
@@ -213,6 +235,7 @@ EditSettingsScreen.wrappedComponent.propTypes = {
213 launchOnStartup: PropTypes.func.isRequired, 235 launchOnStartup: PropTypes.func.isRequired,
214 checkForUpdates: PropTypes.func.isRequired, 236 checkForUpdates: PropTypes.func.isRequired,
215 installUpdate: PropTypes.func.isRequired, 237 installUpdate: PropTypes.func.isRequired,
238 clearAllCache: PropTypes.func.isRequired,
216 }).isRequired, 239 }).isRequired,
217 settings: PropTypes.shape({ 240 settings: PropTypes.shape({
218 update: PropTypes.func.isRequired, 241 update: PropTypes.func.isRequired,
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js
index 8cfe5efbf..12db1bcd3 100644
--- a/src/containers/settings/ServicesScreen.js
+++ b/src/containers/settings/ServicesScreen.js
@@ -53,6 +53,7 @@ export default class ServicesScreen extends Component {
53 goTo={router.push} 53 goTo={router.push}
54 servicesRequestFailed={services.allServicesRequest.wasExecuted && services.allServicesRequest.isError} 54 servicesRequestFailed={services.allServicesRequest.wasExecuted && services.allServicesRequest.isError}
55 retryServicesRequest={() => services.allServicesRequest.reload()} 55 retryServicesRequest={() => services.allServicesRequest.reload()}
56 searchNeedle={services.filterNeedle}
56 /> 57 />
57 ); 58 );
58 } 59 }
diff --git a/src/electron/deepLinking.js b/src/electron/deepLinking.js
new file mode 100644
index 000000000..ef23fd3c5
--- /dev/null
+++ b/src/electron/deepLinking.js
@@ -0,0 +1,7 @@
1export default function handleDeepLink(window, rawUrl) {
2 const url = rawUrl.replace('franz://', '');
3
4 if (!url) return;
5
6 window.webContents.send('navigateFromDeepLink', { url });
7}
diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js
index 7bc193e2d..ba49a2f97 100644
--- a/src/electron/ipc-api/autoUpdate.js
+++ b/src/electron/ipc-api/autoUpdate.js
@@ -1,8 +1,9 @@
1import { app, ipcMain } from 'electron'; 1import { app, ipcMain } from 'electron';
2import { autoUpdater } from 'electron-updater'; 2import { autoUpdater } from 'electron-updater';
3import { isDevMode } from '../../environment.js';
3 4
4export default (params) => { 5export default (params) => {
5 if (process.platform === 'darwin' || process.platform === 'win32') { 6 if (!isDevMode && (process.platform === 'darwin' || process.platform === 'win32')) {
6 // autoUpdater.setFeedURL(updateUrl); 7 // autoUpdater.setFeedURL(updateUrl);
7 ipcMain.on('autoUpdate', (event, args) => { 8 ipcMain.on('autoUpdate', (event, args) => {
8 try { 9 try {
diff --git a/src/helpers/async-helpers.js b/src/helpers/async-helpers.js
new file mode 100644
index 000000000..2ef01ee09
--- /dev/null
+++ b/src/helpers/async-helpers.js
@@ -0,0 +1,5 @@
1/* eslint-disable import/prefer-default-export */
2
3export function sleep(ms = 0) {
4 return new Promise(r => setTimeout(r, ms));
5}
diff --git a/src/helpers/service-helpers.js b/src/helpers/service-helpers.js
new file mode 100644
index 000000000..5f63f6b7c
--- /dev/null
+++ b/src/helpers/service-helpers.js
@@ -0,0 +1,20 @@
1import path from 'path';
2import { remote } from 'electron';
3import fs from 'fs-extra';
4
5const app = remote.app;
6
7export function getServicePartitionsDirectory() {
8 return path.join(app.getPath('userData'), 'Partitions');
9}
10
11export function removeServicePartitionDirectory(id = '', addServicePrefix = false) {
12 const servicePartition = path.join(getServicePartitionsDirectory(), `${addServicePrefix ? 'service-' : ''}${id}`);
13
14 return fs.remove(servicePartition);
15}
16
17export async function getServiceIdsFromPartitions() {
18 const files = await fs.readdir(getServicePartitionsDirectory());
19 return files.filter(n => n !== '__chrome_extension');
20}
diff --git a/src/helpers/webview-ime-focus-helpers.js b/src/helpers/webview-ime-focus-helpers.js
deleted file mode 100644
index 2593a5f26..000000000
--- a/src/helpers/webview-ime-focus-helpers.js
+++ /dev/null
@@ -1,38 +0,0 @@
1module.exports.releaseDocumentFocus = () => {
2 const element = document.createElement('span');
3 document.body.appendChild(element);
4
5 const range = document.createRange();
6 range.setStart(element, 0);
7
8 const selection = window.getSelection();
9 selection.removeAllRanges();
10 selection.addRange(range);
11 selection.removeAllRanges();
12
13 document.body.removeChild(element);
14};
15
16module.exports.claimDocumentFocus = () => {
17 const { activeElement } = document;
18 const selection = window.getSelection();
19
20 let selectionStart;
21 let selectionEnd;
22 let range;
23
24 if (activeElement) ({ selectionStart, selectionEnd } = activeElement);
25 if (selection.rangeCount) range = selection.getRangeAt(0);
26
27 const restoreOriginalSelection = () => {
28 if (selectionStart >= 0 && selectionEnd >= 0) {
29 activeElement.selectionStart = selectionStart;
30 activeElement.selectionEnd = selectionEnd;
31 } else if (range) {
32 selection.addRange(range);
33 }
34 };
35
36 exports.releaseDocumentFocus();
37 window.requestAnimationFrame(restoreOriginalSelection);
38};
diff --git a/src/i18n/languages.js b/src/i18n/languages.js
index 677b09405..34b369da7 100644
--- a/src/i18n/languages.js
+++ b/src/i18n/languages.js
@@ -1,24 +1,30 @@
1export const APP_LOCALES = { 1export const APP_LOCALES = {
2 'en-US': 'English', 2 'en-US': 'English',
3 ca: 'Catalan', 3 ca: 'Català',
4 'zh-HANT': 'Chinese (Traditional)', 4 'zh-HANT': '中文 (Chinese Traditional)',
5 cs: 'Czech', 5 cs: 'Čeština',
6 nl: 'Dutch', 6 nl: 'Nederlands',
7 fr: 'French', 7 fr: 'Français',
8 ka: 'Georgian', 8 ka: 'ქáƒáƒ áƒ—ული (Georgian)',
9 de: 'German', 9 de: 'Deutsch',
10 hu: 'Hungarian', 10 hu: 'Magyar',
11 id: 'Indonesian', 11 id: 'Bahasa Indonesia',
12 ga: 'Irish', 12 ga: 'Gaeilge',
13 it: 'Italian', 13 it: 'Italiano',
14 ja: 'Japanese', 14 ja: '日本語 (Japanese)',
15 pl: 'Polish', 15 pl: 'Polski',
16 pt: 'Portuguese', 16 pt: 'Português',
17 'pt-BR': 'Portuguese (Brazil)', 17 'pt-BR': 'Português (Brazil)',
18 ru: 'Russian', 18 ru: 'РуÑÑкий (Russian)',
19 sk: 'Slovak', 19 sk: 'SlovenÄina',
20 uk: 'Ukrainian', 20 uk: 'УкраїнÑька (Ukrainian)',
21 'nl-BE': 'Vlaams', 21 'nl-BE': 'Vlaams',
22 el: 'ελληνικά (Greek)',
23 hr: 'Hrvatski',
24 sr: 'Srpski',
25 tr: 'Türkçe',
26 'zh-TW': 'å°èªž (Chinese Taiwan)',
27 es: 'Español',
22}; 28};
23 29
24export default APP_LOCALES; 30export default APP_LOCALES;
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index 6019d8023..5c62753cc 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -5,7 +5,7 @@
5 "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", 5 "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5",
6 "import.skip.label" : "Vull afegir serveis manualment", 6 "import.skip.label" : "Vull afegir serveis manualment",
7 "import.submit.label" : "Importar serveis", 7 "import.submit.label" : "Importar serveis",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Que hi ha de nou?",
9 "infobar.buttonInstallUpdate" : "Reinicia i instal·la l'actualització", 9 "infobar.buttonInstallUpdate" : "Reinicia i instal·la l'actualització",
10 "infobar.buttonReloadServices" : "Recarrega serveis", 10 "infobar.buttonReloadServices" : "Recarrega serveis",
11 "infobar.requiredRequestsFailed" : "No s'han pogut carregar els serveis i la informació de l'usuari", 11 "infobar.requiredRequestsFailed" : "No s'han pogut carregar els serveis i la informació de l'usuari",
@@ -48,8 +48,12 @@
48 "settings.account.accountType.basic" : "Compte bàsic", 48 "settings.account.accountType.basic" : "Compte bàsic",
49 "settings.account.accountType.premium" : "Compte de Suport Premium", 49 "settings.account.accountType.premium" : "Compte de Suport Premium",
50 "settings.account.buttonSave" : "Actualitzar el perfil", 50 "settings.account.buttonSave" : "Actualitzar el perfil",
51 "settings.account.deleteAccount" : "Esborrar compte",
52 "settings.account.deleteEmailSent" : "Has rebut un correu electrònic amb un enllaç per confirmar l'eliminació del compte. El teu compte i la seva informació no podran ser restaurats!",
53 "settings.account.deleteInfo" : "Si ja no necessites el teu compte de Franz, pots esborrar el teu compte i tota la seva informació emmagatzemada aquí.",
51 "settings.account.headline" : "Compte", 54 "settings.account.headline" : "Compte",
52 "settings.account.headlineAccount" : "Informació del compte", 55 "settings.account.headlineAccount" : "Informació del compte",
56 "settings.account.headlineDangerZone" : "Zona de perill",
53 "settings.account.headlineInvoices" : "Factures", 57 "settings.account.headlineInvoices" : "Factures",
54 "settings.account.headlinePassword" : "Canvia la contrasenya", 58 "settings.account.headlinePassword" : "Canvia la contrasenya",
55 "settings.account.headlineProfile" : "Actualitza el perfil", 59 "settings.account.headlineProfile" : "Actualitza el perfil",
@@ -64,8 +68,10 @@
64 "settings.account.successInfo" : "S'han desat els canvis", 68 "settings.account.successInfo" : "S'han desat els canvis",
65 "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho", 69 "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho",
66 "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informació de l'usuari", 70 "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informació de l'usuari",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització", 72 "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització",
68 "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions", 73 "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Versió actual:", 75 "settings.app.currentVersion" : "Versió actual:",
70 "settings.app.form.autoLaunchInBackground" : "Obrir en segon plà", 76 "settings.app.form.autoLaunchInBackground" : "Obrir en segon plà",
71 "settings.app.form.autoLaunchOnStart" : "Iniciar Franz a l'inici", 77 "settings.app.form.autoLaunchOnStart" : "Iniciar Franz a l'inici",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "Minimitza Franz a la safata del sistema", 82 "settings.app.form.minimizeToSystemTray" : "Minimitza Franz a la safata del sistema",
77 "settings.app.form.runInBackground" : "Mantén a Franz en segon pla en tancar la finestra", 83 "settings.app.form.runInBackground" : "Mantén a Franz en segon pla en tancar la finestra",
78 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats", 84 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra la insígnia de missatges no llegits quan les notificacions estiguin desactivades",
79 "settings.app.headline" : "Configuració", 86 "settings.app.headline" : "Configuració",
80 "settings.app.headlineAdvanced" : "Avançat", 87 "settings.app.headlineAdvanced" : "Avançat",
81 "settings.app.headlineAppearance" : "Aparença", 88 "settings.app.headlineAppearance" : "Aparença",
@@ -83,7 +90,8 @@
83 "settings.app.headlineLanguage" : "Idioma", 90 "settings.app.headlineLanguage" : "Idioma",
84 "settings.app.headlineUpdates" : "Actualitzacions", 91 "settings.app.headlineUpdates" : "Actualitzacions",
85 "settings.app.restartRequired" : "Els canvis requereixen reiniciar", 92 "settings.app.restartRequired" : "Els canvis requereixen reiniciar",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Ajuda'ns a traduir Franz en la teva llengua.",
87 "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...", 95 "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...",
88 "settings.app.updateStatusSearching" : "Està buscant actualitzacions", 96 "settings.app.updateStatusSearching" : "Està buscant actualitzacions",
89 "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Franz", 97 "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Tots els serveis", 103 "settings.recipes.all" : "Tots els serveis",
96 "settings.recipes.dev" : "Desenvolupament", 104 "settings.recipes.dev" : "Desenvolupament",
97 "settings.recipes.headline" : "Serveis disponibles", 105 "settings.recipes.headline" : "Serveis disponibles",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Trobes a faltar algun servei?",
99 "settings.recipes.mostPopular" : "Els més populars", 107 "settings.recipes.mostPopular" : "Els més populars",
100 "settings.recipes.nothingFound" : "Ho sentim, però cap servei coincideix amb el terme cercat.", 108 "settings.recipes.nothingFound" : "Ho sentim, però cap servei coincideix amb el terme cercat.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "El servei s'ha afegit correctament", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "El servei s'ha afegit correctament",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "Tornar als serveis", 111 "settings.service.error.goBack" : "Tornar als serveis",
103 "settings.service.error.headline" : "Error", 112 "settings.service.error.headline" : "Error",
104 "settings.service.error.message" : "No s'ha pogut carregar la recepta del servei.", 113 "settings.service.error.message" : "No s'ha pogut carregar la recepta del servei.",
@@ -111,8 +120,15 @@
111 "settings.service.form.deleteButton" : "Suprimeix el servei", 120 "settings.service.form.deleteButton" : "Suprimeix el servei",
112 "settings.service.form.editServiceHeadline" : "Edita {name}", 121 "settings.service.form.editServiceHeadline" : "Edita {name}",
113 "settings.service.form.enableAudio" : "Activa l'àudio", 122 "settings.service.form.enableAudio" : "Activa l'àudio",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Activa les notificacions", 124 "settings.service.form.enableNotification" : "Activa les notificacions",
115 "settings.service.form.enableService" : "Activa el servei", 125 "settings.service.form.enableService" : "Activa el servei",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "General",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Se't notificarà sobre tots els missatges nous en un canal, no només @usuari, @canal, @aquí ...", 132 "settings.service.form.indirectMessageInfo" : "Se't notificarà sobre tots els missatges nous en un canal, no només @usuari, @canal, @aquí ...",
117 "settings.service.form.indirectMessages" : "Mostra la insígnia de missatge per a tots els missatges nous", 133 "settings.service.form.indirectMessages" : "Mostra la insígnia de missatge per a tots els missatges nous",
118 "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificació i reproducció d'àudio es silenciaran", 134 "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificació i reproducció d'àudio es silenciaran",
@@ -121,6 +137,7 @@
121 "settings.service.form.tabHosted" : "Allotjat", 137 "settings.service.form.tabHosted" : "Allotjat",
122 "settings.service.form.tabOnPremise" : "Allotjat per si mateix â­ï¸", 138 "settings.service.form.tabOnPremise" : "Allotjat per si mateix â­ï¸",
123 "settings.service.form.team" : "Equip", 139 "settings.service.form.team" : "Equip",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Els vostres serveis", 141 "settings.service.form.yourServices" : "Els vostres serveis",
125 "settings.services.deletedInfo" : "S'ha eliminat el servei", 142 "settings.services.deletedInfo" : "S'ha eliminat el servei",
126 "settings.services.discoverServices" : "Descobrir serveis", 143 "settings.services.discoverServices" : "Descobrir serveis",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "Cognoms", 157 "settings.user.form.lastname" : "Cognoms",
141 "settings.user.form.newPassword" : "Nova contrasenya", 158 "settings.user.form.newPassword" : "Nova contrasenya",
142 "sidebar.addNewService" : "Afegeix nou servei", 159 "sidebar.addNewService" : "Afegeix nou servei",
143 "sidebar.mute" : "Desactiva l'àudio", 160 "sidebar.muteApp" : "Desactivar notificacions i àudio",
144 "sidebar.settings" : "Configuració", 161 "sidebar.settings" : "Configuració",
145 "sidebar.unmute" : "Activa l'àudio", 162 "sidebar.unmuteApp" : "Activar notificacions i àudio",
146 "signup.company.label" : "Empresa", 163 "signup.company.label" : "Empresa",
147 "signup.email.label" : "Correu electrònic", 164 "signup.email.label" : "Correu electrònic",
148 "signup.emailDuplicate" : "Ja existeix un usuari amb aquesta adreça de correu electrònic", 165 "signup.emailDuplicate" : "Ja existeix un usuari amb aquesta adreça de correu electrònic",
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index 122fc9b53..833c3c7d5 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -1,55 +1,59 @@
1{ 1{
2 "global.api.unhealthy" : "Nemůžeme Franz připojit k online službám", 2 "global.api.unhealthy" : "Nemůžeme Franz připojit k online službám",
3 "global.notConnectedToTheInternet" : "Nejste připojen k internetu.", 3 "global.notConnectedToTheInternet" : "Připojení k internetu není k dispozici.",
4 "import.headline" : "Importovat služby z Franz 4", 4 "import.headline" : "Importovat služby z Franz 4",
5 "import.notSupportedHeadline" : "Služby nejsou podporovány v verzi Franz 5", 5 "import.notSupportedHeadline" : "Služby nejsou podporovány ve verzi Franz 5",
6 "import.skip.label" : "Chci pÅ™idat služby manuálnÄ›", 6 "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›",
7 "import.submit.label" : "Importovat služby", 7 "import.submit.label" : "Importovat služby",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Co je nového?",
9 "infobar.buttonInstallUpdate" : "Restartovat a instalovat aktualizaci", 9 "infobar.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace",
10 "infobar.buttonReloadServices" : "Obnovit služby", 10 "infobar.buttonReloadServices" : "Obnovit služby",
11 "infobar.requiredRequestsFailed" : "Není možné nahrát služby a informace o uživateli", 11 "infobar.requiredRequestsFailed" : "Není možné nahrát služby a informace o uživateli",
12 "infobar.servicesUpdated" : "Vaše služby byly aktualizovány", 12 "infobar.servicesUpdated" : "Vaše služby byly aktualizovány",
13 "infobar.updateAvailable" : "Nová aktualizace Franz je k dispozici", 13 "infobar.updateAvailable" : "Nová aktualizace Franz je k dispozici",
14 "invite.email.label" : "E-mailová adresa", 14 "invite.email.label" : "Email",
15 "invite.headline.friends" : "Pozvěte 3 přátele nebo kolegy", 15 "invite.headline.friends" : "Pozvěte 3 přátele nebo kolegy",
16 "invite.name.label" : "Jméno", 16 "invite.name.label" : "Jméno",
17 "invite.skip.label" : "Udělám to později", 17 "invite.skip.label" : "Nechat na později",
18 "invite.submit.label" : "Poslat pozvánky", 18 "invite.submit.label" : "Poslat pozvánky",
19 "login.email.label" : "E-mailová adresa", 19 "login.email.label" : "Email",
20 "login.headline" : "Přihlásit se", 20 "login.headline" : "Přihlásit se",
21 "login.invalidCredentials" : "E-mail nebo heslo nesouhlasí", 21 "login.invalidCredentials" : "Email nebo heslo nesouhlasí",
22 "login.link.password" : "Obnovit heslo", 22 "login.link.password" : "Obnovit heslo",
23 "login.link.signup" : "VytvoÅ™it uživatelský úÄet zdarma", 23 "login.link.signup" : "VytvoÅ™it uživatelský úÄet zdarma",
24 "login.password.label" : "Heslo", 24 "login.password.label" : "Heslo",
25 "login.serverLogout" : "Sezení vypršelo, prosím přihlaste se znovu.", 25 "login.serverLogout" : "Sezení vypršelo, je třeba se znovu přihlásit.",
26 "login.submit.label" : "Přihlásit se", 26 "login.submit.label" : "Přihlásit se",
27 "login.tokenExpired" : "Sezení vypršelo, prosím přihlaste se znovu", 27 "login.tokenExpired" : "Sezení vypršelo, prosím přihlaste se znovu",
28 "password.email.label" : "E-mailová adresa", 28 "password.email.label" : "E-mailová adresa",
29 "password.headline" : "Obnovit heslo", 29 "password.headline" : "Obnovit heslo",
30 "password.link.login" : "PÅ™ihlášení do vaÅ¡eho úÄtu", 30 "password.link.login" : "PÅ™ihlásit se k úÄtu",
31 "password.link.signup" : "VytvoÅ™it uživatelský úÄet zdarma", 31 "password.link.signup" : "VytvoÅ™it uživatelský úÄet zdarma",
32 "password.noUser" : "Uživatel s touto e-mailovou adresou nebyl nalezen", 32 "password.noUser" : "Pro emailovou adresu nebyl nalezený žádný uživatel",
33 "password.submit.label" : "Odeslat", 33 "password.submit.label" : "Odeslat",
34 "password.successInfo" : "Prosím, zkontrolujte svůj e-mail", 34 "password.successInfo" : "Prosím, zkontrolujte svůj e-mail",
35 "pricing.headline" : "Podpořte Franz", 35 "pricing.headline" : "Podpořit Franz",
36 "pricing.link.skipPayment" : "Nechci podpořit vývoj skvělé aplikace Franz.", 36 "pricing.link.skipPayment" : "Nechci podporovat vývoj aplikace Franz.",
37 "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz", 37 "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz",
38 "pricing.support.label" : "Vyberte váš plán podpory", 38 "pricing.support.label" : "Vyberte váš plán podpory",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "NaÄíst znovu {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Pokus o automatické obnovení {name} za {seconds} sekund",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Ale ne!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} způsobil chybu.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Zapnout {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} je vypnutý",
45 "services.getStarted" : "ZaÄnÄ›me", 45 "services.getStarted" : "ZaÄnÄ›me",
46 "services.welcome" : "Vítejte v programu Franz", 46 "services.welcome" : "Vítejte v programu Franz",
47 "settings.account.account.editButton" : "Upravit úÄet", 47 "settings.account.account.editButton" : "Upravit úÄet",
48 "settings.account.accountType.basic" : "Základní úÄet", 48 "settings.account.accountType.basic" : "Základní úÄet",
49 "settings.account.accountType.premium" : "Prémiový úÄet podporovatele", 49 "settings.account.accountType.premium" : "Prémiový úÄet podporovatele",
50 "settings.account.buttonSave" : "Aktualizovat profil", 50 "settings.account.buttonSave" : "Aktualizovat profil",
51 "settings.account.deleteAccount" : "Smazat úÄet",
52 "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!",
53 "settings.account.deleteInfo" : "Pokud již nepotÅ™ebujete váš Franz úÄet, můžete zde váš úÄet, a vÅ¡echna data v nÄ›m, smazat.",
51 "settings.account.headline" : "ÚÄet", 54 "settings.account.headline" : "ÚÄet",
52 "settings.account.headlineAccount" : "Informace o úÄtu", 55 "settings.account.headlineAccount" : "Informace o úÄtu",
56 "settings.account.headlineDangerZone" : "NebezpeÄná zóna",
53 "settings.account.headlineInvoices" : "Faktury", 57 "settings.account.headlineInvoices" : "Faktury",
54 "settings.account.headlinePassword" : "Změnit heslo", 58 "settings.account.headlinePassword" : "Změnit heslo",
55 "settings.account.headlineProfile" : "Aktualizovat profil", 59 "settings.account.headlineProfile" : "Aktualizovat profil",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "Vaše změny byly uloženy", 68 "settings.account.successInfo" : "Vaše změny byly uloženy",
65 "settings.account.tryReloadUserInfoRequest" : "Zkusit opět", 69 "settings.account.tryReloadUserInfoRequest" : "Zkusit opět",
66 "settings.account.userInfoRequestFailed" : "Nelze naÄíst informace o uživateli.", 70 "settings.account.userInfoRequestFailed" : "Nelze naÄíst informace o uživateli.",
71 "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti",
67 "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", 72 "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace",
68 "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace", 73 "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace",
74 "settings.app.cacheInfo" : "Franz momentálně používá {size} místa na disku.",
69 "settings.app.currentVersion" : "Aktuální verze:", 75 "settings.app.currentVersion" : "Aktuální verze:",
70 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadí", 76 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadí",
71 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu", 77 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu",
72 "settings.app.form.beta" : "Zahrnout beta verze", 78 "settings.app.form.beta" : "Zahrnout beta verze",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu",
74 "settings.app.form.enableSystemTray" : "Zobrazit Franz v systémové liště", 80 "settings.app.form.enableSystemTray" : "Zobrazit Franz v systémové liště",
75 "settings.app.form.language" : "Jazyk", 81 "settings.app.form.language" : "Jazyk",
76 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Franz do systémové lišty", 82 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Franz do systémové lišty",
77 "settings.app.form.runInBackground" : "Ponechat Franze v pozadí při zavírání okna", 83 "settings.app.form.runInBackground" : "Ponechat Franze v pozadí při zavírání okna",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Zobrazit záložky vypnutých služeb",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepÅ™eÄtené zprávy když jsou upozornÄ›ní vypnutá",
79 "settings.app.headline" : "Nastavení", 86 "settings.app.headline" : "Nastavení",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "PokroÄilé",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Vzhled",
82 "settings.app.headlineGeneral" : "Obecné", 89 "settings.app.headlineGeneral" : "Obecné",
83 "settings.app.headlineLanguage" : "Jazyk", 90 "settings.app.headlineLanguage" : "Jazyk",
84 "settings.app.headlineUpdates" : "Aktualizace", 91 "settings.app.headlineUpdates" : "Aktualizace",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Změny vyžadují restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Mezipaměť",
94 "settings.app.translationHelp" : "Pomozte nám přeložit Franz do svého jazyka.",
87 "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahování...", 95 "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahování...",
88 "settings.app.updateStatusSearching" : "Hledá aktualizace", 96 "settings.app.updateStatusSearching" : "Hledá aktualizace",
89 "settings.app.updateStatusUpToDate" : "Používáte nejnovější verzi programu Franz", 97 "settings.app.updateStatusUpToDate" : "Používáte nejnovější verzi programu Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Všechny služby", 103 "settings.recipes.all" : "Všechny služby",
96 "settings.recipes.dev" : "Vývoj", 104 "settings.recipes.dev" : "Vývoj",
97 "settings.recipes.headline" : "Dostupné služby", 105 "settings.recipes.headline" : "Dostupné služby",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Chybějící služba?",
99 "settings.recipes.mostPopular" : "Nejpopulárnější", 107 "settings.recipes.mostPopular" : "Nejpopulárnější",
100 "settings.recipes.nothingFound" : "Je nám líto, ale žádná služba neodpovídá vašemu hledanému výrazu.", 108 "settings.recipes.nothingFound" : "Je nám líto, ale žádná služba neodpovídá vašemu hledanému výrazu.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba byla úspěšně přidána", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba byla úspěšně přidána",
110 "settings.searchService" : "Vyhledat službu",
102 "settings.service.error.goBack" : "Zpět na služby", 111 "settings.service.error.goBack" : "Zpět na služby",
103 "settings.service.error.headline" : "Chyba", 112 "settings.service.error.headline" : "Chyba",
104 "settings.service.error.message" : "Nelze naÄíst službu.", 113 "settings.service.error.message" : "Nelze naÄíst službu.",
@@ -110,24 +119,32 @@
110 "settings.service.form.customUrlValidationError" : "Nepodařilo se ověřit vlastní server {name}.", 119 "settings.service.form.customUrlValidationError" : "Nepodařilo se ověřit vlastní server {name}.",
111 "settings.service.form.deleteButton" : "Odstranit službu", 120 "settings.service.form.deleteButton" : "Odstranit službu",
112 "settings.service.form.editServiceHeadline" : "Upravit {name}", 121 "settings.service.form.editServiceHeadline" : "Upravit {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Zapnout zvuk",
123 "settings.service.form.enableBadge" : "Ukázat odznaky nepÅ™eÄtených zpráv",
114 "settings.service.form.enableNotification" : "Povolit upozornění", 124 "settings.service.form.enableNotification" : "Povolit upozornění",
115 "settings.service.form.enableService" : "Povolit službu", 125 "settings.service.form.enableService" : "Povolit službu",
126 "settings.service.form.headlineBadges" : "Odznaky nepÅ™eÄtených zpráv",
127 "settings.service.form.headlineGeneral" : "Obecné",
128 "settings.service.form.headlineNotifications" : "Upozornění",
129 "settings.service.form.icon" : "Vlastní ikona",
130 "settings.service.form.iconDelete" : "Smazat",
131 "settings.service.form.iconUpload" : "Přesuňte váš obrázek, nebo klepněte sem",
116 "settings.service.form.indirectMessageInfo" : "Budete informováni o všech nových zprávách v kanálu, nikoliv pouze @název, @kanál, @kde, ...", 132 "settings.service.form.indirectMessageInfo" : "Budete informováni o všech nových zprávách v kanálu, nikoliv pouze @název, @kanál, @kde, ...",
117 "settings.service.form.indirectMessages" : "Zobrazovat znak zprávy pro všechny nové zprávy", 133 "settings.service.form.indirectMessages" : "Zobrazovat znak zprávy pro všechny nové zprávy",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Pokud je vypnuto, všechny zvuky notifikací a jiného audia budou ztišeny",
119 "settings.service.form.name" : "Jméno", 135 "settings.service.form.name" : "Jméno",
120 "settings.service.form.saveButton" : "Uložit službu", 136 "settings.service.form.saveButton" : "Uložit službu",
121 "settings.service.form.tabHosted" : "Hostováno", 137 "settings.service.form.tabHosted" : "Hostováno",
122 "settings.service.form.tabOnPremise" : "SamostatnÄ› hostované â­ï¸", 138 "settings.service.form.tabOnPremise" : "SamostatnÄ› hostované â­ï¸",
123 "settings.service.form.team" : "Tým", 139 "settings.service.form.team" : "Tým",
140 "settings.service.form.useHostedService" : "Použijte hostovanou {name} službu.",
124 "settings.service.form.yourServices" : "Vaše služby", 141 "settings.service.form.yourServices" : "Vaše služby",
125 "settings.services.deletedInfo" : "Služba byla odstraněna", 142 "settings.services.deletedInfo" : "Služba byla odstraněna",
126 "settings.services.discoverServices" : "Objevte služby", 143 "settings.services.discoverServices" : "Objevte služby",
127 "settings.services.headline" : "Vaše služby", 144 "settings.services.headline" : "Vaše služby",
128 "settings.services.noServicesAdded" : "Doposud jste nepřidali žádné služby.", 145 "settings.services.noServicesAdded" : "Doposud jste nepřidali žádné služby.",
129 "settings.services.tooltip.isDisabled" : "Služba je zakázána", 146 "settings.services.tooltip.isDisabled" : "Služba je zakázána",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Všechny zvuky jsou ztišeny",
131 "settings.services.tooltip.notificationsDisabled" : "Oznámení jsou zakázána", 148 "settings.services.tooltip.notificationsDisabled" : "Oznámení jsou zakázána",
132 "settings.services.updatedInfo" : "Vaše změny byly uloženy", 149 "settings.services.updatedInfo" : "Vaše změny byly uloženy",
133 "settings.user.form.accountType.company" : "SpoleÄnost", 150 "settings.user.form.accountType.company" : "SpoleÄnost",
@@ -136,26 +153,26 @@
136 "settings.user.form.accountType.non-profit" : "Nezisková organizace", 153 "settings.user.form.accountType.non-profit" : "Nezisková organizace",
137 "settings.user.form.currentPassword" : "Aktuální heslo", 154 "settings.user.form.currentPassword" : "Aktuální heslo",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Jméno",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Příjmení",
141 "settings.user.form.newPassword" : "Nové heslo", 158 "settings.user.form.newPassword" : "Nové heslo",
142 "sidebar.addNewService" : "Přidat novou službu", 159 "sidebar.addNewService" : "Přidat novou službu",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Vypnout upozornění a zvuky",
144 "sidebar.settings" : "Nastavení", 161 "sidebar.settings" : "Nastavení",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Zapnout upozornění a zvuky",
146 "signup.company.label" : "SpoleÄnost", 163 "signup.company.label" : "SpoleÄnost",
147 "signup.email.label" : "Emailová adresa", 164 "signup.email.label" : "Emailová adresa",
148 "signup.emailDuplicate" : "Uživatel s touto emailovou adresou již existuje", 165 "signup.emailDuplicate" : "Uživatel s touto emailovou adresou již existuje",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Jméno",
150 "signup.headline" : "Přihlásit se", 167 "signup.headline" : "Přihlásit se",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Příjmení",
152 "signup.legal.info" : "VytvoÅ™ením úÄtu Franz souhlasíte s", 169 "signup.legal.info" : "VytvoÅ™ením úÄtu Franz souhlasíte s",
153 "signup.legal.privacy" : "Prohlášení o ochraně soukromí", 170 "signup.legal.privacy" : "Prohlášení o ochraně soukromí",
154 "signup.legal.terms" : "Podmínky služby", 171 "signup.legal.terms" : "Podmínky služby",
155 "signup.link.login" : "Již máte úÄet, pÅ™ihlásit se?", 172 "signup.link.login" : "Již máte úÄet, pÅ™ihlásit se?",
156 "signup.password.label" : "Heslo", 173 "signup.password.label" : "Heslo",
157 "signup.submit.label" : "VytvoÅ™it úÄet", 174 "signup.submit.label" : "VytvoÅ™it úÄet",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Pro obyvatelé EU: mohou být aplikovány lokální daně",
159 "subscription.features.ads" : "Žádné reklamy, nikdy!", 176 "subscription.features.ads" : "Žádné reklamy, nikdy!",
160 "subscription.features.comingSoon" : "již brzy", 177 "subscription.features.comingSoon" : "již brzy",
161 "subscription.features.customServices" : "Privátní služby pro vás a váš tým", 178 "subscription.features.customServices" : "Privátní služby pro vás a váš tým",
@@ -178,13 +195,13 @@
178 "subscriptionPopup.buttonCancel" : "Zrušit", 195 "subscriptionPopup.buttonCancel" : "Zrušit",
179 "subscriptionPopup.buttonDone" : "DokonÄit", 196 "subscriptionPopup.buttonDone" : "DokonÄit",
180 "tabs.item.deleteService" : "Odstranit službu", 197 "tabs.item.deleteService" : "Odstranit službu",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Vypnout zvuk",
182 "tabs.item.disableNotifications" : "Zakázat upozornění", 199 "tabs.item.disableNotifications" : "Zakázat upozornění",
183 "tabs.item.disableService" : "Zakázat službu", 200 "tabs.item.disableService" : "Zakázat službu",
184 "tabs.item.edit" : "Upravit", 201 "tabs.item.edit" : "Upravit",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Zapnout zvuk",
186 "tabs.item.enableNotification" : "Povolit oznamování", 203 "tabs.item.enableNotification" : "Povolit oznamování",
187 "tabs.item.enableService" : "Povolit službu", 204 "tabs.item.enableService" : "Zapnout službu",
188 "tabs.item.reload" : "Obnovit", 205 "tabs.item.reload" : "Obnovit",
189 "welcome.loginButton" : "PÅ™ihlášení do vaÅ¡eho úÄtu", 206 "welcome.loginButton" : "PÅ™ihlášení do vaÅ¡eho úÄtu",
190 "welcome.signupButton" : "VytvoÅ™it úÄet zdarma", 207 "welcome.signupButton" : "VytvoÅ™it úÄet zdarma",
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index cdfce9d55..1ea0554ba 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -1,21 +1,21 @@
1{ 1{
2 "global.api.unhealthy" : "Verbindung mit dem Franz Online Service fehlgeschlagen.", 2 "global.api.unhealthy" : "Verbindung mit dem Franz Online Service fehlgeschlagen",
3 "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", 3 "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.",
4 "import.headline" : "Importiere deine Franz 4 Dienste", 4 "import.headline" : "Deine Franz 4 Dienste importieren",
5 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden", 5 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden",
6 "import.skip.label" : "Ich möchte meine Dienste manuell hinzufügen", 6 "import.skip.label" : "Ich möchte Dienste selbst hinzufügen",
7 "import.submit.label" : "Dienste importieren", 7 "import.submit.label" : "Dienste importieren",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Was gibt es neues?",
9 "infobar.buttonInstallUpdate" : "Neustarten & Update installieren", 9 "infobar.buttonInstallUpdate" : "Neustarten & Update installieren",
10 "infobar.buttonReloadServices" : "Dienste neu laden", 10 "infobar.buttonReloadServices" : "Dienste neuladen",
11 "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden", 11 "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden",
12 "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.", 12 "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.",
13 "infobar.updateAvailable" : "Eine neue Version von Franz ist verfügbar.", 13 "infobar.updateAvailable" : "Eine neue Version von Franz ist verfügbar.",
14 "invite.email.label" : "E-Mail Adresse", 14 "invite.email.label" : "E-Mail Adresse",
15 "invite.headline.friends" : "Lade 3 Freunde oder Kollegen ein", 15 "invite.headline.friends" : "3 Freunde oder Kollegen einladen",
16 "invite.name.label" : "Name", 16 "invite.name.label" : "Name",
17 "invite.skip.label" : "Ich möchte das später tun", 17 "invite.skip.label" : "Ich möchte das später tun",
18 "invite.submit.label" : "Einladungen senden", 18 "invite.submit.label" : "Einladungen schicken",
19 "login.email.label" : "E-Mail Adresse", 19 "login.email.label" : "E-Mail Adresse",
20 "login.headline" : "Anmelden", 20 "login.headline" : "Anmelden",
21 "login.invalidCredentials" : "E-Mail Adresse oder Passwort ungültig", 21 "login.invalidCredentials" : "E-Mail Adresse oder Passwort ungültig",
@@ -27,17 +27,17 @@
27 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", 27 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.",
28 "password.email.label" : "E-Mail Adresse", 28 "password.email.label" : "E-Mail Adresse",
29 "password.headline" : "Passwort zurücksetzen", 29 "password.headline" : "Passwort zurücksetzen",
30 "password.link.login" : "Anmelden", 30 "password.link.login" : "An deinem Konto anmelden",
31 "password.link.signup" : "Kostenloses Konto erstellen", 31 "password.link.signup" : "Kostenloses Konto erstellen",
32 "password.noUser" : "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.", 32 "password.noUser" : "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
33 "password.submit.label" : "Absenden", 33 "password.submit.label" : "Absenden",
34 "password.successInfo" : "Wir haben dir ein E-Mail mit weiteren Anweisungen geschickt.", 34 "password.successInfo" : "Wir haben dir eine E-Mail mit weiteren Anweisungen geschickt.",
35 "pricing.headline" : "Unterstütze Franz", 35 "pricing.headline" : "Franz unterstützen",
36 "pricing.link.skipPayment" : "Ich möchte die Entwicklung von Franz nicht unterstützen.", 36 "pricing.link.skipPayment" : "Ich möchte die Entwicklung von Franz nicht unterstützen.",
37 "pricing.submit.label" : "Ich möchte die Entwicklung von Franz unterstützen.", 37 "pricing.submit.label" : "Ich möchte die Entwicklung von Franz unterstützen.",
38 "pricing.support.label" : "Wie möchtest du Franz unterstützen?", 38 "pricing.support.label" : "Wie möchtest du Franz unterstützen?",
39 "service.crashHandler.action" : "Neu laden", 39 "service.crashHandler.action" : "{name} neuladen",
40 "service.crashHandler.autoReload" : "{name} wird automatisch wiederhergestellt in {seconds} sekunden", 40 "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt",
41 "service.crashHandler.headline" : "Oh nein!", 41 "service.crashHandler.headline" : "Oh nein!",
42 "service.crashHandler.text" : "{name} hat einen Fehler verursacht.", 42 "service.crashHandler.text" : "{name} hat einen Fehler verursacht.",
43 "service.disabledHandler.action" : "{name} aktivieren", 43 "service.disabledHandler.action" : "{name} aktivieren",
@@ -48,24 +48,30 @@
48 "settings.account.accountType.basic" : "Basis Konto", 48 "settings.account.accountType.basic" : "Basis Konto",
49 "settings.account.accountType.premium" : "Premium-Supporter Konto", 49 "settings.account.accountType.premium" : "Premium-Supporter Konto",
50 "settings.account.buttonSave" : "Profil aktualisieren", 50 "settings.account.buttonSave" : "Profil aktualisieren",
51 "settings.account.deleteAccount" : "Benutzerkonto löschen",
52 "settings.account.deleteEmailSent" : "Du hast eine Email zur Bestätigung der Löschung deines Benutzerkontos erhalten. Dein Benutzerkonto und deine Daten können nach der Löschung nicht wiederhergestellt werden!",
53 "settings.account.deleteInfo" : "Hier kannst du dein Franz Benutzerkonto, und alle dazugehörigen Daten, löschen.",
51 "settings.account.headline" : "Konto", 54 "settings.account.headline" : "Konto",
52 "settings.account.headlineAccount" : "Konto Informationen", 55 "settings.account.headlineAccount" : "Konto Informationen",
56 "settings.account.headlineDangerZone" : "Benutzerkonto löschen",
53 "settings.account.headlineInvoices" : "Rechnungen", 57 "settings.account.headlineInvoices" : "Rechnungen",
54 "settings.account.headlinePassword" : "Passwort ändern", 58 "settings.account.headlinePassword" : "Passwort ändern",
55 "settings.account.headlineProfile" : "Profil aktualisieren", 59 "settings.account.headlineProfile" : "Profil aktualisieren",
56 "settings.account.headlineSubscription" : "Dein Abonnement", 60 "settings.account.headlineSubscription" : "Dein Abonnement",
57 "settings.account.headlineUpgrade" : "Upgrade dein Konto & unterstütze Franz", 61 "settings.account.headlineUpgrade" : "Dein Konto upgraden & Franz unterstützen",
58 "settings.account.invoiceDownload" : "Download", 62 "settings.account.invoiceDownload" : "Herunterladen",
59 "settings.account.manageSubscription.label" : "Verwalte Dein Abonnement", 63 "settings.account.manageSubscription.label" : "Dein Abonnement verwalten",
60 "settings.account.mining.active" : "Du führst gerade {hashes} Berechnungen pro Sekunde aus.", 64 "settings.account.mining.active" : "Du führst gerade {hashes} Berechnungen pro Sekunde aus.",
61 "settings.account.mining.cancel" : "Mining abbrechen", 65 "settings.account.mining.cancel" : "Mining abbrechen",
62 "settings.account.mining.moreInformation" : "Weitere Informationen", 66 "settings.account.mining.moreInformation" : "Weitere Informationen",
63 "settings.account.mining.thankyou" : "Vielen Dank, dass du Franz mit deiner Rechenleistung unterstützt.", 67 "settings.account.mining.thankyou" : "Vielen Dank, dass du Franz mit deiner Rechenleistung unterstützt.",
64 "settings.account.successInfo" : "Deine Änderungen wurden gespeichert.", 68 "settings.account.successInfo" : "Deine Änderungen wurden gespeichert",
65 "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen", 69 "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen",
66 "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden", 70 "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden",
71 "settings.app.buttonClearAllCache" : "Cache leeren",
67 "settings.app.buttonInstallUpdate" : "Neustarten & Update installieren", 72 "settings.app.buttonInstallUpdate" : "Neustarten & Update installieren",
68 "settings.app.buttonSearchForUpdate" : "Nach Updates suchen", 73 "settings.app.buttonSearchForUpdate" : "Nach Updates suchen",
74 "settings.app.cacheInfo" : "Der Franz Cache belegt derzeit {size}.",
69 "settings.app.currentVersion" : "Aktuelle Version:", 75 "settings.app.currentVersion" : "Aktuelle Version:",
70 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen", 76 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen",
71 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausführen", 77 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausführen",
@@ -76,14 +82,16 @@
76 "settings.app.form.minimizeToSystemTray" : "Franz in die Systemleiste minimieren", 82 "settings.app.form.minimizeToSystemTray" : "Franz in die Systemleiste minimieren",
77 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", 83 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird",
78 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen", 84 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind",
79 "settings.app.headline" : "Einstellungen", 86 "settings.app.headline" : "Einstellungen",
80 "settings.app.headlineAdvanced" : "Erweitert", 87 "settings.app.headlineAdvanced" : "Erweitert",
81 "settings.app.headlineAppearance" : "Darstellung", 88 "settings.app.headlineAppearance" : "Darstellung",
82 "settings.app.headlineGeneral" : "Allgemein", 89 "settings.app.headlineGeneral" : "Allgemeines",
83 "settings.app.headlineLanguage" : "Sprache", 90 "settings.app.headlineLanguage" : "Sprache",
84 "settings.app.headlineUpdates" : "Updates", 91 "settings.app.headlineUpdates" : "Updates",
85 "settings.app.restartRequired" : "Änderungen werden erst nach einem Neustart wirksam. ", 92 "settings.app.restartRequired" : "Änderungen werden erst nach einem Neustart wirksam. ",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Hilf uns, Franz in deine Sprache zu übersetzen.",
87 "settings.app.updateStatusAvailable" : "Update verfügbar, herunterladen...", 95 "settings.app.updateStatusAvailable" : "Update verfügbar, herunterladen...",
88 "settings.app.updateStatusSearching" : "Suche nach Updates", 96 "settings.app.updateStatusSearching" : "Suche nach Updates",
89 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz", 97 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Alle Dienste", 103 "settings.recipes.all" : "Alle Dienste",
96 "settings.recipes.dev" : "Entwicklung", 104 "settings.recipes.dev" : "Entwicklung",
97 "settings.recipes.headline" : "Verfügbare Dienste", 105 "settings.recipes.headline" : "Verfügbare Dienste",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Fehlt ein Service?",
99 "settings.recipes.mostPopular" : "Am beliebtesten", 107 "settings.recipes.mostPopular" : "Am beliebtesten",
100 "settings.recipes.nothingFound" : "Entschuldigung, aber kein Dienst entspricht deiner Suchanfrage.", 108 "settings.recipes.nothingFound" : "Entschuldigung, aber kein Dienst entspricht deiner Suchanfrage.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Dienst erfolgreich hinzugefügt", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Dienst erfolgreich hinzugefügt",
110 "settings.searchService" : "Service suchen",
102 "settings.service.error.goBack" : "Zurück zu den Diensten", 111 "settings.service.error.goBack" : "Zurück zu den Diensten",
103 "settings.service.error.headline" : "Fehler", 112 "settings.service.error.headline" : "Fehler",
104 "settings.service.error.message" : "Das Dienst-Rezept konnte nicht geladen werden.", 113 "settings.service.error.message" : "Das Dienst-Rezept konnte nicht geladen werden.",
@@ -106,13 +115,20 @@
106 "settings.service.form.availableServices" : "Verfügbare Dienste", 115 "settings.service.form.availableServices" : "Verfügbare Dienste",
107 "settings.service.form.customUrl" : "Eigener Server", 116 "settings.service.form.customUrl" : "Eigener Server",
108 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst du ein Franz Premium-Supporter Konto.", 117 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst du ein Franz Premium-Supporter Konto.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade dein Konto", 118 "settings.service.form.customUrlUpgradeAccount" : "Dein Konto upgraden",
110 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.\",", 119 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.",
111 "settings.service.form.deleteButton" : "Dienst entfernen", 120 "settings.service.form.deleteButton" : "Dienst löschen",
112 "settings.service.form.editServiceHeadline" : "{name} bearbeiten", 121 "settings.service.form.editServiceHeadline" : "{name} bearbeiten",
113 "settings.service.form.enableAudio" : "Audio aktivieren", 122 "settings.service.form.enableAudio" : "Audio aktivieren",
123 "settings.service.form.enableBadge" : "Nachrichten-Badge anzeigen",
114 "settings.service.form.enableNotification" : "Benachrichtigungen aktivieren", 124 "settings.service.form.enableNotification" : "Benachrichtigungen aktivieren",
115 "settings.service.form.enableService" : "Dienst aktivieren", 125 "settings.service.form.enableService" : "Dienst aktivieren",
126 "settings.service.form.headlineBadges" : "Nachrichten-Badge",
127 "settings.service.form.headlineGeneral" : "Allgemeines",
128 "settings.service.form.headlineNotifications" : "Benachrichtigungen",
129 "settings.service.form.icon" : "Icon",
130 "settings.service.form.iconDelete" : "Löschen",
131 "settings.service.form.iconUpload" : "Klicken oder Bild hierher ziehen",
116 "settings.service.form.indirectMessageInfo" : "Du wirst über alle neuen Nachrichten in einem Kanal informiert, nicht nur @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Du wirst über alle neuen Nachrichten in einem Kanal informiert, nicht nur @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Nachrichten-Badge für alle neuen Nachrichten anzeigen", 133 "settings.service.form.indirectMessages" : "Nachrichten-Badge für alle neuen Nachrichten anzeigen",
118 "settings.service.form.isMutedInfo" : "Sämtliche Wiedergabe von Tönen wird deaktiviert", 134 "settings.service.form.isMutedInfo" : "Sämtliche Wiedergabe von Tönen wird deaktiviert",
@@ -121,16 +137,17 @@
121 "settings.service.form.tabHosted" : "Gehostet", 137 "settings.service.form.tabHosted" : "Gehostet",
122 "settings.service.form.tabOnPremise" : "Selbst gehostet â­ï¸", 138 "settings.service.form.tabOnPremise" : "Selbst gehostet â­ï¸",
123 "settings.service.form.team" : "Team", 139 "settings.service.form.team" : "Team",
140 "settings.service.form.useHostedService" : "Hosted {name} verwenden.",
124 "settings.service.form.yourServices" : "Deine Dienste", 141 "settings.service.form.yourServices" : "Deine Dienste",
125 "settings.services.deletedInfo" : "Dienst wurde entfernt", 142 "settings.services.deletedInfo" : "Dienst wurde gelöscht",
126 "settings.services.discoverServices" : "Dienste entdecken", 143 "settings.services.discoverServices" : "Dienste entdecken",
127 "settings.services.headline" : "Deine Dienste", 144 "settings.services.headline" : "Deine Dienste",
128 "settings.services.noServicesAdded" : "Du hast noch keine Dienste hinzugefügt.", 145 "settings.services.noServicesAdded" : "Du hast noch keine Dienste hinzugefügt.",
129 "settings.services.tooltip.isDisabled" : "Dienst deaktiviert", 146 "settings.services.tooltip.isDisabled" : "Dienst ist deaktiviert",
130 "settings.services.tooltip.isMuted" : "Audio ist deaktiviert", 147 "settings.services.tooltip.isMuted" : "Alle Töne sind deaktiviert",
131 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert", 148 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert",
132 "settings.services.updatedInfo" : "Deine Änderungen wurden gespeichert", 149 "settings.services.updatedInfo" : "Deine Änderungen wurden gespeichert",
133 "settings.user.form.accountType.company" : "Unternehmen", 150 "settings.user.form.accountType.company" : "Firma",
134 "settings.user.form.accountType.individual" : "Einzelperson", 151 "settings.user.form.accountType.individual" : "Einzelperson",
135 "settings.user.form.accountType.label" : "Konto-Typ", 152 "settings.user.form.accountType.label" : "Konto-Typ",
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 153 "settings.user.form.accountType.non-profit" : "Non-Profit",
@@ -139,15 +156,15 @@
139 "settings.user.form.firstname" : "Vorname", 156 "settings.user.form.firstname" : "Vorname",
140 "settings.user.form.lastname" : "Nachname", 157 "settings.user.form.lastname" : "Nachname",
141 "settings.user.form.newPassword" : "Neues Passwort", 158 "settings.user.form.newPassword" : "Neues Passwort",
142 "sidebar.addNewService" : "!!!Add new service", 159 "sidebar.addNewService" : "Neuem Dienst hinzufügen",
143 "sidebar.mute" : "Audio deaktivieren", 160 "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren",
144 "sidebar.settings" : "Einstellungen", 161 "sidebar.settings" : "Einstellungen",
145 "sidebar.unmute" : "Audio aktivieren", 162 "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren",
146 "signup.company.label" : "Unternehmen", 163 "signup.company.label" : "Firma",
147 "signup.email.label" : "E-Mail Adresse", 164 "signup.email.label" : "E-Mail Adresse",
148 "signup.emailDuplicate" : "Ein Benutzer mit dieser E-Mail Adresse existiert bereits.", 165 "signup.emailDuplicate" : "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.",
149 "signup.firstname.label" : "Vorname", 166 "signup.firstname.label" : "Vorname",
150 "signup.headline" : "Registrierung", 167 "signup.headline" : "Anmelden",
151 "signup.lastname.label" : "Nachname", 168 "signup.lastname.label" : "Nachname",
152 "signup.legal.info" : "Mit der Erstellung eines Franz Kontos akzeptierst du die", 169 "signup.legal.info" : "Mit der Erstellung eines Franz Kontos akzeptierst du die",
153 "signup.legal.privacy" : "Datenschutzerklärung", 170 "signup.legal.privacy" : "Datenschutzerklärung",
@@ -155,13 +172,13 @@
155 "signup.link.login" : "Du hast bereits ein Konto? Melde dich an.", 172 "signup.link.login" : "Du hast bereits ein Konto? Melde dich an.",
156 "signup.password.label" : "Passwort", 173 "signup.password.label" : "Passwort",
157 "signup.submit.label" : "Konto erstellen", 174 "signup.submit.label" : "Konto erstellen",
158 "subscription.euTaxInfo" : "Preise sind exklusive Steuern. ", 175 "subscription.euTaxInfo" : "Preise sind exklusive Steuern.",
159 "subscription.features.ads" : "Nie mehr Werbung!", 176 "subscription.features.ads" : "Nie mehr Werbung!",
160 "subscription.features.comingSoon" : "folgt bald", 177 "subscription.features.comingSoon" : "folgt bald",
161 "subscription.features.customServices" : "Private Dienste für dich und dein Team", 178 "subscription.features.customServices" : "Private Dienste für dich und dein Team",
162 "subscription.features.encryptedSync" : "Verschlüsselte Sitzungs-Synchronisation", 179 "subscription.features.encryptedSync" : "Verschlüsselte Sitzungs-Synchronisation",
163 "subscription.features.onpremise" : "Integration von gehosteten Diensten, wie HipChat", 180 "subscription.features.onpremise" : "Integration von gehosteten Diensten, wie HipChat",
164 "subscription.features.vpn" : "Proxy & VPN Unterstützung", 181 "subscription.features.vpn" : "Proxy- & VPN-Unterstützung",
165 "subscription.includedFeatures" : "Bezahlte Franz Premium Support Konten beinhalten", 182 "subscription.includedFeatures" : "Bezahlte Franz Premium Support Konten beinhalten",
166 "subscription.mining.experimental" : "experimentell", 183 "subscription.mining.experimental" : "experimentell",
167 "subscription.mining.headline" : "Wie funktioniert das?", 184 "subscription.mining.headline" : "Wie funktioniert das?",
@@ -172,12 +189,12 @@
172 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.", 189 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.",
173 "subscription.submit.label" : "Ich möchte die Entwicklung von Franz unterstützen", 190 "subscription.submit.label" : "Ich möchte die Entwicklung von Franz unterstützen",
174 "subscription.type.free" : "kostenlos", 191 "subscription.type.free" : "kostenlos",
175 "subscription.type.mining" : "Unterstütze Franz mit Rechenleistung", 192 "subscription.type.mining" : "Franz mit Rechenleistung unterstützen",
176 "subscription.type.month" : "Monat", 193 "subscription.type.month" : "Monat",
177 "subscription.type.year" : "Jahr", 194 "subscription.type.year" : "Jahr",
178 "subscriptionPopup.buttonCancel" : "Abbrechen", 195 "subscriptionPopup.buttonCancel" : "Abbrechen",
179 "subscriptionPopup.buttonDone" : "Fertig", 196 "subscriptionPopup.buttonDone" : "Fertig",
180 "tabs.item.deleteService" : "Dienst entfernen", 197 "tabs.item.deleteService" : "Dienst löschen",
181 "tabs.item.disableAudio" : "Audio deaktivieren", 198 "tabs.item.disableAudio" : "Audio deaktivieren",
182 "tabs.item.disableNotifications" : "Benachrichtigungen deaktivieren", 199 "tabs.item.disableNotifications" : "Benachrichtigungen deaktivieren",
183 "tabs.item.disableService" : "Dienst deaktivieren", 200 "tabs.item.disableService" : "Dienst deaktivieren",
@@ -185,8 +202,8 @@
185 "tabs.item.enableAudio" : "Audio aktivieren", 202 "tabs.item.enableAudio" : "Audio aktivieren",
186 "tabs.item.enableNotification" : "Benachrichtigungen aktivieren", 203 "tabs.item.enableNotification" : "Benachrichtigungen aktivieren",
187 "tabs.item.enableService" : "Dienst aktivieren", 204 "tabs.item.enableService" : "Dienst aktivieren",
188 "tabs.item.reload" : "Neu laden", 205 "tabs.item.reload" : "Neuladen",
189 "welcome.loginButton" : "Anmelden", 206 "welcome.loginButton" : "An deinem Konto anmelden",
190 "welcome.signupButton" : "Kostenloses Konto erstellen", 207 "welcome.signupButton" : "Kostenloses Konto erstellen",
191 "welcome.slogan" : "Kommunikation, die für Dich funktioniert" 208 "welcome.slogan" : "Kommunikation, die für dich funktioniert"
192} 209}
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index 5717a18b1..14c9d05ee 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -1,192 +1,209 @@
1{ 1{
2 "global.api.unhealthy" : "Can't connect to Franz online services", 2 "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις online υπηÏεσίες του Franz",
3 "global.notConnectedToTheInternet" : "You are not connected to the internet.", 3 "global.notConnectedToTheInternet" : "Δεν είστε συνδεδεμένοι στο διαδίκτυο.",
4 "import.headline" : "Import your Franz 4 services", 4 "import.headline" : "Εισαγάγετε τις Franz 4 υπηÏεσίες σας",
5 "import.notSupportedHeadline" : "Services not yet supported in Franz 5", 5 "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5",
6 "import.skip.label" : "I want add services manually", 6 "import.skip.label" : "Θέλω να Ï€Ïοσθέσω υπηÏεσίες χειÏοκίνητα",
7 "import.submit.label" : "Import services", 7 "import.submit.label" : "Εισαγωγή υπηÏεσιών",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Τι νέο υπάÏχει;",
9 "infobar.buttonInstallUpdate" : "Restart & install update", 9 "infobar.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημεÏώσεων",
10 "infobar.buttonReloadServices" : "Reload services", 10 "infobar.buttonReloadServices" : "Ανανέωση υπηÏεσιών",
11 "infobar.requiredRequestsFailed" : "Could not load services and user information", 11 "infobar.requiredRequestsFailed" : "Δεν ήταν δυνατή η φόÏτωση υπηÏεσιών και πληÏοφοÏιών χÏηστών",
12 "infobar.servicesUpdated" : "Your services have been updated.", 12 "infobar.servicesUpdated" : "Οι υπηÏεσίες σας έχουν ενημεÏωθεί.",
13 "infobar.updateAvailable" : "A new update for Franz is available.", 13 "infobar.updateAvailable" : "ΥπάÏχει διαθέσιμη μια νέα ενημέÏωση για τον Franz.",
14 "invite.email.label" : "Email address", 14 "invite.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
15 "invite.headline.friends" : "Invite 3 of your friends or colleagues", 15 "invite.headline.friends" : "ΠÏοσκαλέστε 3 από τους φίλους ή τους συναδέλφους σας",
16 "invite.name.label" : "Name", 16 "invite.name.label" : "Όνομα",
17 "invite.skip.label" : "I want to do this later", 17 "invite.skip.label" : "Θέλω να το κάνω αÏγότεÏα",
18 "invite.submit.label" : "Send invites", 18 "invite.submit.label" : "Αποστολή Ï€Ïοσκλήσεων",
19 "login.email.label" : "Email address", 19 "login.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
20 "login.headline" : "Sign in", 20 "login.headline" : "ΣÏνδεση",
21 "login.invalidCredentials" : "Email or password not valid", 21 "login.invalidCredentials" : "Το email ή ο κωδικός Ï€Ïόσβασης δεν είναι έγκυÏος",
22 "login.link.password" : "Reset password", 22 "login.link.password" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης",
23 "login.link.signup" : "Create a free account", 23 "login.link.signup" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ",
24 "login.password.label" : "Password", 24 "login.password.label" : "Κωδικός Ï€Ïόσβασης",
25 "login.serverLogout" : "Your session expired, please login again.", 25 "login.serverLogout" : "Η συνεδÏία σας έληξε, συνδεθείτε ξανά.",
26 "login.submit.label" : "Sign in", 26 "login.submit.label" : "ΣÏνδεση",
27 "login.tokenExpired" : "Your session expired, please login again.", 27 "login.tokenExpired" : "Η συνεδÏία σας έληξε, συνδεθείτε ξανά.",
28 "password.email.label" : "Email address", 28 "password.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
29 "password.headline" : "Reset password", 29 "password.headline" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης",
30 "password.link.login" : "Sign in to your account", 30 "password.link.login" : "ΣÏνδεση στο λογαÏιασμό σας",
31 "password.link.signup" : "Create a free account", 31 "password.link.signup" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ",
32 "password.noUser" : "No user with that email address was found", 32 "password.noUser" : "Δεν βÏέθηκε χÏήστης με τη συγκεκÏιμένη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
33 "password.submit.label" : "Submit", 33 "password.submit.label" : "Υποβολή",
34 "password.successInfo" : "Please check your email", 34 "password.successInfo" : "Ελέγξτε το email σας",
35 "pricing.headline" : "Support Franz", 35 "pricing.headline" : "ΥποστηÏίξτε το Franz",
36 "pricing.link.skipPayment" : "I don't want to support the development of Franz.", 36 "pricing.link.skipPayment" : "Δεν θέλω να βοηθήσω στην ανάπτυξη του Franz.",
37 "pricing.submit.label" : "I want to support the development of Franz", 37 "pricing.submit.label" : "Θέλω να βοηθήσω στην ανάπτυξη του Franz",
38 "pricing.support.label" : "Select your support plan", 38 "pricing.support.label" : "Επιλέξτε το πακέτο υποστήÏιξης",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "ΕπαναφόÏτωση {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Γίνεται Ï€Ïοσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτεÏόλεπτα",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Ω, όχι!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "Το {name} Ï€Ïοκάλεσε ένα σφάλμα.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "ΕνεÏγοποίηση {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} είναι απενεÏγοποιημένο",
45 "services.getStarted" : "Get started", 45 "services.getStarted" : "Ξεκινήστε",
46 "services.welcome" : "Welcome to Franz", 46 "services.welcome" : "Καλώς οÏίσατε στον Franz",
47 "settings.account.account.editButton" : "Edit account", 47 "settings.account.account.editButton" : "ΕπεξεÏγασία λογαÏιασμοÏ",
48 "settings.account.accountType.basic" : "Basic Account", 48 "settings.account.accountType.basic" : "Βασικός λογαÏιασμός",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "ΛογαÏιασμός Premium ΥποστηÏικτή",
50 "settings.account.buttonSave" : "Update profile", 50 "settings.account.buttonSave" : "ΕνημέÏωση Ï€Ïοφίλ",
51 "settings.account.headline" : "Account", 51 "settings.account.deleteAccount" : "ΔιαγÏαφή λογαÏιασμοÏ",
52 "settings.account.headlineAccount" : "Account information", 52 "settings.account.deleteEmailSent" : "Έχετε λάβει ένα email με έναν σÏνδεσμο για την επιβεβαίωση της διαγÏαφής του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚. Ο λογαÏιασμός και τα δεδομένα σας δεν μποÏοÏν να ανακτηθοÏν!",
53 "settings.account.headlineInvoices" : "Invoices", 53 "settings.account.deleteInfo" : "Εάν δεν χÏειάζεστε πλέον το λογαÏιασμό σας στο Franz, μποÏείτε να διαγÏάψετε το λογαÏιασμό σας και όλα τα δεδομένα που σχετίζονται με αυτόν εδώ.",
54 "settings.account.headlinePassword" : "Change password", 54 "settings.account.headline" : "ΛογαÏιασμός",
55 "settings.account.headlineProfile" : "Update profile", 55 "settings.account.headlineAccount" : "ΠληÏοφοÏίες λογαÏιασμοÏ",
56 "settings.account.headlineSubscription" : "Your subscription", 56 "settings.account.headlineDangerZone" : "Επικίνδυνη Ζώνη",
57 "settings.account.headlineUpgrade" : "Upgrade your account & support Franz", 57 "settings.account.headlineInvoices" : "Τιμολόγια",
58 "settings.account.invoiceDownload" : "Download", 58 "settings.account.headlinePassword" : "Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης",
59 "settings.account.manageSubscription.label" : "Manage your subscription", 59 "settings.account.headlineProfile" : "ΕνημέÏωση Ï€Ïοφίλ",
60 "settings.account.mining.active" : "You are right now performing {hashes} calculations per second.", 60 "settings.account.headlineSubscription" : "Η συνδÏομή σας",
61 "settings.account.mining.cancel" : "Cancel mining", 61 "settings.account.headlineUpgrade" : "Αναβάθμιση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ και υποστήÏιξη Franz",
62 "settings.account.mining.moreInformation" : "Get more information", 62 "settings.account.invoiceDownload" : "Λήψη",
63 "settings.account.mining.thankyou" : "Thank you for supporting Franz with your processing power.", 63 "settings.account.manageSubscription.label" : "ΔιαχείÏιση της συνδÏομής σας",
64 "settings.account.successInfo" : "Your changes have been saved", 64 "settings.account.mining.active" : "ΤώÏα Ï€Ïαγματοποιείτε {hashes} υπολογισμοÏÏ‚ ανά δευτεÏόλεπτο.",
65 "settings.account.tryReloadUserInfoRequest" : "Try again", 65 "settings.account.mining.cancel" : "ΑκÏÏωση εξόÏυξης",
66 "settings.account.userInfoRequestFailed" : "Could not load user information", 66 "settings.account.mining.moreInformation" : "Λάβετε πεÏισσότεÏες πληÏοφοÏίες",
67 "settings.app.buttonInstallUpdate" : "Restart & install update", 67 "settings.account.mining.thankyou" : "Σας ευχαÏιστοÏμε για την υποστήÏιξη του Franz με την Î¹ÏƒÏ‡Ï ÎµÏ€ÎµÎ¾ÎµÏγασίας σας",
68 "settings.app.buttonSearchForUpdate" : "Check for updates", 68 "settings.account.successInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
69 "settings.app.currentVersion" : "Current version:", 69 "settings.account.tryReloadUserInfoRequest" : "Δοκιμάστε ξανά",
70 "settings.app.form.autoLaunchInBackground" : "Open in background", 70 "settings.account.userInfoRequestFailed" : "Δεν ήταν δυνατή η φόÏτωση πληÏοφοÏιών χÏήστη",
71 "settings.app.form.autoLaunchOnStart" : "Launch Franz on start", 71 "settings.app.buttonClearAllCache" : "ΚαθαÏισμός λανθάνουσας μνήμης",
72 "settings.app.form.beta" : "Include beta versions", 72 "settings.app.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημεÏώσεων",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 73 "settings.app.buttonSearchForUpdate" : "Έλεγχος για ενημεÏώσεις",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray", 74 "settings.app.cacheInfo" : "Το Franz χÏησιμοποιεί αυτήν τη στιγμή {size} χώÏου στο δίσκο.",
75 "settings.app.form.language" : "Language", 75 "settings.app.currentVersion" : "ΤÏέχουσα έκδοση:",
76 "settings.app.form.minimizeToSystemTray" : "Minimize Franz to system tray", 76 "settings.app.form.autoLaunchInBackground" : "Άνοιγμα στο παÏασκήνιο",
77 "settings.app.form.runInBackground" : "Keep Franz in background when closing the window", 77 "settings.app.form.autoLaunchOnStart" : "Εκκίνηση του Franz κατά την εκκίνηση του συστήματος",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 78 "settings.app.form.beta" : "ΣυμπεÏιλάβετε εκδόσεις beta",
79 "settings.app.headline" : "Settings", 79 "settings.app.form.enableSpellchecking" : "ΕνεÏγοποίηση οÏθογÏÎ±Ï†Î¹ÎºÎ¿Ï ÎµÎ»Î­Î³Ï‡Î¿Ï…",
80 "settings.app.headlineAdvanced" : "Advanced", 80 "settings.app.form.enableSystemTray" : "Εμφάνιση του Franz στη γÏαμμή ειδοποιήσεων",
81 "settings.app.headlineAppearance" : "Appearance", 81 "settings.app.form.language" : "Γλώσσα",
82 "settings.app.headlineGeneral" : "General", 82 "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Franz στη γÏαμμή ειδοποιήσεων",
83 "settings.app.headlineLanguage" : "Language", 83 "settings.app.form.runInBackground" : "ΚÏατήστε το Franz στο παÏασκήνιο κατά το κλείσιμο του παÏαθÏÏου",
84 "settings.app.headlineUpdates" : "Updates", 84 "settings.app.form.showDisabledServices" : "ΠÏοβολή καÏτελών των απενεÏγοποιημένων υπηÏεσιών",
85 "settings.app.restartRequired" : "Changes require restart", 85 "settings.app.form.showMessagesBadgesWhenMuted" : "ΠÏοβολή του εικονιδίου μη αναγνωσμένου μηνÏματος όταν οι ειδοποιήσεις είναι απενεÏγοποιημένες",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 86 "settings.app.headline" : "Ρυθμίσεις",
87 "settings.app.updateStatusAvailable" : "Update available, downloading...", 87 "settings.app.headlineAdvanced" : "Για Ï€ÏοχωÏημένους",
88 "settings.app.updateStatusSearching" : "Is searching for update", 88 "settings.app.headlineAppearance" : "Εμφάνιση",
89 "settings.app.updateStatusUpToDate" : "You are using the latest version of Franz", 89 "settings.app.headlineGeneral" : "Γενικά",
90 "settings.navigation.account" : "Account", 90 "settings.app.headlineLanguage" : "Γλώσσα",
91 "settings.navigation.availableServices" : "Available services", 91 "settings.app.headlineUpdates" : "ΕνημεÏώσεις",
92 "settings.navigation.logout" : "Logout", 92 "settings.app.restartRequired" : "Οι αλλαγές απαιτοÏν επανεκκίνηση",
93 "settings.navigation.settings" : "Settings", 93 "settings.app.subheadlineCache" : "Λανθάνουσα μνήμη",
94 "settings.navigation.yourServices" : "Your services", 94 "settings.app.translationHelp" : "Βοηθήστε μας να μεταφÏάσουμε το Franz στη δική σας γλώσσα.",
95 "settings.recipes.all" : "All services", 95 "settings.app.updateStatusAvailable" : "ΥπάÏχει διαθέσιμη ενημέÏωση, γίνεται λήψη...",
96 "settings.recipes.dev" : "Development", 96 "settings.app.updateStatusSearching" : " Γίνεται αναζήτηση για ενημέÏωση",
97 "settings.recipes.headline" : "Available services", 97 "settings.app.updateStatusUpToDate" : "ΧÏησιμοποιείτε την τελευταία έκδοση του Franz",
98 "settings.recipes.missingService" : "Missing a service?", 98 "settings.navigation.account" : "ΛογαÏιασμός",
99 "settings.recipes.mostPopular" : "Most popular", 99 "settings.navigation.availableServices" : "Διαθέσιμες υπηÏεσίες",
100 "settings.recipes.nothingFound" : "Sorry, but no service matched your search term.", 100 "settings.navigation.logout" : "ΑποσÏνδεση",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service successfully added", 101 "settings.navigation.settings" : "Ρυθμίσεις",
102 "settings.service.error.goBack" : "Back to services", 102 "settings.navigation.yourServices" : "Οι υπηÏεσίες σας",
103 "settings.service.error.headline" : "Error", 103 "settings.recipes.all" : "Όλες οι υπηÏεσίες",
104 "settings.service.error.message" : "Could not load service recipe.", 104 "settings.recipes.dev" : "Ανάπτυξη",
105 "settings.service.form.addServiceHeadline" : "Add {name}", 105 "settings.recipes.headline" : "Διαθέσιμες υπηÏεσίες",
106 "settings.service.form.availableServices" : "Available services", 106 "settings.recipes.missingService" : "Λείπει κάποια υπηÏεσία;",
107 "settings.service.form.customUrl" : "Custom server", 107 "settings.recipes.mostPopular" : "Τα πιο δημοφιλή",
108 "settings.service.form.customUrlPremiumInfo" : "To add self hosted services, you need a Franz Premium Supporter Account.", 108 "settings.recipes.nothingFound" : "ΛυποÏμαστε αλλά καμία υπηÏεσία δεν ταιÏιάζει με τον ÏŒÏο αναζήτησης.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade your account", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Η υπηÏεσία Ï€Ïοστέθηκε με επιτυχία",
110 "settings.service.form.customUrlValidationError" : "Could not validate custom {name} server.", 110 "settings.searchService" : "Αναζήτηση υπηÏεσίας",
111 "settings.service.form.deleteButton" : "Delete service", 111 "settings.service.error.goBack" : "ΕπιστÏοφή στις υπηÏεσίες",
112 "settings.service.form.editServiceHeadline" : "Edit {name}", 112 "settings.service.error.headline" : "Σφάλμα",
113 "settings.service.form.enableAudio" : "Enable audio", 113 "settings.service.error.message" : "Δεν ήταν δυνατή η φόÏτωση της συνταγής υπηÏεσίας.",
114 "settings.service.form.enableNotification" : "Enable notifications", 114 "settings.service.form.addServiceHeadline" : "ΠÏοσθήκη {name}",
115 "settings.service.form.enableService" : "Enable service", 115 "settings.service.form.availableServices" : "Διαθέσιμες υπηÏεσίες",
116 "settings.service.form.indirectMessageInfo" : "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", 116 "settings.service.form.customUrl" : "ΠÏοσαÏμοσμένος διακομιστής",
117 "settings.service.form.indirectMessages" : "Show message badge for all new messages", 117 "settings.service.form.customUrlPremiumInfo" : "Για να Ï€Ïοσθέσετε υπηÏεσίες που φιλοξενοÏνται μόνος σας, χÏειάζεστε έναν λογαÏιασμό υποστήÏιξης Premium Franz.",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 118 "settings.service.form.customUrlUpgradeAccount" : "Αναβάθμιση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚",
119 "settings.service.form.name" : "Name", 119 "settings.service.form.customUrlValidationError" : "Δεν ήταν δυνατή η επικÏÏωση του Ï€ÏοσαÏμοσμένου διακομιστή {name}.",
120 "settings.service.form.saveButton" : "Save service", 120 "settings.service.form.deleteButton" : "ΔιαγÏαφή υπηÏεσίας",
121 "settings.service.form.tabHosted" : "Hosted", 121 "settings.service.form.editServiceHeadline" : "ΕπεξεÏγασία {name}",
122 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸", 122 "settings.service.form.enableAudio" : "ΕνεÏγοποίηση ήχου",
123 "settings.service.form.team" : "Team", 123 "settings.service.form.enableBadge" : "Εμφάνιση εικονιδίων μη αναγνωσμένου μηνÏματος",
124 "settings.service.form.yourServices" : "Your services", 124 "settings.service.form.enableNotification" : "ΕνεÏγοποίηση ειδοποιήσεων",
125 "settings.services.deletedInfo" : "Service has been deleted", 125 "settings.service.form.enableService" : "ΕνεÏγοποίηση υπηÏεσίας",
126 "settings.services.discoverServices" : "Discover services", 126 "settings.service.form.headlineBadges" : "Εικονίδια μη αναγνωσμένου μηνÏματος",
127 "settings.services.headline" : "Your services", 127 "settings.service.form.headlineGeneral" : "Γενικά",
128 "settings.services.noServicesAdded" : "You haven't added any services yet.", 128 "settings.service.form.headlineNotifications" : "Ειδοποιήσεις",
129 "settings.services.tooltip.isDisabled" : "Service is disabled", 129 "settings.service.form.icon" : "ΠÏοσαÏμοσμένο εικονίδιο",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 130 "settings.service.form.iconDelete" : "ΔιαγÏαφή",
131 "settings.services.tooltip.notificationsDisabled" : "Notifications are disabled", 131 "settings.service.form.iconUpload" : "ΣÏÏετε την εικόνα σας, ή κάντε κλικ εδώ",
132 "settings.services.updatedInfo" : "Your changes have been saved", 132 "settings.service.form.indirectMessageInfo" : "Θα ειδοποιηθείτε για όλα τα νέα μηνÏματα σε ένα κανάλι, όχι μόνο @username, @channel, @here, ...",
133 "settings.user.form.accountType.company" : "Company", 133 "settings.service.form.indirectMessages" : "Εμφάνιση ειδοποίησης μηνÏματος για όλα τα νέα μηνÏματα",
134 "settings.user.form.accountType.individual" : "Individual", 134 "settings.service.form.isMutedInfo" : "Όλοι οι ήχοι καθώς και η αναπαÏαγωγή ήχου θα απενεÏγοποιηθοÏν",
135 "settings.user.form.accountType.label" : "Account type", 135 "settings.service.form.name" : "Όνομα",
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 136 "settings.service.form.saveButton" : "Αποθήκευση υπηÏεσίας",
137 "settings.user.form.currentPassword" : "Current password", 137 "settings.service.form.tabHosted" : "Φιλοξενείται",
138 "settings.service.form.tabOnPremise" : "Αυτο-φιλοξενείται â­ï¸",
139 "settings.service.form.team" : "Ομάδα",
140 "settings.service.form.useHostedService" : "ΧÏήση της φιλοξενοÏμενης υπηÏεσίας {name}",
141 "settings.service.form.yourServices" : "Οι υπηÏεσίες σας",
142 "settings.services.deletedInfo" : "Η υπηÏεσία έχει διαγÏαφεί",
143 "settings.services.discoverServices" : "ΑνακαλÏψτε υπηÏεσίες",
144 "settings.services.headline" : "Οι υπηÏεσίες σας",
145 "settings.services.noServicesAdded" : "Δεν έχετε Ï€Ïοσθέσει ακόμα υπηÏεσίες.",
146 "settings.services.tooltip.isDisabled" : "Η υπηÏεσία είναι απενεÏγοποιημένη",
147 "settings.services.tooltip.isMuted" : "Όλοι οι ήχοι είναι απενεÏγοποιημένοι",
148 "settings.services.tooltip.notificationsDisabled" : "Οι ειδοποιήσεις είναι απενεÏγοποιημένες",
149 "settings.services.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
150 "settings.user.form.accountType.company" : "ΕταιÏεία",
151 "settings.user.form.accountType.individual" : "Ατομικός",
152 "settings.user.form.accountType.label" : "ΤÏπος λογαÏιασμοÏ",
153 "settings.user.form.accountType.non-profit" : "Μη κεÏδοσκοπικός",
154 "settings.user.form.currentPassword" : "ΤÏέχων κωδικός Ï€Ïόσβασης",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Όνομα",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Επίθετο",
141 "settings.user.form.newPassword" : "New password", 158 "settings.user.form.newPassword" : "Îέος κωδικός Ï€Ïόσβασης",
142 "sidebar.addNewService" : "Add new service", 159 "sidebar.addNewService" : "ΠÏοσθήκη νέας υπηÏεσίας",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "ΑπενεÏγοποίηση ειδοποιήσεων & ήχου",
144 "sidebar.settings" : "Settings", 161 "sidebar.settings" : "Ρυθμίσεις",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "ΕνεÏγοποίηση ειδοποιήσεων & ήχου",
146 "signup.company.label" : "Company", 163 "signup.company.label" : "ΕταιÏεία",
147 "signup.email.label" : "Email address", 164 "signup.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
148 "signup.emailDuplicate" : "A user with that email address already exists", 165 "signup.emailDuplicate" : "Ένας χÏήστης με τη συγκεκÏιμένη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου υπάÏχει ήδη",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Όνομα",
150 "signup.headline" : "Sign up", 167 "signup.headline" : "ΕγγÏαφή",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Επίθετο",
152 "signup.legal.info" : "By creating a Franz account you accept the", 169 "signup.legal.info" : "ΔημιουÏγώντας έναν λογαÏιασμό Franz αποδέχεστε τους",
153 "signup.legal.privacy" : "Privacy Statement", 170 "signup.legal.privacy" : "Δήλωση αποÏÏήτου",
154 "signup.legal.terms" : "Terms of service", 171 "signup.legal.terms" : "ÎŒÏοι υπηÏεσίας",
155 "signup.link.login" : "Already have an account, sign in?", 172 "signup.link.login" : "Έχετε ήδη λογαÏιασμό? Συνδεθείτε.",
156 "signup.password.label" : "Password", 173 "signup.password.label" : "Κωδικός Ï€Ïόσβασης",
157 "signup.submit.label" : "Create account", 174 "signup.submit.label" : "ΔημιουÏγία λογαÏιασμοÏ",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Πολίτες Ε.Ε.: Στις τιμές δεν πεÏιλαμβάνονται τυχόν φόÏοι και άλλες τοπικές επιβαÏÏνσεις",
159 "subscription.features.ads" : "No ads, ever!", 176 "subscription.features.ads" : "Τέλος στις διαφημίσεις",
160 "subscription.features.comingSoon" : "coming soon", 177 "subscription.features.comingSoon" : "σÏντομα",
161 "subscription.features.customServices" : "Private services for you and your team", 178 "subscription.features.customServices" : "Ιδιωτικές υπηÏεσίες για εσάς και την ομάδα σας",
162 "subscription.features.encryptedSync" : "Encrypted session synchronization", 179 "subscription.features.encryptedSync" : "ΚÏυπτογÏαφημένος συγχÏονισμός πεÏιόδου σÏνδεσης",
163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat", 180 "subscription.features.onpremise" : "Add on-premise \/ hosted services όπως το HipChat",
164 "subscription.features.vpn" : "Proxy & VPN support", 181 "subscription.features.vpn" : "ΥποστήÏιξη μεσολαβητή (Proxy) και VPN",
165 "subscription.includedFeatures" : "Paid Franz Premium Supporter Account includes", 182 "subscription.includedFeatures" : "Ο Premium λογαÏιασμός υποστήÏιξης Franz πεÏιλαμβάνει",
166 "subscription.mining.experimental" : "experimental", 183 "subscription.mining.experimental" : "πειÏαματική",
167 "subscription.mining.headline" : "How does this work?", 184 "subscription.mining.headline" : "Πώς λειτουÏγεί αυτό;",
168 "subscription.mining.line1" : "By enabling \"Support with processing power\", Franz will use about 20-50% of your CPU to mine the cryptocurrency Monero which equals approximately $ 5\/year.", 185 "subscription.mining.line1" : "Το Franz χÏησιμοποιεί πεÏίπου το 20-50% της CPU σας για να εξοÏÏξει το κÏυπτονόμισμα Monero που ισοÏται πεÏίπου με $ 5 \/ έτος.",
169 "subscription.mining.line2" : "We will adapt the CPU usage based to your work behaviour to not drain your battery and slow you and your machine down.", 186 "subscription.mining.line2" : "Θα Ï€ÏοσαÏμόσουμε τη χÏήση της CPU με βάση τη συμπεÏιφοÏά εÏγασίας σας ώστε να μην αποστÏαγγίσουμε την μπαταÏία σας και να επιβÏαδÏνουμε εσάς και το μηχάνημά σας.",
170 "subscription.mining.line3" : "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.", 187 "subscription.mining.line3" : "Εφόσον ο Miner είναι ενεÏγός, θα έχετε απεÏιόÏιστη Ï€Ïόσβαση σε όλα τα χαÏακτηÏιστικά του Franz Premium Supporter.",
171 "subscription.mining.moreInformation" : "Get more information about this plan.", 188 "subscription.mining.moreInformation" : "Λάβετε πεÏισσότεÏες πληÏοφοÏίες σχετικά με αυτό το πακέτο.",
172 "subscription.paymentSessionError" : "Could not initialize payment form", 189 "subscription.paymentSessionError" : "Δεν ήταν δυνατή η Ï€Ïοετοιμασία της φόÏμας πληÏωμής",
173 "subscription.submit.label" : "I want to support the development of Franz", 190 "subscription.submit.label" : "Θέλω να βοηθήσω στην ανάπτυξη του Franz",
174 "subscription.type.free" : "free", 191 "subscription.type.free" : "δωÏεάν",
175 "subscription.type.mining" : "Support Franz with processing power", 192 "subscription.type.mining" : "ΥποστήÏιξη Franz με Î¹ÏƒÏ‡Ï CPU",
176 "subscription.type.month" : "month", 193 "subscription.type.month" : "μήνας",
177 "subscription.type.year" : "year", 194 "subscription.type.year" : "έτος",
178 "subscriptionPopup.buttonCancel" : "Cancel", 195 "subscriptionPopup.buttonCancel" : "ΑκÏÏωση",
179 "subscriptionPopup.buttonDone" : "Done", 196 "subscriptionPopup.buttonDone" : "Έγινε",
180 "tabs.item.deleteService" : "Delete service", 197 "tabs.item.deleteService" : "ΔιαγÏαφή υπηÏεσίας",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "ΑπενεÏγοποίηση ήχου",
182 "tabs.item.disableNotifications" : "Disable notifications", 199 "tabs.item.disableNotifications" : "ΑπενεÏγοποίηση ειδοποιήσεων",
183 "tabs.item.disableService" : "Disable service", 200 "tabs.item.disableService" : "ΑπενεÏγοποίηση υπηÏεσίας",
184 "tabs.item.edit" : "Edit", 201 "tabs.item.edit" : "ΕπεξεÏγασία",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "ΕνεÏγοποίηση ήχου",
186 "tabs.item.enableNotification" : "Enable notifications", 203 "tabs.item.enableNotification" : "ΕνεÏγοποίηση ειδοποιήσεων",
187 "tabs.item.enableService" : "Enable service", 204 "tabs.item.enableService" : "ΕνεÏγοποίηση υπηÏεσίας",
188 "tabs.item.reload" : "Reload", 205 "tabs.item.reload" : "ΕπαναφόÏτωση",
189 "welcome.loginButton" : "Login to your account", 206 "welcome.loginButton" : "ΣÏνδεση στο λογαÏιασμό σας",
190 "welcome.signupButton" : "Create a free account", 207 "welcome.signupButton" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ",
191 "welcome.slogan" : "Messaging that works for you" 208 "welcome.slogan" : "Επικοινωνία που λειτουÏγεί για εσάς"
192} 209}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 8de5e5e02..7fc9eac1c 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -39,7 +39,7 @@
39 "import.headline": "Import your Franz 4 services", 39 "import.headline": "Import your Franz 4 services",
40 "import.notSupportedHeadline": "Services not yet supported in Franz 5", 40 "import.notSupportedHeadline": "Services not yet supported in Franz 5",
41 "import.submit.label": "Import services", 41 "import.submit.label": "Import services",
42 "import.skip.label": "I want add services manually", 42 "import.skip.label": "I want to add services manually",
43 "invite.submit.label": "Send invites", 43 "invite.submit.label": "Send invites",
44 "invite.headline.friends": "Invite 3 of your friends or colleagues", 44 "invite.headline.friends": "Invite 3 of your friends or colleagues",
45 "invite.name.label": "Name", 45 "invite.name.label": "Name",
@@ -62,14 +62,16 @@
62 "infobar.requiredRequestsFailed": "Could not load services and user information", 62 "infobar.requiredRequestsFailed": "Could not load services and user information",
63 "sidebar.settings": "Settings", 63 "sidebar.settings": "Settings",
64 "sidebar.addNewService": "Add new service", 64 "sidebar.addNewService": "Add new service",
65 "sidebar.mute": "Disable audio", 65 "sidebar.muteApp": "Disable notifications & audio",
66 "sidebar.unmute": "Enable audio", 66 "sidebar.unmuteApp": "Enable notifications & audio",
67 "services.welcome": "Welcome to Franz", 67 "services.welcome": "Welcome to Franz",
68 "services.getStarted": "Get started", 68 "services.getStarted": "Get started",
69 "settings.searchService": "Search service",
69 "settings.account.headline": "Account", 70 "settings.account.headline": "Account",
70 "settings.account.headlineSubscription": "Your subscription", 71 "settings.account.headlineSubscription": "Your subscription",
71 "settings.account.headlineUpgrade": "Upgrade your account & support Franz", 72 "settings.account.headlineUpgrade": "Upgrade your account & support Franz",
72 "settings.account.headlineInvoices": "Invoices", 73 "settings.account.headlineInvoices": "Invoices",
74 "settings.account.headlineDangerZone": "Danger Zone",
73 "settings.account.manageSubscription.label": "Manage your subscription", 75 "settings.account.manageSubscription.label": "Manage your subscription",
74 "settings.account.accountType.basic": "Basic Account", 76 "settings.account.accountType.basic": "Basic Account",
75 "settings.account.accountType.premium": "Premium Supporter Account", 77 "settings.account.accountType.premium": "Premium Supporter Account",
@@ -86,6 +88,9 @@
86 "settings.account.mining.active": "You are right now performing {hashes} calculations per second.", 88 "settings.account.mining.active": "You are right now performing {hashes} calculations per second.",
87 "settings.account.mining.moreInformation": "Get more information", 89 "settings.account.mining.moreInformation": "Get more information",
88 "settings.account.mining.cancel": "Cancel mining", 90 "settings.account.mining.cancel": "Cancel mining",
91 "settings.account.deleteAccount": "Delete account",
92 "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.",
93 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
89 "settings.navigation.availableServices": "Available services", 94 "settings.navigation.availableServices": "Available services",
90 "settings.navigation.yourServices": "Your services", 95 "settings.navigation.yourServices": "Your services",
91 "settings.navigation.account": "Account", 96 "settings.navigation.account": "Account",
@@ -106,6 +111,7 @@
106 "settings.service.form.editServiceHeadline": "Edit {name}", 111 "settings.service.form.editServiceHeadline": "Edit {name}",
107 "settings.service.form.tabHosted": "Hosted", 112 "settings.service.form.tabHosted": "Hosted",
108 "settings.service.form.tabOnPremise": "Self hosted â­ï¸", 113 "settings.service.form.tabOnPremise": "Self hosted â­ï¸",
114 "settings.service.form.useHostedService": "Use the hosted {name} service.",
109 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", 115 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
110 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", 116 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.",
111 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", 117 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account",
@@ -113,11 +119,18 @@
113 "settings.service.form.name": "Name", 119 "settings.service.form.name": "Name",
114 "settings.service.form.enableService": "Enable service", 120 "settings.service.form.enableService": "Enable service",
115 "settings.service.form.enableNotification": "Enable notifications", 121 "settings.service.form.enableNotification": "Enable notifications",
122 "settings.service.form.enableBadge": "Show unread message badges",
116 "settings.service.form.team": "Team", 123 "settings.service.form.team": "Team",
117 "settings.service.form.customUrl": "Custom server", 124 "settings.service.form.customUrl": "Custom server",
118 "settings.service.form.indirectMessages": "Show message badge for all new messages", 125 "settings.service.form.indirectMessages": "Show message badge for all new messages",
119 "settings.service.form.enableAudio": "Enable audio", 126 "settings.service.form.enableAudio": "Enable audio",
120 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", 127 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
128 "settings.service.form.headlineNotifications": "Notifications",
129 "settings.service.form.headlineBadges": "Unread message badges",
130 "settings.service.form.headlineGeneral": "General",
131 "settings.service.form.icon": "Custom icon",
132 "settings.service.form.iconDelete": "Delete",
133 "settings.service.form.iconUpload": "Drop your image, or click here",
121 "settings.service.error.headline": "Error", 134 "settings.service.error.headline": "Error",
122 "settings.service.error.goBack": "Back to services", 135 "settings.service.error.goBack": "Back to services",
123 "settings.service.error.message": "Could not load service recipe.", 136 "settings.service.error.message": "Could not load service recipe.",
@@ -140,6 +153,9 @@
140 "settings.app.updateStatusSearching": "Is searching for update", 153 "settings.app.updateStatusSearching": "Is searching for update",
141 "settings.app.updateStatusAvailable": "Update available, downloading...", 154 "settings.app.updateStatusAvailable": "Update available, downloading...",
142 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", 155 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz",
156 "settings.app.subheadlineCache": "Cache",
157 "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.",
158 "settings.app.buttonClearAllCache": "Clear cache",
143 "settings.app.form.autoLaunchOnStart": "Launch Franz on start", 159 "settings.app.form.autoLaunchOnStart": "Launch Franz on start",
144 "settings.app.form.autoLaunchInBackground": "Open in background", 160 "settings.app.form.autoLaunchInBackground": "Open in background",
145 "settings.app.form.enableSystemTray": "Show Franz in system tray", 161 "settings.app.form.enableSystemTray": "Show Franz in system tray",
@@ -148,6 +164,7 @@
148 "settings.app.form.language": "Language", 164 "settings.app.form.language": "Language",
149 "settings.app.form.enableSpellchecking": "Enable spell checking", 165 "settings.app.form.enableSpellchecking": "Enable spell checking",
150 "settings.app.form.showDisabledServices": "Display disabled services tabs", 166 "settings.app.form.showDisabledServices": "Display disabled services tabs",
167 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
151 "settings.app.form.beta": "Include beta versions", 168 "settings.app.form.beta": "Include beta versions",
152 "settings.app.translationHelp": "Help us to translate Franz into your language.", 169 "settings.app.translationHelp": "Help us to translate Franz into your language.",
153 "settings.app.currentVersion": "Current version:", 170 "settings.app.currentVersion": "Current version:",
@@ -188,5 +205,5 @@
188 "service.crashHandler.action": "Reload {name}", 205 "service.crashHandler.action": "Reload {name}",
189 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 206 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
190 "service.disabledHandler.headline": "{name} is disabled", 207 "service.disabledHandler.headline": "{name} is disabled",
191 "service.disabledHandler.action": "Enable {name}" 208 "service.disabledHandler.action": "Enable {name}"
192} 209}
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index 5717a18b1..c4f598bd1 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -1,192 +1,209 @@
1{ 1{
2 "global.api.unhealthy" : "Can't connect to Franz online services", 2 "global.api.unhealthy" : "No se puede conectar a los servicios en línea de Franz",
3 "global.notConnectedToTheInternet" : "You are not connected to the internet.", 3 "global.notConnectedToTheInternet" : "No estás conectado a Internet.",
4 "import.headline" : "Import your Franz 4 services", 4 "import.headline" : "Importa tus servicios de Franz 4",
5 "import.notSupportedHeadline" : "Services not yet supported in Franz 5", 5 "import.notSupportedHeadline" : "Servicios no soportados aún en Franz 5",
6 "import.skip.label" : "I want add services manually", 6 "import.skip.label" : "Quiero agregar servicios manualmente",
7 "import.submit.label" : "Import services", 7 "import.submit.label" : "Importar servicios",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Qué hay de nuevo:",
9 "infobar.buttonInstallUpdate" : "Restart & install update", 9 "infobar.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones",
10 "infobar.buttonReloadServices" : "Reload services", 10 "infobar.buttonReloadServices" : "Recargar servicios",
11 "infobar.requiredRequestsFailed" : "Could not load services and user information", 11 "infobar.requiredRequestsFailed" : "No ha sido posible cargar servicios e información del usuario",
12 "infobar.servicesUpdated" : "Your services have been updated.", 12 "infobar.servicesUpdated" : "Sus servicios han sido actualizados.",
13 "infobar.updateAvailable" : "A new update for Franz is available.", 13 "infobar.updateAvailable" : "Nueva actualización para Franz disponible.",
14 "invite.email.label" : "Email address", 14 "invite.email.label" : "Correo electrónico",
15 "invite.headline.friends" : "Invite 3 of your friends or colleagues", 15 "invite.headline.friends" : "Invita a 3 amigos o colegas",
16 "invite.name.label" : "Name", 16 "invite.name.label" : "Nombre",
17 "invite.skip.label" : "I want to do this later", 17 "invite.skip.label" : "Haré esto más tarde",
18 "invite.submit.label" : "Send invites", 18 "invite.submit.label" : "Enviar invitaciones",
19 "login.email.label" : "Email address", 19 "login.email.label" : "Correo electrónico",
20 "login.headline" : "Sign in", 20 "login.headline" : "Iniciar sesión",
21 "login.invalidCredentials" : "Email or password not valid", 21 "login.invalidCredentials" : "Correo electrónico o contraseña no válidos",
22 "login.link.password" : "Reset password", 22 "login.link.password" : "Restablecer contraseña",
23 "login.link.signup" : "Create a free account", 23 "login.link.signup" : "Crear cuenta gratuita",
24 "login.password.label" : "Password", 24 "login.password.label" : "Contraseña",
25 "login.serverLogout" : "Your session expired, please login again.", 25 "login.serverLogout" : "Su sesión ha expirado, por favor inicie sesión nuevamente.",
26 "login.submit.label" : "Sign in", 26 "login.submit.label" : "Acceder",
27 "login.tokenExpired" : "Your session expired, please login again.", 27 "login.tokenExpired" : "Su sesión ha expirado, por favor acceda de nuevo.",
28 "password.email.label" : "Email address", 28 "password.email.label" : "Correo electrónico",
29 "password.headline" : "Reset password", 29 "password.headline" : "Restablecer contraseña",
30 "password.link.login" : "Sign in to your account", 30 "password.link.login" : "Acceder a tu cuenta",
31 "password.link.signup" : "Create a free account", 31 "password.link.signup" : "Crear cuenta gratuita",
32 "password.noUser" : "No user with that email address was found", 32 "password.noUser" : "No se encontró ningún usuario con esa dirección de correo electrónico",
33 "password.submit.label" : "Submit", 33 "password.submit.label" : "Enviar",
34 "password.successInfo" : "Please check your email", 34 "password.successInfo" : "Por favor, revise su correo electrónico",
35 "pricing.headline" : "Support Franz", 35 "pricing.headline" : "Apoya a Franz",
36 "pricing.link.skipPayment" : "I don't want to support the development of Franz.", 36 "pricing.link.skipPayment" : "No quiero apoyar el desarrollo de Franz.",
37 "pricing.submit.label" : "I want to support the development of Franz", 37 "pricing.submit.label" : "Quiero apoyar el desarrollo de Franz",
38 "pricing.support.label" : "Select your support plan", 38 "pricing.support.label" : "Selecciona tu plan de soporte",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Recargar {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Intentando recuperar automáticamente {name} en {seconds} segundos",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "¡Oh, no!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} ha causado un error.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Activar {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} está desactivado",
45 "services.getStarted" : "Get started", 45 "services.getStarted" : "Primeros pasos",
46 "services.welcome" : "Welcome to Franz", 46 "services.welcome" : "Bienvenido a Franz",
47 "settings.account.account.editButton" : "Edit account", 47 "settings.account.account.editButton" : "Editar cuenta",
48 "settings.account.accountType.basic" : "Basic Account", 48 "settings.account.accountType.basic" : "Cuenta Básica",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "Cuenta Colaborador Premium",
50 "settings.account.buttonSave" : "Update profile", 50 "settings.account.buttonSave" : "Actualizar perfil",
51 "settings.account.headline" : "Account", 51 "settings.account.deleteAccount" : "Eliminar cuenta",
52 "settings.account.headlineAccount" : "Account information", 52 "settings.account.deleteEmailSent" : "Ha recibido un correo electrónico con el enlace para confirmar la eliminación de su cuenta. ¡Su cuenta y sus datos no podrán ser restaurados!",
53 "settings.account.headlineInvoices" : "Invoices", 53 "settings.account.deleteInfo" : "Si usted no necesita una cuenta de Franz, puede eliminarla junto a todos los datos aquí relacionados.",
54 "settings.account.headlinePassword" : "Change password", 54 "settings.account.headline" : "Cuenta",
55 "settings.account.headlineProfile" : "Update profile", 55 "settings.account.headlineAccount" : "Información de la cuenta",
56 "settings.account.headlineSubscription" : "Your subscription", 56 "settings.account.headlineDangerZone" : "Zona Peligrosa",
57 "settings.account.headlineUpgrade" : "Upgrade your account & support Franz", 57 "settings.account.headlineInvoices" : "Facturas",
58 "settings.account.invoiceDownload" : "Download", 58 "settings.account.headlinePassword" : "Cambiar contraseña",
59 "settings.account.manageSubscription.label" : "Manage your subscription", 59 "settings.account.headlineProfile" : "Actualizar perfil",
60 "settings.account.mining.active" : "You are right now performing {hashes} calculations per second.", 60 "settings.account.headlineSubscription" : "Su suscripción",
61 "settings.account.mining.cancel" : "Cancel mining", 61 "settings.account.headlineUpgrade" : "Actualice su cuenta y apoye a Franz",
62 "settings.account.mining.moreInformation" : "Get more information", 62 "settings.account.invoiceDownload" : "Descargar",
63 "settings.account.mining.thankyou" : "Thank you for supporting Franz with your processing power.", 63 "settings.account.manageSubscription.label" : "Administre su suscripción",
64 "settings.account.successInfo" : "Your changes have been saved", 64 "settings.account.mining.active" : "Ahora mismo esta realizando {hashes} cálculos por segundo.",
65 "settings.account.tryReloadUserInfoRequest" : "Try again", 65 "settings.account.mining.cancel" : "Cancelar minería",
66 "settings.account.userInfoRequestFailed" : "Could not load user information", 66 "settings.account.mining.moreInformation" : "Obtener más información",
67 "settings.app.buttonInstallUpdate" : "Restart & install update", 67 "settings.account.mining.thankyou" : "Gracias por apoyar a Franz con su potencia de procesamiento.",
68 "settings.app.buttonSearchForUpdate" : "Check for updates", 68 "settings.account.successInfo" : "Sus cambios han sido guardados",
69 "settings.app.currentVersion" : "Current version:", 69 "settings.account.tryReloadUserInfoRequest" : "Intentar de nuevo",
70 "settings.app.form.autoLaunchInBackground" : "Open in background", 70 "settings.account.userInfoRequestFailed" : "No ha sido posible cargar la información de usuario",
71 "settings.app.form.autoLaunchOnStart" : "Launch Franz on start", 71 "settings.app.buttonClearAllCache" : "Limpiar caché",
72 "settings.app.form.beta" : "Include beta versions", 72 "settings.app.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 73 "settings.app.buttonSearchForUpdate" : "Comprobar actualizaciones",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray", 74 "settings.app.cacheInfo" : "El cache de Franz actualmente usa {size} de espacio en disco.",
75 "settings.app.form.language" : "Language", 75 "settings.app.currentVersion" : "Versión actual:",
76 "settings.app.form.minimizeToSystemTray" : "Minimize Franz to system tray", 76 "settings.app.form.autoLaunchInBackground" : "Abrir en segundo plano",
77 "settings.app.form.runInBackground" : "Keep Franz in background when closing the window", 77 "settings.app.form.autoLaunchOnStart" : "Abrir Franz al iniciar",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 78 "settings.app.form.beta" : "Incluir versiones beta",
79 "settings.app.headline" : "Settings", 79 "settings.app.form.enableSpellchecking" : "Activar la verificación ortográfica",
80 "settings.app.headlineAdvanced" : "Advanced", 80 "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema",
81 "settings.app.headlineAppearance" : "Appearance", 81 "settings.app.form.language" : "Idioma",
82 "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema",
83 "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana",
84 "settings.app.form.showDisabledServices" : "Mostrar pestañas de servicios desactivados",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar la insignia de mensajes sin leer cuando las notificaciones están desactivadas",
86 "settings.app.headline" : "Configuración",
87 "settings.app.headlineAdvanced" : "Avanzado",
88 "settings.app.headlineAppearance" : "Apariencia",
82 "settings.app.headlineGeneral" : "General", 89 "settings.app.headlineGeneral" : "General",
83 "settings.app.headlineLanguage" : "Language", 90 "settings.app.headlineLanguage" : "Idioma",
84 "settings.app.headlineUpdates" : "Updates", 91 "settings.app.headlineUpdates" : "Actualizaciones",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Los cambios requieren reiniciar",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Caché",
87 "settings.app.updateStatusAvailable" : "Update available, downloading...", 94 "settings.app.translationHelp" : "Ayúdenos a traducir Franz a su idioma.",
88 "settings.app.updateStatusSearching" : "Is searching for update", 95 "settings.app.updateStatusAvailable" : "Actualización disponible, descargando...",
89 "settings.app.updateStatusUpToDate" : "You are using the latest version of Franz", 96 "settings.app.updateStatusSearching" : "Buscando actualizaciones",
90 "settings.navigation.account" : "Account", 97 "settings.app.updateStatusUpToDate" : "Está utilizando la última versión de Franz",
91 "settings.navigation.availableServices" : "Available services", 98 "settings.navigation.account" : "Cuenta",
92 "settings.navigation.logout" : "Logout", 99 "settings.navigation.availableServices" : "Servicios disponibles",
93 "settings.navigation.settings" : "Settings", 100 "settings.navigation.logout" : "Cerrar sesión",
94 "settings.navigation.yourServices" : "Your services", 101 "settings.navigation.settings" : "Configuración",
95 "settings.recipes.all" : "All services", 102 "settings.navigation.yourServices" : "Sus servicios",
96 "settings.recipes.dev" : "Development", 103 "settings.recipes.all" : "Todos los servicios",
97 "settings.recipes.headline" : "Available services", 104 "settings.recipes.dev" : "Desarrollo",
98 "settings.recipes.missingService" : "Missing a service?", 105 "settings.recipes.headline" : "Servicios disponibles",
99 "settings.recipes.mostPopular" : "Most popular", 106 "settings.recipes.missingService" : "¿Falta algún servicio?",
100 "settings.recipes.nothingFound" : "Sorry, but no service matched your search term.", 107 "settings.recipes.mostPopular" : "Más populares",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service successfully added", 108 "settings.recipes.nothingFound" : "Lo siento, no se encuentra ningún servicio con tus condiciones de búsqueda.",
102 "settings.service.error.goBack" : "Back to services", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Servicio añadido satisfactoriamente",
110 "settings.searchService" : "Buscar Servicio",
111 "settings.service.error.goBack" : "Volver a los servicios",
103 "settings.service.error.headline" : "Error", 112 "settings.service.error.headline" : "Error",
104 "settings.service.error.message" : "Could not load service recipe.", 113 "settings.service.error.message" : "No se puede cargar el servicio",
105 "settings.service.form.addServiceHeadline" : "Add {name}", 114 "settings.service.form.addServiceHeadline" : "Añadir {name}",
106 "settings.service.form.availableServices" : "Available services", 115 "settings.service.form.availableServices" : "Servicios disponibles",
107 "settings.service.form.customUrl" : "Custom server", 116 "settings.service.form.customUrl" : "Servidor personalizado",
108 "settings.service.form.customUrlPremiumInfo" : "To add self hosted services, you need a Franz Premium Supporter Account.", 117 "settings.service.form.customUrlPremiumInfo" : "Para añadir tus propios servicios necesitas una Cuenta Colaborador Premium de Franz.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade your account", 118 "settings.service.form.customUrlUpgradeAccount" : "Asciende tu cuenta",
110 "settings.service.form.customUrlValidationError" : "Could not validate custom {name} server.", 119 "settings.service.form.customUrlValidationError" : "No se pudo validar el servidor personalizado {name}.",
111 "settings.service.form.deleteButton" : "Delete service", 120 "settings.service.form.deleteButton" : "Eliminar servicio",
112 "settings.service.form.editServiceHeadline" : "Edit {name}", 121 "settings.service.form.editServiceHeadline" : "Editar {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Habilitar audio",
114 "settings.service.form.enableNotification" : "Enable notifications", 123 "settings.service.form.enableBadge" : "Mostrar insignia de mensajes no leídos",
115 "settings.service.form.enableService" : "Enable service", 124 "settings.service.form.enableNotification" : "Activar notificaciones",
116 "settings.service.form.indirectMessageInfo" : "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", 125 "settings.service.form.enableService" : "Activar servicio",
117 "settings.service.form.indirectMessages" : "Show message badge for all new messages", 126 "settings.service.form.headlineBadges" : "Insignias de mensaje no leídos",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 127 "settings.service.form.headlineGeneral" : "General",
119 "settings.service.form.name" : "Name", 128 "settings.service.form.headlineNotifications" : "Notificaciones",
120 "settings.service.form.saveButton" : "Save service", 129 "settings.service.form.icon" : "Icono Personalizado",
121 "settings.service.form.tabHosted" : "Hosted", 130 "settings.service.form.iconDelete" : "Borrar",
122 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸", 131 "settings.service.form.iconUpload" : "Arrastra tu imagen o haz clic aquí",
123 "settings.service.form.team" : "Team", 132 "settings.service.form.indirectMessageInfo" : "Se le notificará de todos los mensajes del canal, no sólo @username, @channel, @here, ...",
124 "settings.service.form.yourServices" : "Your services", 133 "settings.service.form.indirectMessages" : "Muestra etiqueta de notificación para todos los mensajes nuevos",
125 "settings.services.deletedInfo" : "Service has been deleted", 134 "settings.service.form.isMutedInfo" : "Cuando estén desactivados, todos los sonidos de notificación y la reproducción de audio se silencian",
126 "settings.services.discoverServices" : "Discover services", 135 "settings.service.form.name" : "Nombre",
127 "settings.services.headline" : "Your services", 136 "settings.service.form.saveButton" : "Guardar servicio",
128 "settings.services.noServicesAdded" : "You haven't added any services yet.", 137 "settings.service.form.tabHosted" : "Alojado",
129 "settings.services.tooltip.isDisabled" : "Service is disabled", 138 "settings.service.form.tabOnPremise" : "Auto alojado â­ï¸",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 139 "settings.service.form.team" : "Equipo",
131 "settings.services.tooltip.notificationsDisabled" : "Notifications are disabled", 140 "settings.service.form.useHostedService" : "Use el servicio alojado {name}.",
132 "settings.services.updatedInfo" : "Your changes have been saved", 141 "settings.service.form.yourServices" : "Tus servicios",
133 "settings.user.form.accountType.company" : "Company", 142 "settings.services.deletedInfo" : "El servicio ha sido borrado",
134 "settings.user.form.accountType.individual" : "Individual", 143 "settings.services.discoverServices" : "Descubrir servicios",
135 "settings.user.form.accountType.label" : "Account type", 144 "settings.services.headline" : "Tus servicios",
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 145 "settings.services.noServicesAdded" : "No has añadido ningún servicio aún.",
137 "settings.user.form.currentPassword" : "Current password", 146 "settings.services.tooltip.isDisabled" : "El servicio está desactivado",
138 "settings.user.form.email" : "Email", 147 "settings.services.tooltip.isMuted" : "Todos los sonidos están silenciados",
139 "settings.user.form.firstname" : "First Name", 148 "settings.services.tooltip.notificationsDisabled" : "Las notificaciones están desactivadas",
140 "settings.user.form.lastname" : "Last Name", 149 "settings.services.updatedInfo" : "Tus cambios se han guardado",
141 "settings.user.form.newPassword" : "New password", 150 "settings.user.form.accountType.company" : "Compañía",
142 "sidebar.addNewService" : "Add new service", 151 "settings.user.form.accountType.individual" : "Personal",
143 "sidebar.mute" : "Disable audio", 152 "settings.user.form.accountType.label" : "Tipo de cuenta",
144 "sidebar.settings" : "Settings", 153 "settings.user.form.accountType.non-profit" : "Sin fines lucrativos",
145 "sidebar.unmute" : "Enable audio", 154 "settings.user.form.currentPassword" : "Contraseña actual",
146 "signup.company.label" : "Company", 155 "settings.user.form.email" : "Correo electrónico",
147 "signup.email.label" : "Email address", 156 "settings.user.form.firstname" : "Nombre",
148 "signup.emailDuplicate" : "A user with that email address already exists", 157 "settings.user.form.lastname" : "Apellidos",
149 "signup.firstname.label" : "First Name", 158 "settings.user.form.newPassword" : "Contraseña nueva",
150 "signup.headline" : "Sign up", 159 "sidebar.addNewService" : "Añadir un nuevo servicio",
151 "signup.lastname.label" : "Last Name", 160 "sidebar.muteApp" : "Desactivar notificaciones y sonido",
152 "signup.legal.info" : "By creating a Franz account you accept the", 161 "sidebar.settings" : "Configuración",
153 "signup.legal.privacy" : "Privacy Statement", 162 "sidebar.unmuteApp" : "Activar notificaciones y sonido",
154 "signup.legal.terms" : "Terms of service", 163 "signup.company.label" : "Compañía",
155 "signup.link.login" : "Already have an account, sign in?", 164 "signup.email.label" : "Dirección de correo electrónico",
156 "signup.password.label" : "Password", 165 "signup.emailDuplicate" : "Ya existe un usuario con esa dirección de correo electrónico",
157 "signup.submit.label" : "Create account", 166 "signup.firstname.label" : "Nombre",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 167 "signup.headline" : "Registrarse",
159 "subscription.features.ads" : "No ads, ever!", 168 "signup.lastname.label" : "Apellidos",
160 "subscription.features.comingSoon" : "coming soon", 169 "signup.legal.info" : "Al crear una cuenta en Franz usted acepta las",
161 "subscription.features.customServices" : "Private services for you and your team", 170 "signup.legal.privacy" : "Declaración de privacidad",
162 "subscription.features.encryptedSync" : "Encrypted session synchronization", 171 "signup.legal.terms" : "Términos de servicio",
163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat", 172 "signup.link.login" : "Ya tienes una cuenta, ¿Iniciar sesión?",
164 "subscription.features.vpn" : "Proxy & VPN support", 173 "signup.password.label" : "Contraseña",
165 "subscription.includedFeatures" : "Paid Franz Premium Supporter Account includes", 174 "signup.submit.label" : "Crear cuenta",
175 "subscription.euTaxInfo" : "Residentes en la UE: pueden ser aplicados impuestos locales",
176 "subscription.features.ads" : "¡Sin publicidad, para siempre!",
177 "subscription.features.comingSoon" : "próximamente",
178 "subscription.features.customServices" : "Servicios privados para ti y tu equipo",
179 "subscription.features.encryptedSync" : "Sincronización de sesión encriptada",
180 "subscription.features.onpremise" : "Añade servicios locales\/autoalojados como HipChat",
181 "subscription.features.vpn" : "Soporte para Proxy y VPN",
182 "subscription.includedFeatures" : "La Cuenta Colaborador Premium de Franz incluye",
166 "subscription.mining.experimental" : "experimental", 183 "subscription.mining.experimental" : "experimental",
167 "subscription.mining.headline" : "How does this work?", 184 "subscription.mining.headline" : "¿Cómo funciona?",
168 "subscription.mining.line1" : "By enabling \"Support with processing power\", Franz will use about 20-50% of your CPU to mine the cryptocurrency Monero which equals approximately $ 5\/year.", 185 "subscription.mining.line1" : "Al habilitar \"Soporte con poder de procesamiento\", Franz usará aproximadamente 20-50% de su CPU para extraer la criptomoneda Monero, lo que equivale a aproximadamente 5 $\/año.",
169 "subscription.mining.line2" : "We will adapt the CPU usage based to your work behaviour to not drain your battery and slow you and your machine down.", 186 "subscription.mining.line2" : "Adaptaremos el uso de la CPU en función de su comportamiento de trabajo para no agotar la batería y evitar que tu equipo vaya más lento.",
170 "subscription.mining.line3" : "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.", 187 "subscription.mining.line3" : "Mientras el sistema de minado se encuentre activo, podrá tener acceso ilimitado a todas las Características del Colaborador Premium de Franz.",
171 "subscription.mining.moreInformation" : "Get more information about this plan.", 188 "subscription.mining.moreInformation" : "Obtén más información sobre este plan.",
172 "subscription.paymentSessionError" : "Could not initialize payment form", 189 "subscription.paymentSessionError" : "No se pudo inicializar el formulario de pago",
173 "subscription.submit.label" : "I want to support the development of Franz", 190 "subscription.submit.label" : "Quiero apoyar el desarrollo de Franz",
174 "subscription.type.free" : "free", 191 "subscription.type.free" : "gratis",
175 "subscription.type.mining" : "Support Franz with processing power", 192 "subscription.type.mining" : "Ayuda a Franz con potencia de procesamiento",
176 "subscription.type.month" : "month", 193 "subscription.type.month" : "mes",
177 "subscription.type.year" : "year", 194 "subscription.type.year" : "año",
178 "subscriptionPopup.buttonCancel" : "Cancel", 195 "subscriptionPopup.buttonCancel" : "Cancelar",
179 "subscriptionPopup.buttonDone" : "Done", 196 "subscriptionPopup.buttonDone" : "Listo",
180 "tabs.item.deleteService" : "Delete service", 197 "tabs.item.deleteService" : "Borrar servicio",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Desactivar sonido",
182 "tabs.item.disableNotifications" : "Disable notifications", 199 "tabs.item.disableNotifications" : "Desactivar notificaciones",
183 "tabs.item.disableService" : "Disable service", 200 "tabs.item.disableService" : "Desactivar servicio",
184 "tabs.item.edit" : "Edit", 201 "tabs.item.edit" : "Editar",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Activar sonido",
186 "tabs.item.enableNotification" : "Enable notifications", 203 "tabs.item.enableNotification" : "Activar notificaciones",
187 "tabs.item.enableService" : "Enable service", 204 "tabs.item.enableService" : "Activar servicio",
188 "tabs.item.reload" : "Reload", 205 "tabs.item.reload" : "Recargar",
189 "welcome.loginButton" : "Login to your account", 206 "welcome.loginButton" : "Accede a tu cuenta",
190 "welcome.signupButton" : "Create a free account", 207 "welcome.signupButton" : "Crear una cuenta gratuita",
191 "welcome.slogan" : "Messaging that works for you" 208 "welcome.slogan" : "Mensajería que funciona para ti"
192} 209}
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index d54d7c34e..4a06975bb 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -1,18 +1,18 @@
1{ 1{
2 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", 2 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz.",
3 "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", 3 "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté(e) à Internet.",
4 "import.headline" : "Importez vos services depuis Franz 4", 4 "import.headline" : "Importez vos services depuis la version 4 de Franz.",
5 "import.notSupportedHeadline" : "Services non supportés actuellement dans Franz 5", 5 "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5",
6 "import.skip.label" : "Je veux ajouter des services manuellement", 6 "import.skip.label" : "Je veux ajouter des services manuellement",
7 "import.submit.label" : "Importer des services", 7 "import.submit.label" : "Importer des services",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Nouveautés",
9 "infobar.buttonInstallUpdate" : "Redémarrer et installer la mise à jour", 9 "infobar.buttonInstallUpdate" : "Redémarrer et installer la mise à jour",
10 "infobar.buttonReloadServices" : "Recharger les services", 10 "infobar.buttonReloadServices" : "Recharger les services",
11 "infobar.requiredRequestsFailed" : "Impossible de charger les services et les informations de l'utilisateur", 11 "infobar.requiredRequestsFailed" : "Impossible d'accéder aux services et informations de l'utilisateur",
12 "infobar.servicesUpdated" : "Vos services ont été mis à jour.", 12 "infobar.servicesUpdated" : "Vos services ont été mis à jour.",
13 "infobar.updateAvailable" : "Une nouvelle mise à jour est disponible pour Franz.", 13 "infobar.updateAvailable" : "Une nouvelle mise à jour pour Franz est disponible.",
14 "invite.email.label" : "Adresse e-mail", 14 "invite.email.label" : "Adresse e-mail",
15 "invite.headline.friends" : "Invitez 3 de vos amis ou collègues", 15 "invite.headline.friends" : "Invitez 3 amis ou collègues",
16 "invite.name.label" : "Nom", 16 "invite.name.label" : "Nom",
17 "invite.skip.label" : "Je veux faire cela plus tard", 17 "invite.skip.label" : "Je veux faire cela plus tard",
18 "invite.submit.label" : "Envoyer des invitations", 18 "invite.submit.label" : "Envoyer des invitations",
@@ -20,41 +20,45 @@
20 "login.headline" : "S'inscrire", 20 "login.headline" : "S'inscrire",
21 "login.invalidCredentials" : "E-mail ou mot de passe invalide", 21 "login.invalidCredentials" : "E-mail ou mot de passe invalide",
22 "login.link.password" : "Réinitialiser le mot de passe", 22 "login.link.password" : "Réinitialiser le mot de passe",
23 "login.link.signup" : "Créer un compte gratuitement", 23 "login.link.signup" : "Créer un compte gratuit",
24 "login.password.label" : "Mot de passe", 24 "login.password.label" : "Mot de passe",
25 "login.serverLogout" : "Votre session a expiré, veuillez vous reconnecter.", 25 "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.",
26 "login.submit.label" : "Se connecter", 26 "login.submit.label" : "Connexion",
27 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", 27 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.",
28 "password.email.label" : "Adresse e-mail", 28 "password.email.label" : "Adresse e-mail",
29 "password.headline" : "Réinitialiser le mot de passe", 29 "password.headline" : "Réinitialiser le mot de passe",
30 "password.link.login" : "Connectez-vous à votre compte", 30 "password.link.login" : "Connectez-vous à votre compte",
31 "password.link.signup" : "Créer un compte gratuitement", 31 "password.link.signup" : "Créer un compte gratuit.",
32 "password.noUser" : "Aucun utilisateur avec cette adresse e-mail n'a été trouvé", 32 "password.noUser" : "Aucun utilisateur n'a été trouvé avec cette adresse e-mail ",
33 "password.submit.label" : "Soumettre", 33 "password.submit.label" : "Soumettre",
34 "password.successInfo" : "Merci de consulter vos e-mails", 34 "password.successInfo" : "Merci de consulter vos e-mails",
35 "pricing.headline" : "Supportez Franz", 35 "pricing.headline" : "Soutenez Franz",
36 "pricing.link.skipPayment" : "Je ne veux pas soutenir le développement de Franz.", 36 "pricing.link.skipPayment" : "Je ne veux pas soutenir le développement de Franz.",
37 "pricing.submit.label" : "Je veux soutenir le développement de Franz", 37 "pricing.submit.label" : "Je veux soutenir le développement de Franz",
38 "pricing.support.label" : "Sélectionnez votre plan de soutien", 38 "pricing.support.label" : "Sélectionnez votre plan de soutien",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Recharger {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Tentative de restauration automatique de {name} dans {seconds} secondes",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Oh non !",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} a causé une erreur.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Activer {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} est désactivé",
45 "services.getStarted" : "Commencer", 45 "services.getStarted" : "Commencer",
46 "services.welcome" : "Bienvenue sur Franz", 46 "services.welcome" : "Bienvenue dans Franz",
47 "settings.account.account.editButton" : "Modifier le compte", 47 "settings.account.account.editButton" : "Modifier le compte",
48 "settings.account.accountType.basic" : "Compte basique", 48 "settings.account.accountType.basic" : "Compte de base",
49 "settings.account.accountType.premium" : "Compte Supporter Premium", 49 "settings.account.accountType.premium" : "Compte supporteur premium",
50 "settings.account.buttonSave" : "Mettre à jour le profil", 50 "settings.account.buttonSave" : "Mettre à jour le profil",
51 "settings.account.deleteAccount" : "Supprimer le compte",
52 "settings.account.deleteEmailSent" : "Vous avez reçu un email contenant le lien pour confirmer la suppression de votre compte. Votre compte et les données qui lui sont associés ne pourront être récupérés",
53 "settings.account.deleteInfo" : "Si vous n'avez plus besoin de votre compte Franz, vous pouvez le supprimer avec toutes ses données associées.",
51 "settings.account.headline" : "Compte", 54 "settings.account.headline" : "Compte",
52 "settings.account.headlineAccount" : "Informations de compte", 55 "settings.account.headlineAccount" : "Informations sur le compte",
56 "settings.account.headlineDangerZone" : "Zone Dangereuse !",
53 "settings.account.headlineInvoices" : "Factures", 57 "settings.account.headlineInvoices" : "Factures",
54 "settings.account.headlinePassword" : "Changer le mot de passe", 58 "settings.account.headlinePassword" : "Changer le mot de passe",
55 "settings.account.headlineProfile" : "Mettre à jour le profil", 59 "settings.account.headlineProfile" : "Mettre à jour le profil",
56 "settings.account.headlineSubscription" : "Votre abonnement", 60 "settings.account.headlineSubscription" : "Votre abonnement",
57 "settings.account.headlineUpgrade" : "Améliorez votre compte et supportez Franz", 61 "settings.account.headlineUpgrade" : "Améliorez votre compte et soutenez Franz",
58 "settings.account.invoiceDownload" : "Télécharger", 62 "settings.account.invoiceDownload" : "Télécharger",
59 "settings.account.manageSubscription.label" : "Gérer votre abonnement", 63 "settings.account.manageSubscription.label" : "Gérer votre abonnement",
60 "settings.account.mining.active" : "Vous êtes en train d'effectuer {hashes} calculs par seconde.", 64 "settings.account.mining.active" : "Vous êtes en train d'effectuer {hashes} calculs par seconde.",
@@ -64,28 +68,32 @@
64 "settings.account.successInfo" : "Vos modifications ont été enregistrées", 68 "settings.account.successInfo" : "Vos modifications ont été enregistrées",
65 "settings.account.tryReloadUserInfoRequest" : "Réessayer", 69 "settings.account.tryReloadUserInfoRequest" : "Réessayer",
66 "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur", 70 "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur",
71 "settings.app.buttonClearAllCache" : "Vider le cache",
67 "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour", 72 "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour",
68 "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour", 73 "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour",
69 "settings.app.currentVersion" : "Version actuelle:", 74 "settings.app.cacheInfo" : "Le cache de Franz occupe actuellement {size} en espace disque.",
75 "settings.app.currentVersion" : "Version actuelle :",
70 "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan", 76 "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan",
71 "settings.app.form.autoLaunchOnStart" : "Lancer Franz au démarrage", 77 "settings.app.form.autoLaunchOnStart" : "Lancer Franz au démarrage",
72 "settings.app.form.beta" : "Inclure les versions bêta", 78 "settings.app.form.beta" : "Accepter les versions bêta",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Activer la vérification orthographique",
74 "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système", 80 "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système",
75 "settings.app.form.language" : "Langue", 81 "settings.app.form.language" : "Langue",
76 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification", 82 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification",
77 "settings.app.form.runInBackground" : "Ouvrir en arrière-plan", 83 "settings.app.form.runInBackground" : "Garder Franz ouvert en arrière-plan à la fermeture de la fenêtre",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Afficher les onglets des services désactivés",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Afficher les badges de messages non lus quand les notifications sont désactivées.",
79 "settings.app.headline" : "Paramètres", 86 "settings.app.headline" : "Paramètres",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Paramètres avancés",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Apparence",
82 "settings.app.headlineGeneral" : "Général", 89 "settings.app.headlineGeneral" : "Général",
83 "settings.app.headlineLanguage" : "Langue", 90 "settings.app.headlineLanguage" : "Langue",
84 "settings.app.headlineUpdates" : "Mises à jour", 91 "settings.app.headlineUpdates" : "Mises à jour",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Les modifications nécessitent un redémarrage",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
87 "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement...", 94 "settings.app.translationHelp" : "Aidez-nous à traduire Franz dans votre langue.",
88 "settings.app.updateStatusSearching" : "Recherche des mises à jour", 95 "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...",
96 "settings.app.updateStatusSearching" : "Recherche d'une mise à jour",
89 "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz", 97 "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz",
90 "settings.navigation.account" : "Compte", 98 "settings.navigation.account" : "Compte",
91 "settings.navigation.availableServices" : "Services disponibles", 99 "settings.navigation.availableServices" : "Services disponibles",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Tous les services", 103 "settings.recipes.all" : "Tous les services",
96 "settings.recipes.dev" : "Développement", 104 "settings.recipes.dev" : "Développement",
97 "settings.recipes.headline" : "Services disponibles", 105 "settings.recipes.headline" : "Services disponibles",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Un service est manquant ?",
99 "settings.recipes.mostPopular" : "Les plus populaires", 107 "settings.recipes.mostPopular" : "Les plus populaires",
100 "settings.recipes.nothingFound" : "Désolé, aucun service ne correspond à votre recherche.", 108 "settings.recipes.nothingFound" : "Désolé, aucun service ne correspond à votre recherche.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service ajouté avec succès", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Le service a été ajouté avec succès",
110 "settings.searchService" : "Chercher un service",
102 "settings.service.error.goBack" : "Retour aux services", 111 "settings.service.error.goBack" : "Retour aux services",
103 "settings.service.error.headline" : "Erreur", 112 "settings.service.error.headline" : "Erreur",
104 "settings.service.error.message" : "Impossible de charger le service.", 113 "settings.service.error.message" : "Impossible de charger le service.",
@@ -107,65 +116,73 @@
107 "settings.service.form.customUrl" : "Serveur personnalisé", 116 "settings.service.form.customUrl" : "Serveur personnalisé",
108 "settings.service.form.customUrlPremiumInfo" : "Pour ajouter des services auto-hébergés, vous avez besoin d'un compte Supporter Premium Franz.", 117 "settings.service.form.customUrlPremiumInfo" : "Pour ajouter des services auto-hébergés, vous avez besoin d'un compte Supporter Premium Franz.",
109 "settings.service.form.customUrlUpgradeAccount" : "Améliorez votre compte", 118 "settings.service.form.customUrlUpgradeAccount" : "Améliorez votre compte",
110 "settings.service.form.customUrlValidationError" : "Impossible de valider le {name} personnalisé du serveur.", 119 "settings.service.form.customUrlValidationError" : "Impossible de valider le serveur personnalisé {name}.",
111 "settings.service.form.deleteButton" : "Supprimer le service", 120 "settings.service.form.deleteButton" : "Supprimer le service",
112 "settings.service.form.editServiceHeadline" : "Modifier {name}", 121 "settings.service.form.editServiceHeadline" : "Modifier {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Activer l'audio",
123 "settings.service.form.enableBadge" : "Afficher le badge des messages non lus",
114 "settings.service.form.enableNotification" : "Activer les notifications", 124 "settings.service.form.enableNotification" : "Activer les notifications",
115 "settings.service.form.enableService" : "Activer le service", 125 "settings.service.form.enableService" : "Activer le service",
116 "settings.service.form.indirectMessageInfo" : "Vous serez averti de tous les nouveaux messages dans un salon, pas seulement @username, @channel, @here, ...", 126 "settings.service.form.headlineBadges" : "Badge des messages non lus",
127 "settings.service.form.headlineGeneral" : "Général",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Icône personnalisée",
130 "settings.service.form.iconDelete" : "Supprimer",
131 "settings.service.form.iconUpload" : "Déposez votre image, ou cliquez ici",
132 "settings.service.form.indirectMessageInfo" : "Vous serez averti de tous les nouveaux messages en ligne, pas seulement sur @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Afficher le badge des messages pour tous les nouveaux messages", 133 "settings.service.form.indirectMessages" : "Afficher le badge des messages pour tous les nouveaux messages",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Lorsque désactivé, tous les sons de notifications ainsi que l'audio sont coupés",
119 "settings.service.form.name" : "Nom", 135 "settings.service.form.name" : "Nom",
120 "settings.service.form.saveButton" : "Enregistrer le service", 136 "settings.service.form.saveButton" : "Enregistrer le service",
121 "settings.service.form.tabHosted" : "Hébergé", 137 "settings.service.form.tabHosted" : "Hébergé",
122 "settings.service.form.tabOnPremise" : "Auto-hébergé â­ï¸", 138 "settings.service.form.tabOnPremise" : "Auto-hébergé â­ï¸",
123 "settings.service.form.team" : "Équipe", 139 "settings.service.form.team" : "Équipe",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Vos services", 141 "settings.service.form.yourServices" : "Vos services",
125 "settings.services.deletedInfo" : "Le service a été supprimé", 142 "settings.services.deletedInfo" : "Le service a été supprimé",
126 "settings.services.discoverServices" : "Découvrir des services", 143 "settings.services.discoverServices" : "Découvrir les services",
127 "settings.services.headline" : "Vos services", 144 "settings.services.headline" : "Vos services",
128 "settings.services.noServicesAdded" : "Vous n'avez pas encore ajouté de services.", 145 "settings.services.noServicesAdded" : "Vous n'avez pas encore ajouté de services.",
129 "settings.services.tooltip.isDisabled" : "Le service est désactivé", 146 "settings.services.tooltip.isDisabled" : "Ce service est désactivé",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Tous les sons sont coupés",
131 "settings.services.tooltip.notificationsDisabled" : "Les notifications sont désactivées", 148 "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.",
132 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées", 149 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées",
133 "settings.user.form.accountType.company" : "Entreprise", 150 "settings.user.form.accountType.company" : "Entreprise",
134 "settings.user.form.accountType.individual" : "Individuel", 151 "settings.user.form.accountType.individual" : "Individuel",
135 "settings.user.form.accountType.label" : "Type de compte", 152 "settings.user.form.accountType.label" : "Type de compte",
136 "settings.user.form.accountType.non-profit" : "Non lucratif", 153 "settings.user.form.accountType.non-profit" : "Non-lucratif",
137 "settings.user.form.currentPassword" : "Mot de passe actuel", 154 "settings.user.form.currentPassword" : "Mot de passe actuel",
138 "settings.user.form.email" : "E-mail", 155 "settings.user.form.email" : "E-mail",
139 "settings.user.form.firstname" : "Prénom", 156 "settings.user.form.firstname" : "Prénom",
140 "settings.user.form.lastname" : "Nom", 157 "settings.user.form.lastname" : "Nom",
141 "settings.user.form.newPassword" : "Nouveau mot de passe", 158 "settings.user.form.newPassword" : "Nouveau mot de passe",
142 "sidebar.addNewService" : "Ajouter un nouveau service", 159 "sidebar.addNewService" : "Ajouter un nouveau service",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Désactiver les notifications et les sons",
144 "sidebar.settings" : "Paramètres", 161 "sidebar.settings" : "Paramètres",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Activer les notifications et les sons",
146 "signup.company.label" : "Entreprise", 163 "signup.company.label" : "Entreprise",
147 "signup.email.label" : "Adresse e-mail", 164 "signup.email.label" : "Adresse e-mail",
148 "signup.emailDuplicate" : "Un utilisateur avec cette adresse e-mail existe déjà", 165 "signup.emailDuplicate" : "Cette adresse e-mail est déjà utilisée",
149 "signup.firstname.label" : "Prénom", 166 "signup.firstname.label" : "Prénom",
150 "signup.headline" : "S'inscrire", 167 "signup.headline" : "S'inscrire",
151 "signup.lastname.label" : "Nom", 168 "signup.lastname.label" : "Nom",
152 "signup.legal.info" : "En créant un compte Franz, vous acceptez les", 169 "signup.legal.info" : "En créant un compte Franz, vous acceptez la",
153 "signup.legal.privacy" : "Déclaration de confidentialité", 170 "signup.legal.privacy" : "Déclaration de confidentialité",
154 "signup.legal.terms" : "Conditions d'utilisation", 171 "signup.legal.terms" : "Conditions d'utilisation",
155 "signup.link.login" : "Vous possédez déjà un compte ? Connectez-vous", 172 "signup.link.login" : "Vous avez déjà un compte ? Connectez-vous",
156 "signup.password.label" : "Mot de passe", 173 "signup.password.label" : "Mot de passe",
157 "signup.submit.label" : "Créer un compte", 174 "signup.submit.label" : "Créer un compte",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Résidents de l'UE : une taxe locale peut s'appliquer",
159 "subscription.features.ads" : "Aucune publicité!", 176 "subscription.features.ads" : "No ads, ever!",
160 "subscription.features.comingSoon" : "arrive bientôt", 177 "subscription.features.comingSoon" : "coming soon",
161 "subscription.features.customServices" : "Des services privés pour vous et votre équipe", 178 "subscription.features.customServices" : "Private services for you and your team",
162 "subscription.features.encryptedSync" : "Synchronisation de session chiffrée", 179 "subscription.features.encryptedSync" : "Encrypted session synchronization",
163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat", 180 "subscription.features.onpremise" : "Ajouter des services locaux\/hébergés comme HipChat",
164 "subscription.features.vpn" : "Support des Proxy et VPN", 181 "subscription.features.vpn" : "Support des Proxy et VPN",
165 "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", 182 "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut",
166 "subscription.mining.experimental" : "expérimental", 183 "subscription.mining.experimental" : "expérimental",
167 "subscription.mining.headline" : "Comment cela fonctionne-t-il?", 184 "subscription.mining.headline" : "Comment ça marche ?",
168 "subscription.mining.line1" : "En activant \"Soutenez Franz avec de la puissance de calcul\", Franz utilisera environ de 20 à 50% de votre CPU pour miner la crypto-monnaie Monero, ce qui équivaut à environ 5$\/an.", 185 "subscription.mining.line1" : "En activant \"Soutenez Franz avec de la puissance de calcul\", Franz utilisera entre 20 et 50% de votre CPU pour miner la crypto-monnaie Monero, ce qui équivaut à environ 5$\/an.",
169 "subscription.mining.line2" : "Nous adapterons l'utilisation du processeur en fonction de vos habitudes de travail pour ne pas vider votre batterie et ne pas ralentir votre machine.", 186 "subscription.mining.line2" : "Nous adapterons l'utilisation du processeur en fonction de vos habitudes de travail pour ne pas vider votre batterie et ne pas ralentir votre machine.",
170 "subscription.mining.line3" : "Tant que le minage est actif, vous aurez un accès illimité à toutes les fonctionnalités Supporter Premium Franz.", 187 "subscription.mining.line3" : "Tant que le minage est actif, vous aurez un accès illimité à toutes les fonctionnalités Supporter Premium Franz.",
171 "subscription.mining.moreInformation" : "Obtenir plus d'informations.", 188 "subscription.mining.moreInformation" : "Obtenir plus d'informations.",
@@ -178,15 +195,15 @@
178 "subscriptionPopup.buttonCancel" : "Annuler", 195 "subscriptionPopup.buttonCancel" : "Annuler",
179 "subscriptionPopup.buttonDone" : "Terminé", 196 "subscriptionPopup.buttonDone" : "Terminé",
180 "tabs.item.deleteService" : "Supprimer le service", 197 "tabs.item.deleteService" : "Supprimer le service",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Désactiver l'audio",
182 "tabs.item.disableNotifications" : "Désactiver les notifications", 199 "tabs.item.disableNotifications" : "Désactiver les notifications",
183 "tabs.item.disableService" : "Désactiver le service", 200 "tabs.item.disableService" : "Désactiver le service",
184 "tabs.item.edit" : "Modifier", 201 "tabs.item.edit" : "Modifier",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Activer l'audio",
186 "tabs.item.enableNotification" : "Activer les notifications", 203 "tabs.item.enableNotification" : "Activer les notifications",
187 "tabs.item.enableService" : "Activer le service", 204 "tabs.item.enableService" : "Activer le service",
188 "tabs.item.reload" : "Recharger", 205 "tabs.item.reload" : "Recharger",
189 "welcome.loginButton" : "Connectez-vous à votre compte", 206 "welcome.loginButton" : "Connectez-vous à votre compte",
190 "welcome.signupButton" : "Créer un compte gratuitement", 207 "welcome.signupButton" : "Créer un compte gratuit",
191 "welcome.slogan" : "Une messagerie qui fonctionne pour vous" 208 "welcome.slogan" : "Une messagerie qui fonctionne pour vous"
192} 209}
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index 63816cf65..f1a03612d 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -1,21 +1,21 @@
1{ 1{
2 "global.api.unhealthy" : "Ní fhéadfar nascadh le seirbhísí arlíne Franz", 2 "global.api.unhealthy" : "Ní féidir le Franz nascadh le seirbhísí ar líne",
3 "global.notConnectedToTheInternet" : "Níl tú nasctha leis an Idirlíon.", 3 "global.notConnectedToTheInternet" : "Níl tú nasctha leis an Idirlíon.",
4 "import.headline" : "Iompórtáil do chuid seirbhísí Franz 4", 4 "import.headline" : "Iompórtáil do chuid seirbhísí ó Franz 4",
5 "import.notSupportedHeadline" : "Níl na seirbhísí seo taca i Franz 5 go fóill", 5 "import.notSupportedHeadline" : "Níl na seirbhísí seo faoi thacaíocht le Franz 5 go fóill",
6 "import.skip.label" : "Ba mhaith liom seirbhísí a chur leis de láimh", 6 "import.skip.label" : "Ba mhaith liom seirbhísí a chur de láimh",
7 "import.submit.label" : "Iomportaigh seirbhísí", 7 "import.submit.label" : "Iompórtáil seirbhísí",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Cad atá nua?",
9 "infobar.buttonInstallUpdate" : "Atosaigh & suiteáil nuashonrú", 9 "infobar.buttonInstallUpdate" : "Atosaigh ⊠suiteáil nuashonrú",
10 "infobar.buttonReloadServices" : "Athlódáil seirbhísí", 10 "infobar.buttonReloadServices" : "Athlódáil seirbhísí",
11 "infobar.requiredRequestsFailed" : "Ní fhéadfar seirbhísí agus eolas úsáideora a lódáil", 11 "infobar.requiredRequestsFailed" : "Ní féidir le Franz seirbhísí agus eolas úsáideora a lódáil",
12 "infobar.servicesUpdated" : "Nuashonraítear do chuid seirbhísí.", 12 "infobar.servicesUpdated" : "Nuashonraíodh do chuid seirbhísí.",
13 "infobar.updateAvailable" : "Tá nuashonrú nua do Franz le fáil.", 13 "infobar.updateAvailable" : "Tá nuashonrú nua ar fáil do Franz.",
14 "invite.email.label" : "Seoladh ríomhphoist", 14 "invite.email.label" : "Seoladh ríomhphoist",
15 "invite.headline.friends" : "Tabhair cuireadh do thriúr de do chairde nó chomhghleacaithe", 15 "invite.headline.friends" : "Tabhair cuireadh do thriúr chara nó chomhghleacaí",
16 "invite.name.label" : "Ainm", 16 "invite.name.label" : "Ainm",
17 "invite.skip.label" : "Ba mhaith liom é seo a dhéanamh níos deireanaí", 17 "invite.skip.label" : "Ba mhaith liom é seo a dhéanamh níos deireanaí",
18 "invite.submit.label" : "Seol cuireadh", 18 "invite.submit.label" : "Seol cuirí",
19 "login.email.label" : "Seoladh ríomhphoist", 19 "login.email.label" : "Seoladh ríomhphoist",
20 "login.headline" : "Logáil isteach", 20 "login.headline" : "Logáil isteach",
21 "login.invalidCredentials" : "Seoladh ríomhphoist nó pasfhocal neamhbhailí", 21 "login.invalidCredentials" : "Seoladh ríomhphoist nó pasfhocal neamhbhailí",
@@ -27,29 +27,33 @@
27 "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.", 27 "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.",
28 "password.email.label" : "Seoladh ríomhphoist", 28 "password.email.label" : "Seoladh ríomhphoist",
29 "password.headline" : "Athshocraigh pasfhocal", 29 "password.headline" : "Athshocraigh pasfhocal",
30 "password.link.login" : "Logáil isteach i do chúntas", 30 "password.link.login" : "Logáil isteach do do chúntas",
31 "password.link.signup" : "Cruthaigh cuntas saor in aisce", 31 "password.link.signup" : "Cruthaigh cuntas saor in aisce",
32 "password.noUser" : "Níor aimsíodh úsáideoir leis an seoladh ríomhphoist seo", 32 "password.noUser" : "Níor aimsíodh úsáideoir leis an seoladh ríomhphoist seo",
33 "password.submit.label" : "Cuir isteach", 33 "password.submit.label" : "Cuir isteach",
34 "password.successInfo" : "Seiceáil do chuid ríomhphoist, le do thoil", 34 "password.successInfo" : "Seiceáil do chuid ríomhphoist, le do thoil",
35 "pricing.headline" : "Tabhair tacaíocht do Franz", 35 "pricing.headline" : "Tabhair tacaíocht do Franz",
36 "pricing.link.skipPayment" : "Ní mhaith liom tacaíocht a thabhairt d'fhorbairt Franz.", 36 "pricing.link.skipPayment" : "Ní mhaith liom tacaíocht a thabhairt d'fhorbairt Franz.",
37 "pricing.submit.label" : "Ba maith liom tacaíocht a thabhairt d'fhorbairt Franz.", 37 "pricing.submit.label" : "Ba mhaith liom tacaíocht a thabhairt d'fhorbairt Franz.",
38 "pricing.support.label" : "Roghnaigh do phlean tacaíochta", 38 "pricing.support.label" : "Roghnaigh do phlean tacaíochta",
39 "service.crashHandler.action" : "Athlódáil {name}", 39 "service.crashHandler.action" : "Athlódáil {name}",
40 "service.crashHandler.autoReload" : "Ag baint triail {name} a thabhairt ar ais go huathoibríoch i gceann {seconds} shoicind", 40 "service.crashHandler.autoReload" : "Ag baint triail {name} a thabhairt ar ais go huathoibríoch i gceann {seconds} shoicind",
41 "service.crashHandler.headline" : "Ã, ná habair!", 41 "service.crashHandler.headline" : "Oró, ní hea!",
42 "service.crashHandler.text" : "Tá {name} tar éis earraid a dhéanamh.", 42 "service.crashHandler.text" : "Tá {name} tar éis earraid a dhéanamh.",
43 "service.disabledHandler.action" : "Cumasaigh {name}", 43 "service.disabledHandler.action" : "Cumasaigh {name}",
44 "service.disabledHandler.headline" : "Tá {name} díchumasaithe", 44 "service.disabledHandler.headline" : "Tá {name} díchumasaithe",
45 "services.getStarted" : "Tosaigh", 45 "services.getStarted" : "Cuir tús",
46 "services.welcome" : "Fáilte go Franz", 46 "services.welcome" : "Fáilte go Franz",
47 "settings.account.account.editButton" : "Cuir cuntas in eagar", 47 "settings.account.account.editButton" : "Cuir cuntas in eagar",
48 "settings.account.accountType.basic" : "Bunchuntas", 48 "settings.account.accountType.basic" : "Bunchuntas",
49 "settings.account.accountType.premium" : "Cuntas Phŕeimhtacadóra Franz", 49 "settings.account.accountType.premium" : "Cuntas Phŕeimhtacadóra Franz",
50 "settings.account.buttonSave" : "Nuashonraigh próifíl", 50 "settings.account.buttonSave" : "Nuashonraigh próifíl",
51 "settings.account.deleteAccount" : "Scrios cuntas",
52 "settings.account.deleteEmailSent" : "Fuair tú ríomhphost a fháil le nasc a dheimhnóidh scriosadh do chuntais. Ní feidir leat do chuntas agus do chuid sonraí a thabhairt ar ais!",
53 "settings.account.deleteInfo" : "Más rud é nár ghá duit cuntas Franz a bheith agat a thuilleadh, is féidir leat do chuntas agus gach sonraí riachtanach a scriosadh anseo.",
51 "settings.account.headline" : "Cuntas", 54 "settings.account.headline" : "Cuntas",
52 "settings.account.headlineAccount" : "Eolas an chuntais", 55 "settings.account.headlineAccount" : "Eolas faoin gcuntas",
56 "settings.account.headlineDangerZone" : "Scrios cuntas",
53 "settings.account.headlineInvoices" : "Sonraisc", 57 "settings.account.headlineInvoices" : "Sonraisc",
54 "settings.account.headlinePassword" : "Athraigh pasfhocal", 58 "settings.account.headlinePassword" : "Athraigh pasfhocal",
55 "settings.account.headlineProfile" : "Nuashonraigh próifíl", 59 "settings.account.headlineProfile" : "Nuashonraigh próifíl",
@@ -58,81 +62,94 @@
58 "settings.account.invoiceDownload" : "Ãoslódáil", 62 "settings.account.invoiceDownload" : "Ãoslódáil",
59 "settings.account.manageSubscription.label" : "Bainistigh do shintiús", 63 "settings.account.manageSubscription.label" : "Bainistigh do shintiús",
60 "settings.account.mining.active" : "Tá tú ag déanamh {hashes} áireamh in aghaidh an soicind anois.", 64 "settings.account.mining.active" : "Tá tú ag déanamh {hashes} áireamh in aghaidh an soicind anois.",
61 "settings.account.mining.cancel" : "Cuir an mhíneáil ar ceal", 65 "settings.account.mining.cancel" : "Cuir míneáil ar ceal",
62 "settings.account.mining.moreInformation" : "Faigh tuilleadh eolais", 66 "settings.account.mining.moreInformation" : "Faigh tuilleadh eolais",
63 "settings.account.mining.thankyou" : "Go raibh maith agat as ucht tacaíocht a thabhairt go Franz le do chumhacht phróiseála.", 67 "settings.account.mining.thankyou" : "Go raibh maith agat as ucht tacaíocht a thabhairt go Franz le do chumhacht phróiseála.",
64 "settings.account.successInfo" : "Sábhailtear do chuid athruithe", 68 "settings.account.successInfo" : "Sábhailtear do chuid athruithe",
65 "settings.account.tryReloadUserInfoRequest" : "Atriail", 69 "settings.account.tryReloadUserInfoRequest" : "Atriail",
66 "settings.account.userInfoRequestFailed" : "Ní fheadfar eolas úsáideora a lódáil", 70 "settings.account.userInfoRequestFailed" : "Ní féidir eolas úsáideora a lódáil",
67 "settings.app.buttonInstallUpdate" : "Atosaigh & suiteáil nuashonrú", 71 "settings.app.buttonClearAllCache" : "Glan taisce",
68 "settings.app.buttonSearchForUpdate" : "Seiceáil do nuashonruithe", 72 "settings.app.buttonInstallUpdate" : "Atosaigh ⊠suiteáil nuashonrú",
73 "settings.app.buttonSearchForUpdate" : "Cinntigh le haghaidh nuashonruithe",
74 "settings.app.cacheInfo" : "Tá taisce Franz ag baint úsáid as {size} de chuid an spáis diosca.",
69 "settings.app.currentVersion" : "Leagan reatha:", 75 "settings.app.currentVersion" : "Leagan reatha:",
70 "settings.app.form.autoLaunchInBackground" : "Oscail sa chúlra", 76 "settings.app.form.autoLaunchInBackground" : "Oscail sa chúlra",
71 "settings.app.form.autoLaunchOnStart" : "Láinseáil Franz ón tús", 77 "settings.app.form.autoLaunchOnStart" : "Láinseáil Franz ón tús",
72 "settings.app.form.beta" : "Cuir leagain béite san áireamh", 78 "settings.app.form.beta" : "Cuir leagain béite san áireamh",
73 "settings.app.form.enableSpellchecking" : "Cumasaigh seiceáil litrithe", 79 "settings.app.form.enableSpellchecking" : "Cumasaigh seiceáil litrithe",
74 "settings.app.form.enableSystemTray" : "Taispeáin Franz i dtrae an chórais", 80 "settings.app.form.enableSystemTray" : "Taispeáin Franz i dtráidire an chórais",
75 "settings.app.form.language" : "Teanga", 81 "settings.app.form.language" : "Teanga",
76 "settings.app.form.minimizeToSystemTray" : "Ãoslaghdaigh Franz go dtí trae an chórais", 82 "settings.app.form.minimizeToSystemTray" : "Ãoslaghdaigh Franz go dtí tráidire an chórais",
77 "settings.app.form.runInBackground" : "Cóimeád Franz sa chúlra agus an fhuinneog a dhúnadh", 83 "settings.app.form.runInBackground" : "Cóimeád Franz sa chúlra agus an fhuinneog a dhúnadh",
78 "settings.app.form.showDisabledServices" : "Taispeáin tabanna do sheirbhísí díchumasaithe", 84 "settings.app.form.showDisabledServices" : "Taispeáin tabanna sheirbhísí dhíchumasaithe",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Taispeáin teachtaireachtaí neamhléite agus fógraí díchumasaithe",
79 "settings.app.headline" : "Socruithe", 86 "settings.app.headline" : "Socruithe",
80 "settings.app.headlineAdvanced" : "Casta", 87 "settings.app.headlineAdvanced" : "Casta",
81 "settings.app.headlineAppearance" : "Dealramh", 88 "settings.app.headlineAppearance" : "Dealramh",
82 "settings.app.headlineGeneral" : "Ginearálta", 89 "settings.app.headlineGeneral" : "Ginearálta",
83 "settings.app.headlineLanguage" : "Teanga", 90 "settings.app.headlineLanguage" : "Teanga",
84 "settings.app.headlineUpdates" : "Nuashonruithe", 91 "settings.app.headlineUpdates" : "Nuashonruithe",
85 "settings.app.restartRequired" : "Ní gá tosú arís chun athruithe a chur i bhfeidhm", 92 "settings.app.restartRequired" : "Ní gá duit tosnú arís chun athruithe a chur i bhfeidhm",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Taisce",
87 "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag íoslódáil", 94 "settings.app.translationHelp" : "Cabhraigh linn, Franz a aistriú do do theanga.",
95 "settings.app.updateStatusAvailable" : "Nuashonrú ar fáil, á íoslódáil...",
88 "settings.app.updateStatusSearching" : "Ag cuardú le haghaidh nuashonrú", 96 "settings.app.updateStatusSearching" : "Ag cuardú le haghaidh nuashonrú",
89 "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagn is deireanaí de Franz", 97 "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagan is deireanaí de Franz",
90 "settings.navigation.account" : "Cuntas", 98 "settings.navigation.account" : "Cuntas",
91 "settings.navigation.availableServices" : "Seirbhísí le fáil", 99 "settings.navigation.availableServices" : "Seirbhísí ar fáil",
92 "settings.navigation.logout" : "Logáil amach", 100 "settings.navigation.logout" : "Logáil amach",
93 "settings.navigation.settings" : "Socruithe", 101 "settings.navigation.settings" : "Socruithe",
94 "settings.navigation.yourServices" : "Do chuid seirbhísí", 102 "settings.navigation.yourServices" : "Do chuid seirbhísí",
95 "settings.recipes.all" : "Gach seirbhís", 103 "settings.recipes.all" : "Gach seirbhís",
96 "settings.recipes.dev" : "Forbairt", 104 "settings.recipes.dev" : "Forbairt",
97 "settings.recipes.headline" : "Seirbhísí le fáil", 105 "settings.recipes.headline" : "Seirbhísí ar fáil",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Seirbhís ar iarraidh?",
99 "settings.recipes.mostPopular" : "Is coitianta", 107 "settings.recipes.mostPopular" : "Is coitianta",
100 "settings.recipes.nothingFound" : "Tá brón orm, ach níl seirbhís ar bith ag teacht le do théarma chuardach.", 108 "settings.recipes.nothingFound" : "Tá brón orm, ach níl seirbhís ar bith ag teacht le do théarma chuardach.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Seirbhís curtha leis go ráthúil", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Seirbhís curtha go ráthúil",
110 "settings.searchService" : "Cuardaigh seirbhís",
102 "settings.service.error.goBack" : "Ar ais go dtí seirbhísí", 111 "settings.service.error.goBack" : "Ar ais go dtí seirbhísí",
103 "settings.service.error.headline" : "Earraid", 112 "settings.service.error.headline" : "Earráid",
104 "settings.service.error.message" : "Ní fhéadfar oideas seirbhíse a lódáil.", 113 "settings.service.error.message" : "Ní féidir le oidis seirbhíse a lódáil.",
105 "settings.service.form.addServiceHeadline" : "Cuir {name} leis", 114 "settings.service.form.addServiceHeadline" : "Cuir {name} leis",
106 "settings.service.form.availableServices" : "Seirbhísí le fáil", 115 "settings.service.form.availableServices" : "Seirbhísí le fáil",
107 "settings.service.form.customUrl" : "Freastalaí saincheaptha", 116 "settings.service.form.customUrl" : "Freastalaí shaincheaptha",
108 "settings.service.form.customUrlPremiumInfo" : "Chun seirbhísí féinóstáilte a chur leis, ní gá Cuntas Phŕeimhtacadóra Franz a bheith agat.", 117 "settings.service.form.customUrlPremiumInfo" : "Chun seirbhísí féinóstáilte a chur le Franz, ní gá Cuntas Phŕeimhtacadóra Franz a bheith agat.",
109 "settings.service.form.customUrlUpgradeAccount" : "Uasghrádaigh do chuntas", 118 "settings.service.form.customUrlUpgradeAccount" : "Uasghrádaigh do chuntas",
110 "settings.service.form.customUrlValidationError" : "Ní fhéadfar seirbhís {name} saincheaptha a dheimhniú", 119 "settings.service.form.customUrlValidationError" : "Ní féidir le seirbhís {name} saincheaptha a dheimhniú",
111 "settings.service.form.deleteButton" : "Scrios seirbhís", 120 "settings.service.form.deleteButton" : "Scrios seirbhís",
112 "settings.service.form.editServiceHeadline" : "Cuir {name} in eagar", 121 "settings.service.form.editServiceHeadline" : "Cuir {name} in eagar",
113 "settings.service.form.enableAudio" : "Cumasaigh fuaim", 122 "settings.service.form.enableAudio" : "Cumasaigh fuaim",
123 "settings.service.form.enableBadge" : "Taispeáin comharthaí do theachtaireachtaí neamhléite",
114 "settings.service.form.enableNotification" : "Cumasaigh fógraí", 124 "settings.service.form.enableNotification" : "Cumasaigh fógraí",
115 "settings.service.form.enableService" : "Cumasaigh seirbhís", 125 "settings.service.form.enableService" : "Cumasaigh seirbhís",
116 "settings.service.form.indirectMessageInfo" : "Fógraítear thú faoi gach teachtaireacht nua i gcainéail, ní amháin @username, @channel, @here, ...", 126 "settings.service.form.headlineBadges" : "Comharthaí do theachtaireachtaí neamhléite",
127 "settings.service.form.headlineGeneral" : "Ginearálta",
128 "settings.service.form.headlineNotifications" : "Fógraí",
129 "settings.service.form.icon" : "Deilbhín saincheaptha",
130 "settings.service.form.iconDelete" : "Scrios",
131 "settings.service.form.iconUpload" : "Scaoil d'íomhá, nó cliceáil anseo",
132 "settings.service.form.indirectMessageInfo" : "Gheobhaidh tú fógraí faoi gach teachtaireacht nua i mbealach, ní amháin @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Taispeáin comhartha theachtaireachta do theachtaireachtaí nua", 133 "settings.service.form.indirectMessages" : "Taispeáin comhartha theachtaireachta do theachtaireachtaí nua",
118 "settings.service.form.isMutedInfo" : "Nuair a dhíchumasaítear é seo, tachtar gach fuaim fógraí agus athchasadh fuaime", 134 "settings.service.form.isMutedInfo" : "Tar éis é a dhíchumasú, tachtar gach fuaim fógraí agus athchasadh fuaime",
119 "settings.service.form.name" : "Ainm", 135 "settings.service.form.name" : "Ainm",
120 "settings.service.form.saveButton" : "Sábhail seirbhís", 136 "settings.service.form.saveButton" : "Sábhail seirbhís",
121 "settings.service.form.tabHosted" : "Óstáilte", 137 "settings.service.form.tabHosted" : "Óstáilte",
122 "settings.service.form.tabOnPremise" : "Féinóstáilte â­ï¸", 138 "settings.service.form.tabOnPremise" : "Féinóstáilte â­ï¸",
123 "settings.service.form.team" : "Meitheal", 139 "settings.service.form.team" : "Foireann",
140 "settings.service.form.useHostedService" : "Bain úsáis as an seirbhís óstáilte {name}.",
124 "settings.service.form.yourServices" : "Do chuid seirbhísí", 141 "settings.service.form.yourServices" : "Do chuid seirbhísí",
125 "settings.services.deletedInfo" : "Seirbhís scriosta", 142 "settings.services.deletedInfo" : "Seirbhís scriosta",
126 "settings.services.discoverServices" : "Aimsigh seirbhísí", 143 "settings.services.discoverServices" : "Aimsigh seirbhísí",
127 "settings.services.headline" : "Do chuid seirbhísí", 144 "settings.services.headline" : "Do chuid seirbhísí",
128 "settings.services.noServicesAdded" : "Níl aon seirbhís curtha agat fós.", 145 "settings.services.noServicesAdded" : "Níl aon seirbhís curtha agat fós.",
129 "settings.services.tooltip.isDisabled" : "Seirbhís díchumasaithe", 146 "settings.services.tooltip.isDisabled" : "Seirbhís díchumasaithe",
130 "settings.services.tooltip.isMuted" : "Gach fuaim tachta", 147 "settings.services.tooltip.isMuted" : "Tachtar gach fuaim",
131 "settings.services.tooltip.notificationsDisabled" : "Fógraí díchumasaithe", 148 "settings.services.tooltip.notificationsDisabled" : "Fógraí dhíchumasaithe",
132 "settings.services.updatedInfo" : "Sábháiltear do chuid athruithe", 149 "settings.services.updatedInfo" : "Sábháiltear do chuid athruithe",
133 "settings.user.form.accountType.company" : "Comhlacht", 150 "settings.user.form.accountType.company" : "Comhlacht",
134 "settings.user.form.accountType.individual" : "Aonair", 151 "settings.user.form.accountType.individual" : "Ar leith",
135 "settings.user.form.accountType.label" : "Cineál cuntais", 152 "settings.user.form.accountType.label" : "Cineál chuntais",
136 "settings.user.form.accountType.non-profit" : "Neamhbhrabúis", 153 "settings.user.form.accountType.non-profit" : "Neamhbhrabúis",
137 "settings.user.form.currentPassword" : "Pasfhocal reatha", 154 "settings.user.form.currentPassword" : "Pasfhocal reatha",
138 "settings.user.form.email" : "Ríomhphost", 155 "settings.user.form.email" : "Ríomhphost",
@@ -140,42 +157,42 @@
140 "settings.user.form.lastname" : "Sloinne", 157 "settings.user.form.lastname" : "Sloinne",
141 "settings.user.form.newPassword" : "Pasfhocal nua", 158 "settings.user.form.newPassword" : "Pasfhocal nua",
142 "sidebar.addNewService" : "Cuir seirbhís nua leis", 159 "sidebar.addNewService" : "Cuir seirbhís nua leis",
143 "sidebar.mute" : "Díchumasaigh fuaim", 160 "sidebar.muteApp" : "Díchumasaigh fógraí ⊠fuaim",
144 "sidebar.settings" : "Socruithe", 161 "sidebar.settings" : "Socruithe",
145 "sidebar.unmute" : "Cumasaigh fuaim", 162 "sidebar.unmuteApp" : "Cumasaigh fógraí ⊠fuaim",
146 "signup.company.label" : "Comhlacht", 163 "signup.company.label" : "Comhlacht",
147 "signup.email.label" : "Seoladh ríomhphoist", 164 "signup.email.label" : "Seoladh ríomhphoist",
148 "signup.emailDuplicate" : "Tá úsáideoir leis an seoladh ríomhphoist sin chean féin", 165 "signup.emailDuplicate" : "Tá úsáideoir leis an seoladh ríomhphoist sin cheana féin",
149 "signup.firstname.label" : "Céadainm", 166 "signup.firstname.label" : "Céadainm",
150 "signup.headline" : "Cláraigh", 167 "signup.headline" : "Cláraigh",
151 "signup.lastname.label" : "Sloinne", 168 "signup.lastname.label" : "Sloinne",
152 "signup.legal.info" : "Agus tú ag cruthú cuntais Franz glacann tú leis an", 169 "signup.legal.info" : "Agus tú ag cruthú cuntas Franz, glacann tú le",
153 "signup.legal.privacy" : "Ráiteas príobháideachais", 170 "signup.legal.privacy" : "Ráiteas phríobháideachais",
154 "signup.legal.terms" : "Tearmaí seirbhíse", 171 "signup.legal.terms" : "Tearmaí seirbhíse",
155 "signup.link.login" : "Cuntas agat cheana féin, logáil isteach?", 172 "signup.link.login" : "Cuntas agat cheana féin, logáil isteach?",
156 "signup.password.label" : "Pasfhocal", 173 "signup.password.label" : "Pasfhocal",
157 "signup.submit.label" : "Cruthaigh cuntas", 174 "signup.submit.label" : "Cruthaigh cuntas",
158 "subscription.euTaxInfo" : "Ãithritheoirí an tAÉ: féadfar cáin díolacháin áitiúla a chur i bhfeidhm", 175 "subscription.euTaxInfo" : "Ãithritheoirí an tAÉ: is féidir le cáin díolacháin áitiúla cur i bhfeidhm",
159 "subscription.features.ads" : "Fógraí ar bith, choíche!", 176 "subscription.features.ads" : "Ní bheadh fógraí ar bith, choíche!",
160 "subscription.features.comingSoon" : "ag teacht go luath", 177 "subscription.features.comingSoon" : "ag teacht go luath",
161 "subscription.features.customServices" : "Seirbhísí phríobháideach duitse agus do do mheitheal", 178 "subscription.features.customServices" : "Seirbhísí phríobháideach duitse agus do d'fhoireann",
162 "subscription.features.encryptedSync" : "Sionchronú seisiúin chriptithe", 179 "subscription.features.encryptedSync" : "Sionchronú seisiúin chriptithe",
163 "subscription.features.onpremise" : "Cuir seirbhísí óstáilte ar nós HipChat leis", 180 "subscription.features.onpremise" : "Cuir seirbhísí óstáilte ar nós HipChat leis",
164 "subscription.features.vpn" : "Tacaíocht seachfhreastalaí & LPF", 181 "subscription.features.vpn" : "Tacaíocht seachfhreastalaí ⊠LPF",
165 "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhtacadóra Franz san áireamh", 182 "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhtacadóra Franz san áireamh",
166 "subscription.mining.experimental" : "turgnamhach", 183 "subscription.mining.experimental" : "turgnamhach",
167 "subscription.mining.headline" : "Conas a oibríonn sé seo?", 184 "subscription.mining.headline" : "Cén chaoi mar a oibríonn sé seo?",
168 "subscription.mining.line1" : "Tar éis chur \"Tabhair tacaíocht le cumhacht phŕóiseála\" ar chumas, bainfidh Franz úsáid as thart ar 20-50\\% de do lárionad próiseála chun an airgeadra digiteach Monero a mhíneáil, a chothromaíonn $5 sa bhliain.", 185 "subscription.mining.line1" : "Tar éis \"Tabhair tacaíocht le cumhacht phróiseála\" a chur ar chumas, bainfidh Franz úsáid as thart ar 20-50\\% de do chuid lárionad próiseála, chun an airgeadra digiteach Monero a mhíneáil, cothrom le thart ar $5 sa bhliain.",
169 "subscription.mining.line2" : "Cuirimid úsáid an láríonaid próiseála in oiriúint do d'iompar oibre ionas nach mbeidh do cheallra caite agus tú agus do ríomhaire moillithe.", 186 "subscription.mining.line2" : "Cuirfimid úsáid an lárionaid phróiseála in oiriúint do d'iompar oibre, ionas nár caitheadh do cheallra agus níor moillíodh thú agus do ríomhaire.",
170 "subscription.mining.line3" : "Fad is go bhfuil an mhianadóir gníomhach, beidh rochtain gan teorainn agat do Phŕeimhghnéithe Taca Franz.", 187 "subscription.mining.line3" : "Fad is a bhfuil an mhianadóir gníomhach, beidh rochtain gan teorainn agat do Phŕeimhghnéithe Taca Franz.",
171 "subscription.mining.moreInformation" : "Faigh tuilleadh eolais faoin bplean seo.", 188 "subscription.mining.moreInformation" : "Faigh tuilleadh eolais faoin bplean seo.",
172 "subscription.paymentSessionError" : "Ní fhéadfar tús a chur leis an bhfoirm íocaíochta", 189 "subscription.paymentSessionError" : "Ní féidir cur tús leis an bhfoirm íocaíochta",
173 "subscription.submit.label" : "Ba mhaith liom tacaíocht a thabhairt d'fhorbairt Franz", 190 "subscription.submit.label" : "Ba mhaith liom tacaíocht a thabhairt d'fhorbairt Franz",
174 "subscription.type.free" : "saor in aisce", 191 "subscription.type.free" : "saor",
175 "subscription.type.mining" : "Tabhair tacaíocht do Franz le cumhacht phróiseála", 192 "subscription.type.mining" : "Tabhair tacaíocht do Franz le cumhacht phróiseála",
176 "subscription.type.month" : "mí", 193 "subscription.type.month" : "mí",
177 "subscription.type.year" : "bliain", 194 "subscription.type.year" : "bliain",
178 "subscriptionPopup.buttonCancel" : "Cuir ar ceal", 195 "subscriptionPopup.buttonCancel" : "Cealaigh",
179 "subscriptionPopup.buttonDone" : "Déanta", 196 "subscriptionPopup.buttonDone" : "Déanta",
180 "tabs.item.deleteService" : "Scrios seirbhís", 197 "tabs.item.deleteService" : "Scrios seirbhís",
181 "tabs.item.disableAudio" : "Díchumasaigh fuaim", 198 "tabs.item.disableAudio" : "Díchumasaigh fuaim",
@@ -186,7 +203,7 @@
186 "tabs.item.enableNotification" : "Cumasaigh fógraí", 203 "tabs.item.enableNotification" : "Cumasaigh fógraí",
187 "tabs.item.enableService" : "Cumasaigh seirbhís", 204 "tabs.item.enableService" : "Cumasaigh seirbhís",
188 "tabs.item.reload" : "Athlódáil", 205 "tabs.item.reload" : "Athlódáil",
189 "welcome.loginButton" : "Logáil isteach i do chuntas", 206 "welcome.loginButton" : "Logáil isteach do do chuntas",
190 "welcome.signupButton" : "Cruthaigh cuntas nua", 207 "welcome.signupButton" : "Cruthaigh cuntas nua",
191 "welcome.slogan" : "Teachtaireachtaí ag obair leat" 208 "welcome.slogan" : "Teachtaireachtaí ag obair leat"
192} 209}
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
new file mode 100644
index 000000000..2b2154a8e
--- /dev/null
+++ b/src/i18n/locales/hr.json
@@ -0,0 +1,209 @@
1{
2 "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ",
3 "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ",
4 "import.headline" : "Uvezite svoje Franc 4 servise. ",
5 "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis",
6 "import.skip.label" : "Želim ruÄno dodati ove usluge",
7 "import.submit.label" : "Uvezi servise",
8 "infobar.buttonChangelog" : "Å ta je novo?",
9 "infobar.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje",
10 "infobar.buttonReloadServices" : "Ponovo uÄitaj servise",
11 "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije",
12 "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ",
13 "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ",
14 "invite.email.label" : "Vaša e-adresa:",
15 "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege",
16 "invite.name.label" : "Ime",
17 "invite.skip.label" : "Želim da ovo uradim kasnije",
18 "invite.submit.label" : "Pošalji pozivnice",
19 "login.email.label" : "Vaša e-adresa:",
20 "login.headline" : "Prijavite se",
21 "login.invalidCredentials" : "E-mail ili lozinka nisu toÄni",
22 "login.link.password" : "Stvaranje nove lozinke",
23 "login.link.signup" : "Stvorite besplatan raÄun",
24 "login.password.label" : "Lozinka",
25 "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.",
26 "login.submit.label" : "Prijavite se",
27 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.",
28 "password.email.label" : "Vaša e-adresa",
29 "password.headline" : "Stvorite novu zaporku",
30 "password.link.login" : "Prijavite se na VaÅ¡ raÄun",
31 "password.link.signup" : "Stvorite besplatan raÄun",
32 "password.noUser" : "Ne postoji ni jedan korisnik s tom e-mail adresom",
33 "password.submit.label" : "Pošalji",
34 "password.successInfo" : "Molimo Vas da provjerite svoju e-mail adresu",
35 "pricing.headline" : "Podržite Franz aplikaciju",
36 "pricing.link.skipPayment" : "Ne želim da podržim razvoj Franz-a.",
37 "pricing.submit.label" : "Želim da podržim razvoj Franz-a.",
38 "pricing.support.label" : "Izaberite vaš plan za podržavanje",
39 "service.crashHandler.action" : "Osvježi okvir",
40 "service.crashHandler.autoReload" : "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi",
41 "service.crashHandler.headline" : "O, ne! ",
42 "service.crashHandler.text" : "{name} je izazvalo grešku. ",
43 "service.disabledHandler.action" : "Omogući {name}",
44 "service.disabledHandler.headline" : "{name} je onemogućen\/o",
45 "services.getStarted" : "ZapoÄnimo!",
46 "services.welcome" : "Dobrodošli u Franz",
47 "settings.account.account.editButton" : "Uredi raÄun",
48 "settings.account.accountType.basic" : "Osnovni raÄun",
49 "settings.account.accountType.premium" : "Premium raÄun",
50 "settings.account.buttonSave" : "Ažuriraj profil",
51 "settings.account.deleteAccount" : "Izbrisati raÄun",
52 "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. ",
53 "settings.account.deleteInfo" : "Ako viÅ¡e ne trebate Franz raÄun, ovdje možete obrisati sve vezane podatke kao i raÄun.",
54 "settings.account.headline" : "KorisniÄki raÄun",
55 "settings.account.headlineAccount" : "Informacije o raÄunu",
56 "settings.account.headlineDangerZone" : "Opasnost",
57 "settings.account.headlineInvoices" : "Fakture",
58 "settings.account.headlinePassword" : "Promijenite lozinku",
59 "settings.account.headlineProfile" : "Ažurirajte profil",
60 "settings.account.headlineSubscription" : "Vaša pretplata",
61 "settings.account.headlineUpgrade" : "Nadogradite raÄun i podržite Franc",
62 "settings.account.invoiceDownload" : "Preuzmite",
63 "settings.account.manageSubscription.label" : "Upravljajte pretplatama",
64 "settings.account.mining.active" : "Trenutno se odvija {hashes} kalkulacija po sekundi.",
65 "settings.account.mining.cancel" : "Odustani ",
66 "settings.account.mining.moreInformation" : "Dođi do više informacija",
67 "settings.account.mining.thankyou" : "Hvala Vam što podržavate Franca s vašom procesorskom moći. ",
68 "settings.account.successInfo" : "Vaše promjene su spremljene",
69 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno",
70 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku",
71 "settings.app.buttonClearAllCache" : "OÄisti memoriju",
72 "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje",
73 "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
75 "settings.app.currentVersion" : "Trenutna verzija:",
76 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini",
77 "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom",
78 "settings.app.form.beta" : "Obuhvati i beta verzije",
79 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa",
80 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci",
81 "settings.app.form.language" : "Jezik",
82 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku",
83 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren",
84 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaži neproÄitane znaÄke poruka kad se obavjeÅ¡tenja onemoguće",
86 "settings.app.headline" : "Postavke",
87 "settings.app.headlineAdvanced" : "Napredne alatke",
88 "settings.app.headlineAppearance" : "Izgled",
89 "settings.app.headlineGeneral" : "Općenito",
90 "settings.app.headlineLanguage" : "Jezik",
91 "settings.app.headlineUpdates" : "Nadogradnje",
92 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni zagon",
93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
95 "settings.app.updateStatusAvailable" : "Nadogradnja dostupna, preuzimanje...",
96 "settings.app.updateStatusSearching" : "Traže se ažuriranja",
97 "settings.app.updateStatusUpToDate" : "Koristite najnoviju verziju Franca.",
98 "settings.navigation.account" : "RaÄun",
99 "settings.navigation.availableServices" : "Dostupne usluge",
100 "settings.navigation.logout" : "Odjava",
101 "settings.navigation.settings" : "Postavke",
102 "settings.navigation.yourServices" : "Vaše usluge",
103 "settings.recipes.all" : "Sve usluge",
104 "settings.recipes.dev" : "Razvoj",
105 "settings.recipes.headline" : "Dostupne usluge",
106 "settings.recipes.missingService" : "Da li neki servis nedostaje?",
107 "settings.recipes.mostPopular" : "Najpopularniji",
108 "settings.recipes.nothingFound" : "Žao nam je, ali ne postoje usluge koje se poklapaju s onima koje tražite. ",
109 "settings.recipes.servicesSuccessfulAddedInfo" : "Usluga uspješno dodana. ",
110 "settings.searchService" : "Search service",
111 "settings.service.error.goBack" : "Nazad do servisa",
112 "settings.service.error.headline" : "Greška",
113 "settings.service.error.message" : "Nemoguće uÄitati sadržaj usluge. ",
114 "settings.service.form.addServiceHeadline" : "Dodaj {ime}",
115 "settings.service.form.availableServices" : "Dostupne usluge:",
116 "settings.service.form.customUrl" : "Prilagođen server",
117 "settings.service.form.customUrlPremiumInfo" : "Da bi ste dodali samo-hostovane usluge, potreban vam je Premium raÄun.",
118 "settings.service.form.customUrlUpgradeAccount" : "Nadogradite VaÅ¡ raÄun",
119 "settings.service.form.customUrlValidationError" : "Nije moguće odobriti prilagođeno {ime} servera.",
120 "settings.service.form.deleteButton" : "Izbriši uslugu",
121 "settings.service.form.editServiceHeadline" : "Uredite {ime}",
122 "settings.service.form.enableAudio" : "Omogućite zvuk",
123 "settings.service.form.enableBadge" : "Show unread message badges",
124 "settings.service.form.enableNotification" : "Omogućite obavijesti",
125 "settings.service.form.enableService" : "Omogućite usluge",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Općenito",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
132 "settings.service.form.indirectMessageInfo" : "Vi ćete biti obavješteni o svim novim porukama na kanalu, ne samo o @imenima, kanalima, @ovdje, ...",
133 "settings.service.form.indirectMessages" : "Prikaži znaÄku na svim novim porukuama",
134 "settings.service.form.isMutedInfo" : "Kada je onemogućeno, sve obavijesti, svi zvukovi i sva pozadinska podrÅ¡ka će biti neÄujna. ",
135 "settings.service.form.name" : "Ime",
136 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e",
137 "settings.service.form.tabHosted" : "Hostovano",
138 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸",
139 "settings.service.form.team" : "Tim",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
141 "settings.service.form.yourServices" : "Vaše usluge",
142 "settings.services.deletedInfo" : "Usluga je onemogućena",
143 "settings.services.discoverServices" : "Pronađite usluge",
144 "settings.services.headline" : "Vaše usluge",
145 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.",
146 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena. ",
147 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni. ",
148 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
149 "settings.services.updatedInfo" : "Vaše promjene su pohranjene. ",
150 "settings.user.form.accountType.company" : "Tvrtka",
151 "settings.user.form.accountType.individual" : "Pojedinac",
152 "settings.user.form.accountType.label" : "Tip raÄuna",
153 "settings.user.form.accountType.non-profit" : "Neprofitno ",
154 "settings.user.form.currentPassword" : "Trenutna lozinka:",
155 "settings.user.form.email" : "E-pošta",
156 "settings.user.form.firstname" : "Ime",
157 "settings.user.form.lastname" : "Prezime",
158 "settings.user.form.newPassword" : "Nova lozinka",
159 "sidebar.addNewService" : "Dodajte novu uslugu",
160 "sidebar.muteApp" : "Ugasi obavijesti i zvuk",
161 "sidebar.settings" : "Postavke",
162 "sidebar.unmuteApp" : "Omogući obavijesti i zvuk",
163 "signup.company.label" : "Tvrtka",
164 "signup.email.label" : "Vaša e-adresa",
165 "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom",
166 "signup.firstname.label" : "Ime",
167 "signup.headline" : "Prijava",
168 "signup.lastname.label" : "Prezime",
169 "signup.legal.info" : "Prilikom stvaranja Franz raÄuna, slažete se sa sljedećim stavkama:",
170 "signup.legal.privacy" : "Izjava o privatnosti ",
171 "signup.legal.terms" : "Uvjeti korištenja",
172 "signup.link.login" : "Imate raÄun? Prijavite se.",
173 "signup.password.label" : "Lozinka",
174 "signup.submit.label" : "Napravite novi raÄun",
175 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje ",
176 "subscription.features.ads" : "Bez reklama, doživotno!",
177 "subscription.features.comingSoon" : "Dolazi uskoro",
178 "subscription.features.customServices" : "Privatni servisi za Vas i Vaš tim",
179 "subscription.features.encryptedSync" : "Kodirano usklađivanje sesija.",
180 "subscription.features.onpremise" : "Dodajte pretpostavljeni\/hostirani servis kao Å¡to ima usluga HipChat ",
181 "subscription.features.vpn" : "Podrška za Proxy i VPM ( VPN )",
182 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće: ",
183 "subscription.mining.experimental" : "Eksperimentalno",
184 "subscription.mining.headline" : "Na koji naÄin ovo radi?",
185 "subscription.mining.line1" : "Omogućavanjem \" Podrška snagom procesora \", Franc će iskoristiti oko 20-50% vaših CPU resursa za Kripto valutu \" Monero \" koja košta otprilike 5$ godišnje. ",
186 "subscription.mining.line2" : "Adaptiraćemo iskorišćenost CPU resursa na osnovu vaÅ¡eg rada, na taj naÄin ćemo izbjeći iscrpljivanje baterije i usporavanje ureÄ‘aja. ",
187 "subscription.mining.line3" : "Dok god je \" rudar \" aktivan, imaćete neograniÄen pristup svim Francovim Premium znaÄajkama. ",
188 "subscription.mining.moreInformation" : "Dajte mi više informacija o ovom planu. ",
189 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu",
190 "subscription.submit.label" : "Želim da podržim razvoj Franca. ",
191 "subscription.type.free" : "Slobodno",
192 "subscription.type.mining" : "Podržite Franca s procesorskim resursima",
193 "subscription.type.month" : "mjesec",
194 "subscription.type.year" : "godina",
195 "subscriptionPopup.buttonCancel" : "Odustani",
196 "subscriptionPopup.buttonDone" : "Završeno",
197 "tabs.item.deleteService" : "Izbriši servis",
198 "tabs.item.disableAudio" : "Onemogući zvuk",
199 "tabs.item.disableNotifications" : "Onemogući obavijesti",
200 "tabs.item.disableService" : "Onemogući servis",
201 "tabs.item.edit" : "Uredi",
202 "tabs.item.enableAudio" : "UkljuÄi zvuk",
203 "tabs.item.enableNotification" : "Omogući obavijesti",
204 "tabs.item.enableService" : "Omogući usluge",
205 "tabs.item.reload" : "Ponovno uÄitavanje",
206 "welcome.loginButton" : "Prijavite se na raÄun",
207 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun",
208 "welcome.slogan" : "Poruke koje su stvorene za tebe"
209}
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index f62c0ead9..55914919d 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -3,9 +3,9 @@
3 "global.notConnectedToTheInternet" : "Nincs kapcsolat a kiszolgálóval.", 3 "global.notConnectedToTheInternet" : "Nincs kapcsolat a kiszolgálóval.",
4 "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", 4 "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből",
5 "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", 5 "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben",
6 "import.skip.label" : "Kézzel szeretnék szolgáltatást felvenni", 6 "import.skip.label" : "Manuálisan szeretném hozzáadni a szolgáltatásokat",
7 "import.submit.label" : "Szolgáltatások importálása", 7 "import.submit.label" : "Szolgáltatások importálása",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Mi változott?",
9 "infobar.buttonInstallUpdate" : "Újraindítás és a frissítés telepítése", 9 "infobar.buttonInstallUpdate" : "Újraindítás és a frissítés telepítése",
10 "infobar.buttonReloadServices" : "Szolgáltatások újratöltése", 10 "infobar.buttonReloadServices" : "Szolgáltatások újratöltése",
11 "infobar.requiredRequestsFailed" : "Szolgáltatások és felhasználói információk nem tölthetők be", 11 "infobar.requiredRequestsFailed" : "Szolgáltatások és felhasználói információk nem tölthetők be",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Nem szeretném támogatni a Franz fejlesztését.", 36 "pricing.link.skipPayment" : "Nem szeretném támogatni a Franz fejlesztését.",
37 "pricing.submit.label" : "Támogatni szeretném a Franz fejlesztését.", 37 "pricing.submit.label" : "Támogatni szeretném a Franz fejlesztését.",
38 "pricing.support.label" : "Válaszd ki a támogatás módját", 38 "pricing.support.label" : "Válaszd ki a támogatás módját",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "{name} újratöltése",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Megpróbáljuk automatikusan helyreállítani {name}-t {seconds} mp-en belül",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Jajj ne!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} hibát okozott.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "{name} engedélyezése",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} letiltva",
45 "services.getStarted" : "Kezdj hozzá", 45 "services.getStarted" : "Kezdj hozzá",
46 "services.welcome" : "Üdvözöl a Franz", 46 "services.welcome" : "Üdvözöl a Franz",
47 "settings.account.account.editButton" : "Fiók szerkesztése", 47 "settings.account.account.editButton" : "Fiók szerkesztése",
48 "settings.account.accountType.basic" : "Alap Fiók", 48 "settings.account.accountType.basic" : "Alap Fiók",
49 "settings.account.accountType.premium" : "Prémium Támogató Fiók", 49 "settings.account.accountType.premium" : "Prémium Támogató Fiók",
50 "settings.account.buttonSave" : "Profil frissítése", 50 "settings.account.buttonSave" : "Profil frissítése",
51 "settings.account.deleteAccount" : "Fiók törlése",
52 "settings.account.deleteEmailSent" : "A fiókod törléséhez egy e-mailt küldtük a törlést megerősítő linkkel. A linkre kattintást követően a fiókod és az adatait már nem állíthatók vissza többé!",
53 "settings.account.deleteInfo" : "Ha még nem szeretnéd fenntartani a Franz-fiókodat, akkor itt törölheted minden hozzá kapcsolódó adattal együtt.",
51 "settings.account.headline" : "Fiók", 54 "settings.account.headline" : "Fiók",
52 "settings.account.headlineAccount" : "Fiókinformációk", 55 "settings.account.headlineAccount" : "Fiókinformációk",
56 "settings.account.headlineDangerZone" : "Veszélyes üzemmód",
53 "settings.account.headlineInvoices" : "Számlák", 57 "settings.account.headlineInvoices" : "Számlák",
54 "settings.account.headlinePassword" : "Jelszócsere", 58 "settings.account.headlinePassword" : "Jelszócsere",
55 "settings.account.headlineProfile" : "Profil frissítése", 59 "settings.account.headlineProfile" : "Profil frissítése",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "A módosításokat elmentettük", 68 "settings.account.successInfo" : "A módosításokat elmentettük",
65 "settings.account.tryReloadUserInfoRequest" : "Próbáld újra", 69 "settings.account.tryReloadUserInfoRequest" : "Próbáld újra",
66 "settings.account.userInfoRequestFailed" : "A felhasználói adatok betöltése sikertelen", 70 "settings.account.userInfoRequestFailed" : "A felhasználói adatok betöltése sikertelen",
71 "settings.app.buttonClearAllCache" : "Gyorsítótár törlése",
67 "settings.app.buttonInstallUpdate" : "Újraindítás és frissítések telepítése", 72 "settings.app.buttonInstallUpdate" : "Újraindítás és frissítések telepítése",
68 "settings.app.buttonSearchForUpdate" : "Frissítések keresése", 73 "settings.app.buttonSearchForUpdate" : "Frissítések keresése",
74 "settings.app.cacheInfo" : "A Franz gyorsítótár jelenleg {space} lemezterületet használ.",
69 "settings.app.currentVersion" : "Aktuális verzió:", 75 "settings.app.currentVersion" : "Aktuális verzió:",
70 "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben", 76 "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben",
71 "settings.app.form.autoLaunchOnStart" : "Franz betöltése indításkor", 77 "settings.app.form.autoLaunchOnStart" : "Franz betöltése indításkor",
72 "settings.app.form.beta" : "Béta verziók keresése", 78 "settings.app.form.beta" : "Béta verziók keresése",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Helyesírás-ellenőrzés engedélyezése",
74 "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán", 80 "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán",
75 "settings.app.form.language" : "Nyelv", 81 "settings.app.form.language" : "Nyelv",
76 "settings.app.form.minimizeToSystemTray" : "Franz kicsinyítése a tálcára", 82 "settings.app.form.minimizeToSystemTray" : "Franz kicsinyítése a tálcára",
77 "settings.app.form.runInBackground" : "Franz fusson a háttérben az ablak bezárásakor", 83 "settings.app.form.runInBackground" : "Franz fusson a háttérben az ablak bezárásakor",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Letiltott szolgáltatások megjelenítése",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Mutass az 'olvasatlan üzenet' jelzést amikor az értesítések le vannak tiltva.",
79 "settings.app.headline" : "Beállítások", 86 "settings.app.headline" : "Beállítások",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Haladó",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Megjelenés",
82 "settings.app.headlineGeneral" : "Ãltalános", 89 "settings.app.headlineGeneral" : "Ãltalános",
83 "settings.app.headlineLanguage" : "Nyelv", 90 "settings.app.headlineLanguage" : "Nyelv",
84 "settings.app.headlineUpdates" : "Frissítések", 91 "settings.app.headlineUpdates" : "Frissítések",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Újraindítást igénylő módosítás",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Gyorsítótár",
94 "settings.app.translationHelp" : "Segíts nekünk a Franz-ot lefordítani a nyelvedre.",
87 "settings.app.updateStatusAvailable" : "Frissítés elérhető, letöltés folyamatban...", 95 "settings.app.updateStatusAvailable" : "Frissítés elérhető, letöltés folyamatban...",
88 "settings.app.updateStatusSearching" : "Frissítéseket keres", 96 "settings.app.updateStatusSearching" : "Frissítéseket keres",
89 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod", 97 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Összes szolgáltatás", 103 "settings.recipes.all" : "Összes szolgáltatás",
96 "settings.recipes.dev" : "Fejlesztés", 104 "settings.recipes.dev" : "Fejlesztés",
97 "settings.recipes.headline" : "Elérhető szolgáltatások", 105 "settings.recipes.headline" : "Elérhető szolgáltatások",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Hiányzik egy szolgáltatás?",
99 "settings.recipes.mostPopular" : "Legnépszerűbb", 107 "settings.recipes.mostPopular" : "Legnépszerűbb",
100 "settings.recipes.nothingFound" : "Sajnáljuk, nincs egyezés a szolgáltatások között a keresett kifejezésre.", 108 "settings.recipes.nothingFound" : "Sajnáljuk, nincs egyezés a szolgáltatások között a keresett kifejezésre.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Szolgáltatás sikeresen hozzáadva.", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Szolgáltatás sikeresen hozzáadva.",
110 "settings.searchService" : "Szolgáltatások keresése",
102 "settings.service.error.goBack" : "Vissza a szolgáltatásokhoz", 111 "settings.service.error.goBack" : "Vissza a szolgáltatásokhoz",
103 "settings.service.error.headline" : "Hiba", 112 "settings.service.error.headline" : "Hiba",
104 "settings.service.error.message" : "Nem tölthető be a szolgáltatás receptje.", 113 "settings.service.error.message" : "Nem tölthető be a szolgáltatás receptje.",
@@ -110,24 +119,32 @@
110 "settings.service.form.customUrlValidationError" : "Nem sikerült hitelesíteni az egyéni {name} szervert.", 119 "settings.service.form.customUrlValidationError" : "Nem sikerült hitelesíteni az egyéni {name} szervert.",
111 "settings.service.form.deleteButton" : "Szolgáltatás törlése", 120 "settings.service.form.deleteButton" : "Szolgáltatás törlése",
112 "settings.service.form.editServiceHeadline" : "{name} szerkesztése", 121 "settings.service.form.editServiceHeadline" : "{name} szerkesztése",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Hang engedélyezése",
123 "settings.service.form.enableBadge" : "Mutasd az olvasatlan jelzéseket",
114 "settings.service.form.enableNotification" : "Értesítések engedélyezése", 124 "settings.service.form.enableNotification" : "Értesítések engedélyezése",
115 "settings.service.form.enableService" : "Szolgáltatás engedélyezése", 125 "settings.service.form.enableService" : "Szolgáltatás engedélyezése",
126 "settings.service.form.headlineBadges" : "Olvasatlan üzenet jelzések",
127 "settings.service.form.headlineGeneral" : "Ãltalános",
128 "settings.service.form.headlineNotifications" : "Értesítések",
129 "settings.service.form.icon" : "Egyedi ikon",
130 "settings.service.form.iconDelete" : "Törlés",
131 "settings.service.form.iconUpload" : "Húzd ide a képet, vagy kattints ide",
116 "settings.service.form.indirectMessageInfo" : "Értesítést kapsz minden üzenetről a csatornában, nem csak @felhasználónév, @csatorna @here és egyéb említések esetén", 132 "settings.service.form.indirectMessageInfo" : "Értesítést kapsz minden üzenetről a csatornában, nem csak @felhasználónév, @csatorna @here és egyéb említések esetén",
117 "settings.service.form.indirectMessages" : "Üzenet kitűző megjelenítése minden üzenethez", 133 "settings.service.form.indirectMessages" : "Üzenet kitűző megjelenítése minden üzenethez",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Ha kikapcsolod, minden értesítési és lejátszott hang némításra kerül.",
119 "settings.service.form.name" : "Név", 135 "settings.service.form.name" : "Név",
120 "settings.service.form.saveButton" : "Szolgáltatás mentése", 136 "settings.service.form.saveButton" : "Szolgáltatás mentése",
121 "settings.service.form.tabHosted" : "Ãœzemeltetett", 137 "settings.service.form.tabHosted" : "Ãœzemeltetett",
122 "settings.service.form.tabOnPremise" : "Egyénileg üzemeltetett", 138 "settings.service.form.tabOnPremise" : "Egyénileg üzemeltetett",
123 "settings.service.form.team" : "Csapat", 139 "settings.service.form.team" : "Csapat",
140 "settings.service.form.useHostedService" : "A távoli {name} szolgáltatás használata",
124 "settings.service.form.yourServices" : "Szolgáltatásaid", 141 "settings.service.form.yourServices" : "Szolgáltatásaid",
125 "settings.services.deletedInfo" : "A szolgáltatás törlésre került", 142 "settings.services.deletedInfo" : "A szolgáltatás törlésre került",
126 "settings.services.discoverServices" : "Szolgáltatások felfedezése", 143 "settings.services.discoverServices" : "Szolgáltatások felfedezése",
127 "settings.services.headline" : "Szolgáltatásaid", 144 "settings.services.headline" : "Szolgáltatásaid",
128 "settings.services.noServicesAdded" : "Még nem adtál hozzá egyetlen szolgáltatást sem eddig.", 145 "settings.services.noServicesAdded" : "Még nem adtál hozzá egyetlen szolgáltatást sem eddig.",
129 "settings.services.tooltip.isDisabled" : "Ez a szolgáltatás le van tiltva.", 146 "settings.services.tooltip.isDisabled" : "Ez a szolgáltatás le van tiltva.",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Minden hang lenémítva",
131 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva", 148 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva",
132 "settings.services.updatedInfo" : "A módosításokat elmentettük", 149 "settings.services.updatedInfo" : "A módosításokat elmentettük",
133 "settings.user.form.accountType.company" : "Cég", 150 "settings.user.form.accountType.company" : "Cég",
@@ -136,26 +153,26 @@
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 153 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Jelenlegi jelszó", 154 "settings.user.form.currentPassword" : "Jelenlegi jelszó",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Keresztnév",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Vezetéknév",
141 "settings.user.form.newPassword" : "Új jelszó", 158 "settings.user.form.newPassword" : "Új jelszó",
142 "sidebar.addNewService" : "Szolgáltatás hozzáadása", 159 "sidebar.addNewService" : "Szolgáltatás hozzáadása",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Értesítések és hangok letiltása",
144 "sidebar.settings" : "Beállítások", 161 "sidebar.settings" : "Beállítások",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Értesítések és hangok engedélyezése",
146 "signup.company.label" : "Cég", 163 "signup.company.label" : "Cég",
147 "signup.email.label" : "Email cím", 164 "signup.email.label" : "Email cím",
148 "signup.emailDuplicate" : "Ezzel az e-mail címmel már létezik felhasználó", 165 "signup.emailDuplicate" : "Ezzel az e-mail címmel már létezik felhasználó",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Keresztnév",
150 "signup.headline" : "Regisztráció", 167 "signup.headline" : "Regisztráció",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Családnév",
152 "signup.legal.info" : "A Franz fiók létrehozásával elfogadod az", 169 "signup.legal.info" : "A Franz fiók létrehozásával elfogadod az",
153 "signup.legal.privacy" : "Adatvédelmi Nyilatkozatot", 170 "signup.legal.privacy" : "Adatvédelmi Nyilatkozatot",
154 "signup.legal.terms" : "Felhasználási Feltételeket", 171 "signup.legal.terms" : "Felhasználási Feltételeket",
155 "signup.link.login" : "Már van fiókod? Lépj be!", 172 "signup.link.login" : "Már van fiókod? Lépj be!",
156 "signup.password.label" : "Jelszó", 173 "signup.password.label" : "Jelszó",
157 "signup.submit.label" : "Fiók létrehozása", 174 "signup.submit.label" : "Fiók létrehozása",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "EU állampolgárok: helyi vásárlás esetén adók kerülhetnek felszámolásra",
159 "subscription.features.ads" : "Hirdetésmentes, mindig!", 176 "subscription.features.ads" : "Hirdetésmentes, mindig!",
160 "subscription.features.comingSoon" : "Hamarosan!", 177 "subscription.features.comingSoon" : "Hamarosan!",
161 "subscription.features.customServices" : "Privát szolgáltatások neked és a csapatodnak", 178 "subscription.features.customServices" : "Privát szolgáltatások neked és a csapatodnak",
@@ -178,11 +195,11 @@
178 "subscriptionPopup.buttonCancel" : "Mégsem", 195 "subscriptionPopup.buttonCancel" : "Mégsem",
179 "subscriptionPopup.buttonDone" : "Kész", 196 "subscriptionPopup.buttonDone" : "Kész",
180 "tabs.item.deleteService" : "Szolgáltatás törlése", 197 "tabs.item.deleteService" : "Szolgáltatás törlése",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Hang letiltása",
182 "tabs.item.disableNotifications" : "Értesítések letiltása", 199 "tabs.item.disableNotifications" : "Értesítések letiltása",
183 "tabs.item.disableService" : "Szolgáltatás letiltása", 200 "tabs.item.disableService" : "Szolgáltatás letiltása",
184 "tabs.item.edit" : "Szerkesztés", 201 "tabs.item.edit" : "Szerkesztés",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Hang engedélyezése",
186 "tabs.item.enableNotification" : "Értesítések engedélyezése", 203 "tabs.item.enableNotification" : "Értesítések engedélyezése",
187 "tabs.item.enableService" : "Szolgáltatás engedélyezése", 204 "tabs.item.enableService" : "Szolgáltatás engedélyezése",
188 "tabs.item.reload" : "Újratöltés", 205 "tabs.item.reload" : "Újratöltés",
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index 611cad550..f47a860b6 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -5,7 +5,7 @@
5 "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", 5 "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5",
6 "import.skip.label" : "Saya ingin menambahkan layanan secara manual", 6 "import.skip.label" : "Saya ingin menambahkan layanan secara manual",
7 "import.submit.label" : "Impor layanan", 7 "import.submit.label" : "Impor layanan",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Yang baru",
9 "infobar.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", 9 "infobar.buttonInstallUpdate" : "Mulai ulang dan instal versi baru",
10 "infobar.buttonReloadServices" : "Muat ulang layanan", 10 "infobar.buttonReloadServices" : "Muat ulang layanan",
11 "infobar.requiredRequestsFailed" : "Tidak bisa memuat layanan dan informasi pengguna", 11 "infobar.requiredRequestsFailed" : "Tidak bisa memuat layanan dan informasi pengguna",
@@ -48,8 +48,12 @@
48 "settings.account.accountType.basic" : "Akun Dasar", 48 "settings.account.accountType.basic" : "Akun Dasar",
49 "settings.account.accountType.premium" : "Akun Pendukung Premium", 49 "settings.account.accountType.premium" : "Akun Pendukung Premium",
50 "settings.account.buttonSave" : "Perbarui profil", 50 "settings.account.buttonSave" : "Perbarui profil",
51 "settings.account.deleteAccount" : "Hapus akun",
52 "settings.account.deleteEmailSent" : "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!",
53 "settings.account.deleteInfo" : "Jika Anda tidak membutuhkan akun Franz lagi, Anda bisa menghapus akun dan semua data terkait di sini.",
51 "settings.account.headline" : "Akun", 54 "settings.account.headline" : "Akun",
52 "settings.account.headlineAccount" : "Informasi akun", 55 "settings.account.headlineAccount" : "Informasi akun",
56 "settings.account.headlineDangerZone" : "Wilayah Berbahaya",
53 "settings.account.headlineInvoices" : "Tagihan", 57 "settings.account.headlineInvoices" : "Tagihan",
54 "settings.account.headlinePassword" : "Ubah sandi", 58 "settings.account.headlinePassword" : "Ubah sandi",
55 "settings.account.headlineProfile" : "Perbarui profil", 59 "settings.account.headlineProfile" : "Perbarui profil",
@@ -64,8 +68,10 @@
64 "settings.account.successInfo" : "Perubahan Anda telah disimpan", 68 "settings.account.successInfo" : "Perubahan Anda telah disimpan",
65 "settings.account.tryReloadUserInfoRequest" : "Coba lagi", 69 "settings.account.tryReloadUserInfoRequest" : "Coba lagi",
66 "settings.account.userInfoRequestFailed" : "Tidak bisa memuat informasi pengguna", 70 "settings.account.userInfoRequestFailed" : "Tidak bisa memuat informasi pengguna",
71 "settings.app.buttonClearAllCache" : "Bersihkan singgahan",
67 "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", 72 "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru",
68 "settings.app.buttonSearchForUpdate" : "Periksa versi baru", 73 "settings.app.buttonSearchForUpdate" : "Periksa versi baru",
74 "settings.app.cacheInfo" : "Singgahan Franz sedang menggunakan ruang disk {size}.",
69 "settings.app.currentVersion" : "Versi saat ini:", 75 "settings.app.currentVersion" : "Versi saat ini:",
70 "settings.app.form.autoLaunchInBackground" : "Buka di latar belakang", 76 "settings.app.form.autoLaunchInBackground" : "Buka di latar belakang",
71 "settings.app.form.autoLaunchOnStart" : "Jalankan Franz saat komputer dimulai", 77 "settings.app.form.autoLaunchOnStart" : "Jalankan Franz saat komputer dimulai",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem", 82 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem",
77 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela", 83 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela",
78 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan", 84 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan",
79 "settings.app.headline" : "Pengaturan", 86 "settings.app.headline" : "Pengaturan",
80 "settings.app.headlineAdvanced" : "Tingkat Lanjut", 87 "settings.app.headlineAdvanced" : "Tingkat Lanjut",
81 "settings.app.headlineAppearance" : "Tampilan", 88 "settings.app.headlineAppearance" : "Tampilan",
@@ -83,7 +90,8 @@
83 "settings.app.headlineLanguage" : "Bahasa", 90 "settings.app.headlineLanguage" : "Bahasa",
84 "settings.app.headlineUpdates" : "Versi Baru", 91 "settings.app.headlineUpdates" : "Versi Baru",
85 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang", 92 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Singgahan",
94 "settings.app.translationHelp" : "Bantu kami menerjemahkan Franz ke bahasa Anda.",
87 "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...", 95 "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...",
88 "settings.app.updateStatusSearching" : "Sedang mencari versi baru", 96 "settings.app.updateStatusSearching" : "Sedang mencari versi baru",
89 "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Franz", 97 "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Franz",
@@ -95,32 +103,41 @@
95 "settings.recipes.all" : "Semua layanan", 103 "settings.recipes.all" : "Semua layanan",
96 "settings.recipes.dev" : "Pengembangan", 104 "settings.recipes.dev" : "Pengembangan",
97 "settings.recipes.headline" : "Layanan tersedia", 105 "settings.recipes.headline" : "Layanan tersedia",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Layanan tidak tersedia?",
99 "settings.recipes.mostPopular" : "Paling populer", 107 "settings.recipes.mostPopular" : "Paling populer",
100 "settings.recipes.nothingFound" : "Maaf, tidak ada layanan yang cocok dengan pencarian Anda.", 108 "settings.recipes.nothingFound" : "Maaf, tidak ada layanan yang cocok dengan pencarian Anda.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan",
110 "settings.searchService" : "Cari layanan",
102 "settings.service.error.goBack" : "Kembali ke layanan", 111 "settings.service.error.goBack" : "Kembali ke layanan",
103 "settings.service.error.headline" : "Kesalahan", 112 "settings.service.error.headline" : "Kesalahan",
104 "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.", 113 "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.",
105 "settings.service.form.addServiceHeadline" : "Tambahkan {name}", 114 "settings.service.form.addServiceHeadline" : "Tambahkan {name}",
106 "settings.service.form.availableServices" : "Layanan tersedia", 115 "settings.service.form.availableServices" : "Layanan tersedia",
107 "settings.service.form.customUrl" : "Server khusus", 116 "settings.service.form.customUrl" : "Server khusus",
108 "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan yang dijalankan mandiri, Anda membutuhkan Franz Premium Supporter Account.", 117 "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan hosted yang dijalankan mandiri, Anda membutuhkan Franz Premium Supporter Account.",
109 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", 118 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda",
110 "settings.service.form.customUrlValidationError" : "Tidak bisa memvalidasi server {name} khusus.", 119 "settings.service.form.customUrlValidationError" : "Tidak bisa memvalidasi server {name} khusus.",
111 "settings.service.form.deleteButton" : "Hapus layanan", 120 "settings.service.form.deleteButton" : "Hapus layanan",
112 "settings.service.form.editServiceHeadline" : "Edit {name}", 121 "settings.service.form.editServiceHeadline" : "Edit {name}",
113 "settings.service.form.enableAudio" : "Aktifkan audio", 122 "settings.service.form.enableAudio" : "Aktifkan audio",
123 "settings.service.form.enableBadge" : "Tampilkan lencana pesan belum dibaca",
114 "settings.service.form.enableNotification" : "Aktifkan pemberitahuan", 124 "settings.service.form.enableNotification" : "Aktifkan pemberitahuan",
115 "settings.service.form.enableService" : "Aktifkan layanan", 125 "settings.service.form.enableService" : "Aktifkan layanan",
126 "settings.service.form.headlineBadges" : "Lencana pesan belum dibaca",
127 "settings.service.form.headlineGeneral" : "Umum",
128 "settings.service.form.headlineNotifications" : "Notifikasi",
129 "settings.service.form.icon" : "Ikon khusus",
130 "settings.service.form.iconDelete" : "Hapus",
131 "settings.service.form.iconUpload" : "Lepaskan gambar atau klik di sini",
116 "settings.service.form.indirectMessageInfo" : "Anda akan diberi tahu tentang semua pesan dalam kanal, bukan hanya @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Anda akan diberi tahu tentang semua pesan dalam kanal, bukan hanya @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan", 133 "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan",
118 "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara notifikasi dan pemutaran audio akan dibisukan", 134 "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara pemberitahuan dan pemutaran audio akan dibisukan",
119 "settings.service.form.name" : "Nama", 135 "settings.service.form.name" : "Nama",
120 "settings.service.form.saveButton" : "Simpan layanan", 136 "settings.service.form.saveButton" : "Simpan layanan",
121 "settings.service.form.tabHosted" : "Hosted", 137 "settings.service.form.tabHosted" : "Hosted",
122 "settings.service.form.tabOnPremise" : "Hosted mandiri", 138 "settings.service.form.tabOnPremise" : "Hosted mandiri",
123 "settings.service.form.team" : "Tim", 139 "settings.service.form.team" : "Tim",
140 "settings.service.form.useHostedService" : "Gunakan layanan hosted {name}.",
124 "settings.service.form.yourServices" : "Layanan Anda", 141 "settings.service.form.yourServices" : "Layanan Anda",
125 "settings.services.deletedInfo" : "Layanan telah dihapus", 142 "settings.services.deletedInfo" : "Layanan telah dihapus",
126 "settings.services.discoverServices" : "Temukan layanan", 143 "settings.services.discoverServices" : "Temukan layanan",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "Nama Belakang", 157 "settings.user.form.lastname" : "Nama Belakang",
141 "settings.user.form.newPassword" : "Sandi baru", 158 "settings.user.form.newPassword" : "Sandi baru",
142 "sidebar.addNewService" : "Tambahkan layanan baru", 159 "sidebar.addNewService" : "Tambahkan layanan baru",
143 "sidebar.mute" : "Nonaktifkan audio", 160 "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio",
144 "sidebar.settings" : "Pengaturan", 161 "sidebar.settings" : "Pengaturan",
145 "sidebar.unmute" : "Aktifkan audio", 162 "sidebar.unmuteApp" : "Aktifkan pemberitahuan",
146 "signup.company.label" : "Perusahaan", 163 "signup.company.label" : "Perusahaan",
147 "signup.email.label" : "Alamat email", 164 "signup.email.label" : "Alamat email",
148 "signup.emailDuplicate" : "Pengguna dengan alamat email ini sudah ada", 165 "signup.emailDuplicate" : "Pengguna dengan alamat email ini sudah ada",
@@ -160,7 +177,7 @@
160 "subscription.features.comingSoon" : "segera hadir", 177 "subscription.features.comingSoon" : "segera hadir",
161 "subscription.features.customServices" : "Layanan pribadi untuk Anda dan tim Anda", 178 "subscription.features.customServices" : "Layanan pribadi untuk Anda dan tim Anda",
162 "subscription.features.encryptedSync" : "Sinkronisasi sesi terenkripsi", 179 "subscription.features.encryptedSync" : "Sinkronisasi sesi terenkripsi",
163 "subscription.features.onpremise" : "Layanan add-on premise\/hosten seperti HipChat", 180 "subscription.features.onpremise" : "Layanan add-on premise\/hosted seperti HipChat",
164 "subscription.features.vpn" : "Dukungan proxy & VPN", 181 "subscription.features.vpn" : "Dukungan proxy & VPN",
165 "subscription.includedFeatures" : "Franz Premium Supporter Account berbayar menyertakan", 182 "subscription.includedFeatures" : "Franz Premium Supporter Account berbayar menyertakan",
166 "subscription.mining.experimental" : "eksperimental", 183 "subscription.mining.experimental" : "eksperimental",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index ad3f9b880..1d2485b19 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -5,33 +5,33 @@
5 "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5", 5 "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5",
6 "import.skip.label" : "Voglio aggiungere servizi manualmente", 6 "import.skip.label" : "Voglio aggiungere servizi manualmente",
7 "import.submit.label" : "Importa servizi", 7 "import.submit.label" : "Importa servizi",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Novità",
9 "infobar.buttonInstallUpdate" : "Riavvia e installa aggiornamento", 9 "infobar.buttonInstallUpdate" : "Riavvia e installa aggiornamento",
10 "infobar.buttonReloadServices" : "Ricarica servizi", 10 "infobar.buttonReloadServices" : "Ricarica servizi",
11 "infobar.requiredRequestsFailed" : "Impossibile caricare servizi e info utente", 11 "infobar.requiredRequestsFailed" : "Impossibile caricare servizi e info utente",
12 "infobar.servicesUpdated" : "I tuoi servizi sono stati aggiornati.", 12 "infobar.servicesUpdated" : "I tuoi servizi sono stati aggiornati.",
13 "infobar.updateAvailable" : "È disponibile un nuovo aggiornamento di Franz.", 13 "infobar.updateAvailable" : "È disponibile un nuovo aggiornamento di Franz.",
14 "invite.email.label" : "Indirizzo e-mail", 14 "invite.email.label" : "Indirizzo email",
15 "invite.headline.friends" : "Invita 3 dei tuoi amici o colleghi", 15 "invite.headline.friends" : "Invita 3 dei tuoi amici o colleghi",
16 "invite.name.label" : "Nome", 16 "invite.name.label" : "Nome",
17 "invite.skip.label" : "Voglio farlo dopo", 17 "invite.skip.label" : "Voglio farlo dopo",
18 "invite.submit.label" : "Invia inviti", 18 "invite.submit.label" : "Invia inviti",
19 "login.email.label" : "Indirizzo e-mail", 19 "login.email.label" : "Indirizzo email",
20 "login.headline" : "Accedi", 20 "login.headline" : "Accedi",
21 "login.invalidCredentials" : "E-mail o password non valide", 21 "login.invalidCredentials" : "Email o password non valide",
22 "login.link.password" : "Reimposta password", 22 "login.link.password" : "Reimposta password",
23 "login.link.signup" : "Crea un account gratuito", 23 "login.link.signup" : "Crea un account gratuito",
24 "login.password.label" : "Password", 24 "login.password.label" : "Password",
25 "login.serverLogout" : "Sessione scaduta, accedi di nuovo.", 25 "login.serverLogout" : "Sessione scaduta, accedi di nuovo.",
26 "login.submit.label" : "Accedi", 26 "login.submit.label" : "Accedi",
27 "login.tokenExpired" : "Sessione scaduta, accedi di nuovo.", 27 "login.tokenExpired" : "Sessione scaduta, accedi di nuovo.",
28 "password.email.label" : "Indirizzo e-mail", 28 "password.email.label" : "Indirizzo email",
29 "password.headline" : "Reimposta password", 29 "password.headline" : "Reimposta password",
30 "password.link.login" : "Accedi al tuo account", 30 "password.link.login" : "Accedi al tuo account",
31 "password.link.signup" : "Crea un account gratuito", 31 "password.link.signup" : "Crea un account gratuito",
32 "password.noUser" : "Non è stato trovato nessun utente con quell'indirizzo e-mail", 32 "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo email",
33 "password.submit.label" : "Invia", 33 "password.submit.label" : "Invia",
34 "password.successInfo" : "Controlla la tua e-mail", 34 "password.successInfo" : "Controlla la tua email",
35 "pricing.headline" : "Supporta Franz", 35 "pricing.headline" : "Supporta Franz",
36 "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", 36 "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz",
37 "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", 37 "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz",
@@ -40,16 +40,20 @@
40 "service.crashHandler.autoReload" : "Prova a ripristinare automaticamente {name} in {seconds} secondi", 40 "service.crashHandler.autoReload" : "Prova a ripristinare automaticamente {name} in {seconds} secondi",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} ha causato un errore.", 42 "service.crashHandler.text" : "{name} ha causato un errore.",
43 "service.disabledHandler.action" : "Abilita {name}", 43 "service.disabledHandler.action" : "Attiva {name}",
44 "service.disabledHandler.headline" : "{name} è disabilitato", 44 "service.disabledHandler.headline" : "{name} è disattivato",
45 "services.getStarted" : "Iniziamo", 45 "services.getStarted" : "Iniziamo",
46 "services.welcome" : "Benvenuto in Franz", 46 "services.welcome" : "Benvenuto in Franz",
47 "settings.account.account.editButton" : "Modifica account", 47 "settings.account.account.editButton" : "Modifica account",
48 "settings.account.accountType.basic" : "Account Basic", 48 "settings.account.accountType.basic" : "Account Basic",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Aggiorna profilo", 50 "settings.account.buttonSave" : "Aggiorna profilo",
51 "settings.account.deleteAccount" : "Elimina account",
52 "settings.account.deleteEmailSent" : "Hai ricevuto un'email con un link per confermare l'eliminazione del tuo account. I dati del tuo account non potranno essere ripristinati!",
53 "settings.account.deleteInfo" : "Se non hai più bisogno dell'account Franz, puoi eliminare il tuo account e tutti i dati relativi qui.",
51 "settings.account.headline" : "Account", 54 "settings.account.headline" : "Account",
52 "settings.account.headlineAccount" : "Informazioni account", 55 "settings.account.headlineAccount" : "Informazioni account",
56 "settings.account.headlineDangerZone" : "Zona Pericolosa",
53 "settings.account.headlineInvoices" : "Fatture", 57 "settings.account.headlineInvoices" : "Fatture",
54 "settings.account.headlinePassword" : "Cambia password", 58 "settings.account.headlinePassword" : "Cambia password",
55 "settings.account.headlineProfile" : "Aggiorna profilo", 59 "settings.account.headlineProfile" : "Aggiorna profilo",
@@ -64,18 +68,21 @@
64 "settings.account.successInfo" : "Le tue modifiche sono state salvate", 68 "settings.account.successInfo" : "Le tue modifiche sono state salvate",
65 "settings.account.tryReloadUserInfoRequest" : "Riprova ancora", 69 "settings.account.tryReloadUserInfoRequest" : "Riprova ancora",
66 "settings.account.userInfoRequestFailed" : "Impossibile caricare informazioni utente.", 70 "settings.account.userInfoRequestFailed" : "Impossibile caricare informazioni utente.",
71 "settings.app.buttonClearAllCache" : "Svuota cache",
67 "settings.app.buttonInstallUpdate" : "Riavvia e installa aggiornamento", 72 "settings.app.buttonInstallUpdate" : "Riavvia e installa aggiornamento",
68 "settings.app.buttonSearchForUpdate" : "Controlla aggiornamenti", 73 "settings.app.buttonSearchForUpdate" : "Controlla aggiornamenti",
74 "settings.app.cacheInfo" : "Franz sta utilizzando {size} di spazio su disco.",
69 "settings.app.currentVersion" : "Versione attuale:", 75 "settings.app.currentVersion" : "Versione attuale:",
70 "settings.app.form.autoLaunchInBackground" : "Apri in secondo piano", 76 "settings.app.form.autoLaunchInBackground" : "Apri in secondo piano",
71 "settings.app.form.autoLaunchOnStart" : "Apri Franz all'avvio", 77 "settings.app.form.autoLaunchOnStart" : "Esegui Franz all'avvio",
72 "settings.app.form.beta" : "Includi versioni beta", 78 "settings.app.form.beta" : "Includi versioni beta",
73 "settings.app.form.enableSpellchecking" : "Abilita controllo ortografico", 79 "settings.app.form.enableSpellchecking" : "Attiva controllo ortografico",
74 "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica", 80 "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica",
75 "settings.app.form.language" : "Lingua", 81 "settings.app.form.language" : "Lingua",
76 "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica", 82 "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica",
77 "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra", 83 "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra",
78 "settings.app.form.showDisabledServices" : "Mostra i tab disabilitati", 84 "settings.app.form.showDisabledServices" : "Mostra tab servizi disattivati",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra badge messaggi non letti quanto le notifiche sono disattivati",
79 "settings.app.headline" : "Impostazioni", 86 "settings.app.headline" : "Impostazioni",
80 "settings.app.headlineAdvanced" : "Avanzate", 87 "settings.app.headlineAdvanced" : "Avanzate",
81 "settings.app.headlineAppearance" : "Aspetto", 88 "settings.app.headlineAppearance" : "Aspetto",
@@ -83,9 +90,10 @@
83 "settings.app.headlineLanguage" : "Lingua", 90 "settings.app.headlineLanguage" : "Lingua",
84 "settings.app.headlineUpdates" : "Aggiornamenti", 91 "settings.app.headlineUpdates" : "Aggiornamenti",
85 "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", 92 "settings.app.restartRequired" : "Le modifiche richiedono un riavvio",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.",
87 "settings.app.updateStatusAvailable" : "Aggiornamento disponibile, download in corso...", 95 "settings.app.updateStatusAvailable" : "Aggiornamento disponibile, download in corso...",
88 "settings.app.updateStatusSearching" : "È in ricerca di un aggiornamento", 96 "settings.app.updateStatusSearching" : "Ricerca aggiornamenti...",
89 "settings.app.updateStatusUpToDate" : "Stai utilizzando l'ultima versione di Franz", 97 "settings.app.updateStatusUpToDate" : "Stai utilizzando l'ultima versione di Franz",
90 "settings.navigation.account" : "Account", 98 "settings.navigation.account" : "Account",
91 "settings.navigation.availableServices" : "Servizi disponibili", 99 "settings.navigation.availableServices" : "Servizi disponibili",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Tutti i servizi", 103 "settings.recipes.all" : "Tutti i servizi",
96 "settings.recipes.dev" : "Sviluppo", 104 "settings.recipes.dev" : "Sviluppo",
97 "settings.recipes.headline" : "Servizi disponibili", 105 "settings.recipes.headline" : "Servizi disponibili",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Richiedi un servizio",
99 "settings.recipes.mostPopular" : "Più popolari", 107 "settings.recipes.mostPopular" : "Più popolari",
100 "settings.recipes.nothingFound" : "Ci dispiace, ma nessun servizio corrisponde alla tua ricerca.", 108 "settings.recipes.nothingFound" : "Ci dispiace, ma nessun servizio corrisponde alla tua ricerca.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Servizio aggiunto con successo", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Servizio aggiunto con successo",
110 "settings.searchService" : "Cerca servizio",
102 "settings.service.error.goBack" : "Indietro ai servizi", 111 "settings.service.error.goBack" : "Indietro ai servizi",
103 "settings.service.error.headline" : "Errore", 112 "settings.service.error.headline" : "Errore",
104 "settings.service.error.message" : "Impossibile caricare il servizio.", 113 "settings.service.error.message" : "Impossibile caricare il servizio.",
@@ -110,17 +119,25 @@
110 "settings.service.form.customUrlValidationError" : "Impossibile validare il server personalizzato {name}.", 119 "settings.service.form.customUrlValidationError" : "Impossibile validare il server personalizzato {name}.",
111 "settings.service.form.deleteButton" : "Elimina servizio", 120 "settings.service.form.deleteButton" : "Elimina servizio",
112 "settings.service.form.editServiceHeadline" : "Modifica {name}", 121 "settings.service.form.editServiceHeadline" : "Modifica {name}",
113 "settings.service.form.enableAudio" : "Abilita audio", 122 "settings.service.form.enableAudio" : "Attiva audio",
123 "settings.service.form.enableBadge" : "Mostra badge messaggi non letti",
114 "settings.service.form.enableNotification" : "Attiva notifiche", 124 "settings.service.form.enableNotification" : "Attiva notifiche",
115 "settings.service.form.enableService" : "Attiva servizio", 125 "settings.service.form.enableService" : "Attiva servizio",
126 "settings.service.form.headlineBadges" : "Badge messaggi non letti",
127 "settings.service.form.headlineGeneral" : "Generale",
128 "settings.service.form.headlineNotifications" : "Notifiche",
129 "settings.service.form.icon" : "Icona personalizzata",
130 "settings.service.form.iconDelete" : "Elimina",
131 "settings.service.form.iconUpload" : "Trascina la tua immagine o clicca qui",
116 "settings.service.form.indirectMessageInfo" : "Verrai notificato di tutti i messaggi in un canale, non solo @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Verrai notificato di tutti i messaggi in un canale, non solo @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Mostra il simbolo del messaggio per tutti i messaggi", 133 "settings.service.form.indirectMessages" : "Mostra il simbolo del messaggio per tutti i messaggi",
118 "settings.service.form.isMutedInfo" : "Quando disabilitato, tutte le notifiche sonore e le riproduzioni audio saranno disattivate", 134 "settings.service.form.isMutedInfo" : "Quando disattivato, tutte le notifiche sonore e le riproduzioni audio saranno mute",
119 "settings.service.form.name" : "Nome", 135 "settings.service.form.name" : "Nome",
120 "settings.service.form.saveButton" : "Salva servizio", 136 "settings.service.form.saveButton" : "Salva servizio",
121 "settings.service.form.tabHosted" : "Hosted", 137 "settings.service.form.tabHosted" : "Hosted",
122 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸", 138 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸",
123 "settings.service.form.team" : "Team", 139 "settings.service.form.team" : "Team",
140 "settings.service.form.useHostedService" : "Utilizza il servizio hostato {name}.",
124 "settings.service.form.yourServices" : "I tuoi servizi", 141 "settings.service.form.yourServices" : "I tuoi servizi",
125 "settings.services.deletedInfo" : "Il servizio è stato eliminato", 142 "settings.services.deletedInfo" : "Il servizio è stato eliminato",
126 "settings.services.discoverServices" : "Scopri servizi", 143 "settings.services.discoverServices" : "Scopri servizi",
@@ -135,17 +152,17 @@
135 "settings.user.form.accountType.label" : "Tipo account", 152 "settings.user.form.accountType.label" : "Tipo account",
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 153 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Password attuale", 154 "settings.user.form.currentPassword" : "Password attuale",
138 "settings.user.form.email" : "E-mail", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "Nome", 156 "settings.user.form.firstname" : "Nome",
140 "settings.user.form.lastname" : "Cognome", 157 "settings.user.form.lastname" : "Cognome",
141 "settings.user.form.newPassword" : "Nuova password", 158 "settings.user.form.newPassword" : "Nuova password",
142 "sidebar.addNewService" : "Aggiungi nuovo servizio", 159 "sidebar.addNewService" : "Aggiungi nuovo servizio",
143 "sidebar.mute" : "Disabilita audio", 160 "sidebar.muteApp" : "Disattiva notifiche & audio",
144 "sidebar.settings" : "Impostazioni", 161 "sidebar.settings" : "Impostazioni",
145 "sidebar.unmute" : "Abilita audio", 162 "sidebar.unmuteApp" : "Attiva notifiche & audio",
146 "signup.company.label" : "Società", 163 "signup.company.label" : "Società",
147 "signup.email.label" : "Indirizzo e-mail", 164 "signup.email.label" : "Indirizzo email",
148 "signup.emailDuplicate" : "Esiste già un utente con lo stesso indirizzo e-mail", 165 "signup.emailDuplicate" : "Esiste già un utente con lo stesso indirizzo email",
149 "signup.firstname.label" : "Nome", 166 "signup.firstname.label" : "Nome",
150 "signup.headline" : "Iscriviti", 167 "signup.headline" : "Iscriviti",
151 "signup.lastname.label" : "Cognome", 168 "signup.lastname.label" : "Cognome",
@@ -155,19 +172,19 @@
155 "signup.link.login" : "Hai già un account, accedi?", 172 "signup.link.login" : "Hai già un account, accedi?",
156 "signup.password.label" : "Password", 173 "signup.password.label" : "Password",
157 "signup.submit.label" : "Crea un account", 174 "signup.submit.label" : "Crea un account",
158 "subscription.euTaxInfo" : "Residente nella Comunità Europea, possono essere applicate tasse locali", 175 "subscription.euTaxInfo" : "Residenti EU: possono essere applicate tasse locali",
159 "subscription.features.ads" : "Nessuna pubblicità, mai!", 176 "subscription.features.ads" : "Nessuna pubblicità, mai!",
160 "subscription.features.comingSoon" : "in arrivo", 177 "subscription.features.comingSoon" : "in arrivo",
161 "subscription.features.customServices" : "Servizi privati per te e il tuo team", 178 "subscription.features.customServices" : "Servizi privati per te e il tuo team",
162 "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata", 179 "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata",
163 "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hostati come HipChat", 180 "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hostati come HipChat",
164 "subscription.features.vpn" : "Supporto Proxy e VPN", 181 "subscription.features.vpn" : "Supporto Proxy e VPN",
165 "subscription.includedFeatures" : "L'account Franz a pagamento Premium Supporter include", 182 "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include",
166 "subscription.mining.experimental" : "sperimentale", 183 "subscription.mining.experimental" : "sperimentale",
167 "subscription.mining.headline" : "Come funziona?", 184 "subscription.mining.headline" : "Come funziona?",
168 "subscription.mining.line1" : "Attivando il \"Supporto con potenza di calcolo\", Franz utilizzerà circa il 20-50% della tua CPU per minare la criptomoneta Monero che equivale a circa 5$\/anno.", 185 "subscription.mining.line1" : "Attivando il \"Supporto con potenza di calcolo\", Franz utilizzerà circa il 20-50% della tua CPU per minare la criptomoneta Monero che equivale a circa 5$\/anno.",
169 "subscription.mining.line2" : "Adatteremo l'utilizzo della CPU in base al carico di lavoro per non drenare la batteria e rallentare la tua macchina.", 186 "subscription.mining.line2" : "Adatteremo l'utilizzo della CPU in base al carico di lavoro per non drenare la batteria e rallentare la tua macchina.",
170 "subscription.mining.line3" : "Avrai accesso illimitato a tutte le caratteristiche Premium Supporter finché che il mining sarà attivo.", 187 "subscription.mining.line3" : "Avrai accesso illimitato a tutte le caratteristiche Franz Premium Supporter finché il mining sarà attivo.",
171 "subscription.mining.moreInformation" : "Ottieni maggiori informazioni su questo piano.", 188 "subscription.mining.moreInformation" : "Ottieni maggiori informazioni su questo piano.",
172 "subscription.paymentSessionError" : "Impossibile inizializzare il form del pagamento", 189 "subscription.paymentSessionError" : "Impossibile inizializzare il form del pagamento",
173 "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", 190 "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index e091f1f5b..3b0e3b428 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -1,44 +1,44 @@
1{ 1{
2 "global.api.unhealthy" : "Franzオンラインサービスã«æŽ¥ç¶šã§ãã¾ã›ã‚“。", 2 "global.api.unhealthy" : "Franzオンラインサービスã«æŽ¥ç¶šã§ãã¾ã›ã‚“。",
3 "global.notConnectedToTheInternet" : "Internetã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。", 3 "global.notConnectedToTheInternet" : "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。",
4 "import.headline" : "Franz 4サービスã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ", 4 "import.headline" : "Franz 4ã®ã‚µãƒ¼ãƒ“スをインãƒãƒ¼ãƒˆ",
5 "import.notSupportedHeadline" : "サービスã¯Franz 5ã§ã¯ã¾ã å¯¾å¿œãã‚Œã¦ã„ã¾ã›ã‚“", 5 "import.notSupportedHeadline" : "Franz 5ã§ã¯ã“ã®ã‚µãƒ¼ãƒ“スã«ã¾ã å¯¾å¿œãã¦ã„ã¾ã›ã‚“",
6 "import.skip.label" : "サービスã®è¿½åŠ ã¯å¾Œã§è¡Œã†", 6 "import.skip.label" : "後ã§æ‰‹å‹•ã§ã‚µãƒ¼ãƒ“スを追加ãã‚‹",
7 "import.submit.label" : "サービスã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ", 7 "import.submit.label" : "サービスをインãƒãƒ¼ãƒˆ",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "最新情報",
9 "infobar.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", 9 "infobar.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹",
10 "infobar.buttonReloadServices" : "サービスã®ãƒªãƒ­ãƒ¼ãƒ‰", 10 "infobar.buttonReloadServices" : "サービスã®å†èª­ã¿è¾¼ã¿",
11 "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“", 11 "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…報を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ",
12 "infobar.servicesUpdated" : "サービスãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚", 12 "infobar.servicesUpdated" : "サービスãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚",
13 "infobar.updateAvailable" : "Franzã®æ–°ã—ã„æ›´æ–°ãŒã‚ã‚Šã¾ã™ã€‚", 13 "infobar.updateAvailable" : "Franzã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ã€‚",
14 "invite.email.label" : "メールアドレス", 14 "invite.email.label" : "メールアドレス",
15 "invite.headline.friends" : "ã‚ãªãŸã®å‹äººã‚„åŒåƒšã®æ–¹ã‚’3åã¾ã§Franzã«æ‹›å¾…ã§ãã¾ã™", 15 "invite.headline.friends" : "ã‚ãªãŸã®å‹äººã‚„åŒåƒšã®æ–¹ã‚’3åã¾ã§Franzã«æ‹›å¾…ã§ãã¾ã™",
16 "invite.name.label" : "æ°å", 16 "invite.name.label" : "æ°å",
17 "invite.skip.label" : "後ã«ã™ã‚‹", 17 "invite.skip.label" : "後ã§",
18 "invite.submit.label" : "招待をé€ã‚‹", 18 "invite.submit.label" : "招待をé€ã‚‹",
19 "login.email.label" : "メールアドレス", 19 "login.email.label" : "メールアドレス",
20 "login.headline" : "サインイン", 20 "login.headline" : "サインイン",
21 "login.invalidCredentials" : "メールアドレスãパスワードã«èª¤ã‚ŠãŒãã‚Šã¾ã™", 21 "login.invalidCredentials" : "メールアドレスã¾ãŸã¯ãƒ‘スワードãŒé–“é•ã£ã¦ãã¾ã™",
22 "login.link.password" : "パスワードをリセット", 22 "login.link.password" : "パスワードをリセット",
23 "login.link.signup" : "無料アカウントを作æˆ", 23 "login.link.signup" : "無料アカウントを作æˆ",
24 "login.password.label" : "パスワード", 24 "login.password.label" : "パスワード",
25 "login.serverLogout" : "セッションãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ログインã—ç›´ã—ã¦ä¸‹ã•ã„。", 25 "login.serverLogout" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ログインã—ç›´ã—ã¦ä¸‹ã•ã„。",
26 "login.submit.label" : "サインイン", 26 "login.submit.label" : "サインイン",
27 "login.tokenExpired" : "セッションãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ログインã—ç›´ã—ã¦ä¸‹ã•ã„。", 27 "login.tokenExpired" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ログインã—ç›´ã—ã¦ä¸‹ã•ã„。",
28 "password.email.label" : "メールアドレス", 28 "password.email.label" : "メールアドレス",
29 "password.headline" : "パスワードã®ãƒªã‚»ãƒƒãƒˆ", 29 "password.headline" : "パスワードã®ãƒªã‚»ãƒƒãƒˆ",
30 "password.link.login" : "サインイン", 30 "password.link.login" : "サインイン",
31 "password.link.signup" : "無料アカウントを作æˆ", 31 "password.link.signup" : "無料アカウントを作æˆ",
32 "password.noUser" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“", 32 "password.noUser" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã¾ã ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“",
33 "password.submit.label" : "é€ä¿¡", 33 "password.submit.label" : "é€ä¿¡",
34 "password.successInfo" : "メールを確èªã—ã¦ä¸‹ã•ã„", 34 "password.successInfo" : "メールを確èªã—ã¦ä¸‹ã•ã„",
35 "pricing.headline" : "Franzを支æ´ã™ã‚‹", 35 "pricing.headline" : "Franzを支æ´ã™ã‚‹",
36 "pricing.link.skipPayment" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãªã„。", 36 "pricing.link.skipPayment" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãŸããªã„。",
37 "pricing.submit.label" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãŸã„。", 37 "pricing.submit.label" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãŸã„。",
38 "pricing.support.label" : "プランをé¸æŠžã—ã¦ä¸‹ã•ã„", 38 "pricing.support.label" : "プランをé¸æŠžã—ã¦ãã ã•ã„",
39 "service.crashHandler.action" : "{name} をリロード", 39 "service.crashHandler.action" : "{name}ã‚’å†èª­ã¿è¾¼ã¿",
40 "service.crashHandler.autoReload" : "{seconds}秒後ã€è‡ªå‹•çš„ã«{name}ã®å¾©æ—§ã‚’試ã¿ã¾ã™", 40 "service.crashHandler.autoReload" : "{seconds}秒後ã€è‡ªå‹•çš„ã«{name}ã®å¾©æ—§ã‚’試ã¿ã¾ã™",
41 "service.crashHandler.headline" : "ã—ã¾ã£ãŸ!", 41 "service.crashHandler.headline" : "ã—ã¾ã£ãŸï¼",
42 "service.crashHandler.text" : "{name}ã¯ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã“ã—ã¾ã—ãŸã€‚", 42 "service.crashHandler.text" : "{name}ã¯ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã“ã—ã¾ã—ãŸã€‚",
43 "service.disabledHandler.action" : "{name}を有効ã«ã™ã‚‹", 43 "service.disabledHandler.action" : "{name}を有効ã«ã™ã‚‹",
44 "service.disabledHandler.headline" : "{name}ã¯ç„¡åŠ¹ã§ã™", 44 "service.disabledHandler.headline" : "{name}ã¯ç„¡åŠ¹ã§ã™",
@@ -48,24 +48,30 @@
48 "settings.account.accountType.basic" : "Basicアカウント", 48 "settings.account.accountType.basic" : "Basicアカウント",
49 "settings.account.accountType.premium" : "Premium Supporterアカウント", 49 "settings.account.accountType.premium" : "Premium Supporterアカウント",
50 "settings.account.buttonSave" : "プロフィールã®æ›´æ–°", 50 "settings.account.buttonSave" : "プロフィールã®æ›´æ–°",
51 "settings.account.deleteAccount" : "アカウントを削除",
52 "settings.account.deleteEmailSent" : "アカウント削除ã®ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¨ãƒ‡ãƒ¼ã‚¿ã¯å¾©æ—§ã§ãã¾ã›ã‚“ï¼",
53 "settings.account.deleteInfo" : "今後Franzã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¿…è¦ãªã‘ã‚Œã°ã€ã“ã¡ã‚‰ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¨é–¢é€£ã™ã‚‹æƒ…報を削除ã§ãã¾ã™ã€‚",
51 "settings.account.headline" : "アカウント", 54 "settings.account.headline" : "アカウント",
52 "settings.account.headlineAccount" : "アカウント情報", 55 "settings.account.headlineAccount" : "アカウント情報",
56 "settings.account.headlineDangerZone" : "注æ„ï¼",
53 "settings.account.headlineInvoices" : "請求書", 57 "settings.account.headlineInvoices" : "請求書",
54 "settings.account.headlinePassword" : "パスワードã®å¤‰æ›´", 58 "settings.account.headlinePassword" : "パスワードã®å¤‰æ›´",
55 "settings.account.headlineProfile" : "プロフィールã®æ›´æ–°", 59 "settings.account.headlineProfile" : "プロフィールã®æ›´æ–°",
56 "settings.account.headlineSubscription" : "サブスクリプション内容", 60 "settings.account.headlineSubscription" : "ã‚ãªãŸã®ç™»éŒ²å†…容",
57 "settings.account.headlineUpgrade" : "アカウントをアップグレードã—ã€Franzを支æ´ã™ã‚‹", 61 "settings.account.headlineUpgrade" : "アカウントをアップグレードã—ã€Franzを支æ´ã™ã‚‹",
58 "settings.account.invoiceDownload" : "ダウンロード", 62 "settings.account.invoiceDownload" : "ダウンロード",
59 "settings.account.manageSubscription.label" : "サブスクリプションã®ç®¡ç†", 63 "settings.account.manageSubscription.label" : "サブスクリプションã®ç®¡ç†",
60 "settings.account.mining.active" : "1秒ã‚ãŸã‚Š{hashes}個ã®ãƒãƒƒã‚·ãƒ¥ã‚’計算中ã§ã™ã€‚", 64 "settings.account.mining.active" : "1秒ã‚ãŸã‚Š{hashes}個ã®ãƒãƒƒã‚·ãƒ¥ã‚’計算中ã§ã™ã€‚",
61 "settings.account.mining.cancel" : "マイニングをキャンセルã™ã‚‹", 65 "settings.account.mining.cancel" : "マイニングをキャンセル",
62 "settings.account.mining.moreInformation" : "詳細を確èªã™ã‚‹", 66 "settings.account.mining.moreInformation" : "詳細を確èªã™ã‚‹",
63 "settings.account.mining.thankyou" : "ãŠä½¿ã„ã®PCã®å‡¦ç†èƒ½åŠ›ã‚’Franzã®æ”¯æ´ã«æ´»ç”¨ã—ã¦é ‚ãã€ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚", 67 "settings.account.mining.thankyou" : "ãŠä½¿ã„ã®PCã®å‡¦ç†èƒ½åŠ›ã‚’Franzã®æ”¯æ´ã«æ´»ç”¨ã—ã¦é ‚ãã€ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚",
64 "settings.account.successInfo" : "変更内容ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ", 68 "settings.account.successInfo" : "変更内容ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ",
65 "settings.account.tryReloadUserInfoRequest" : "å試行", 69 "settings.account.tryReloadUserInfoRequest" : "ã‚‚ã一度試ã™",
66 "settings.account.userInfoRequestFailed" : "ユーザ情報を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", 70 "settings.account.userInfoRequestFailed" : "ユーザ情報を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ",
71 "settings.app.buttonClearAllCache" : "キャッシュを消去ã™ã‚‹",
67 "settings.app.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", 72 "settings.app.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹",
68 "settings.app.buttonSearchForUpdate" : "æ›´æ–°ã®ç¢ºèª", 73 "settings.app.buttonSearchForUpdate" : "æ›´æ–°ã®ç¢ºèª",
74 "settings.app.cacheInfo" : "ç¾åœ¨ã€Franzã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã¯ãƒ‡ã‚£ã‚¹ã‚¯ã®{size}分を使用ã—ã¦ã„ã¾ã™ã€‚",
69 "settings.app.currentVersion" : "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:", 75 "settings.app.currentVersion" : "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:",
70 "settings.app.form.autoLaunchInBackground" : "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã", 76 "settings.app.form.autoLaunchInBackground" : "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã",
71 "settings.app.form.autoLaunchOnStart" : "システム起動時ã«Franzã‚’é–‹ã", 77 "settings.app.form.autoLaunchOnStart" : "システム起動時ã«Franzã‚’é–‹ã",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "Franzをシステムトレイã«æœ€å°åŒ–ã™ã‚‹", 82 "settings.app.form.minimizeToSystemTray" : "Franzをシステムトレイã«æœ€å°åŒ–ã™ã‚‹",
77 "settings.app.form.runInBackground" : "ウインドウを閉ã˜ãŸéš›ã«Franzã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã•ã›ã¦ãŠã", 83 "settings.app.form.runInBackground" : "ウインドウを閉ã˜ãŸéš›ã«Franzã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã•ã›ã¦ãŠã",
78 "settings.app.form.showDisabledServices" : "無効化ã•ã‚ŒãŸã‚µãƒ¼ãƒ“スã®ã‚¿ãƒ–を表示ã™ã‚‹", 84 "settings.app.form.showDisabledServices" : "無効化ã•ã‚ŒãŸã‚µãƒ¼ãƒ“スã®ã‚¿ãƒ–を表示ã™ã‚‹",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "通知ã®ç„¡åŠ¹æ™‚ã«æœªèª­ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ä»¶æ•°ã‚’表示ã™ã‚‹",
79 "settings.app.headline" : "設定", 86 "settings.app.headline" : "設定",
80 "settings.app.headlineAdvanced" : "詳細", 87 "settings.app.headlineAdvanced" : "詳細",
81 "settings.app.headlineAppearance" : "表示スタイル", 88 "settings.app.headlineAppearance" : "表示スタイル",
@@ -83,7 +90,8 @@
83 "settings.app.headlineLanguage" : "言語", 90 "settings.app.headlineLanguage" : "言語",
84 "settings.app.headlineUpdates" : "æ›´æ–°", 91 "settings.app.headlineUpdates" : "æ›´æ–°",
85 "settings.app.restartRequired" : "変更ã«ã¯å†èµ·å‹•ãŒå¿…è¦ã§ã™", 92 "settings.app.restartRequired" : "変更ã«ã¯å†èµ·å‹•ãŒå¿…è¦ã§ã™",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "キャッシュ",
94 "settings.app.translationHelp" : "Franzã®ç¿»è¨³ä½œæ¥­ã«ã”å”力をãŠé¡˜ã„ã—ã¾ã™ã€‚",
87 "settings.app.updateStatusAvailable" : "æ›´æ–°ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ダウンロードã—ã¦ã„ã¾ã™...", 95 "settings.app.updateStatusAvailable" : "æ›´æ–°ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ダウンロードã—ã¦ã„ã¾ã™...",
88 "settings.app.updateStatusSearching" : "更新を確èªä¸­", 96 "settings.app.updateStatusSearching" : "更新を確èªä¸­",
89 "settings.app.updateStatusUpToDate" : "ãŠä½¿ã„ã®Franzã¯æœ€æ–°ã§ã™", 97 "settings.app.updateStatusUpToDate" : "ãŠä½¿ã„ã®Franzã¯æœ€æ–°ã§ã™",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“ス", 103 "settings.recipes.all" : "ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“ス",
96 "settings.recipes.dev" : "開発版", 104 "settings.recipes.dev" : "開発版",
97 "settings.recipes.headline" : "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス", 105 "settings.recipes.headline" : "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "使ã„ãŸã„サービスãŒä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“ã‹?",
99 "settings.recipes.mostPopular" : "最も人気", 107 "settings.recipes.mostPopular" : "最も人気",
100 "settings.recipes.nothingFound" : "ã™ã¿ã¾ã›ã‚“ãŒã€æ¤œç´¢ãƒ¯ãƒ¼ãƒ‰ã«è©²å½“ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚", 108 "settings.recipes.nothingFound" : "ã™ã¿ã¾ã›ã‚“ãŒã€æ¤œç´¢ãƒ¯ãƒ¼ãƒ‰ã«è©²å½“ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "サービスãŒè¿½åŠ ã•ã‚Œã¾ã—ãŸ", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "サービスãŒè¿½åŠ ã•ã‚Œã¾ã—ãŸ",
110 "settings.searchService" : "サービスを検索",
102 "settings.service.error.goBack" : "サービスã«æˆ»ã‚‹", 111 "settings.service.error.goBack" : "サービスã«æˆ»ã‚‹",
103 "settings.service.error.headline" : "エラー", 112 "settings.service.error.headline" : "エラー",
104 "settings.service.error.message" : "サービスã®ãƒ¬ã‚·ãƒ”を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚", 113 "settings.service.error.message" : "サービスã®ãƒ¬ã‚·ãƒ”を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚",
@@ -110,9 +119,16 @@
110 "settings.service.form.customUrlValidationError" : "独自サーãƒãƒ¼{name}を検証ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚", 119 "settings.service.form.customUrlValidationError" : "独自サーãƒãƒ¼{name}を検証ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚",
111 "settings.service.form.deleteButton" : "サービスã®å‰Šé™¤", 120 "settings.service.form.deleteButton" : "サービスã®å‰Šé™¤",
112 "settings.service.form.editServiceHeadline" : "{name}を編集", 121 "settings.service.form.editServiceHeadline" : "{name}を編集",
113 "settings.service.form.enableAudio" : "オーディオã®æœ‰åŠ¹åŒ–", 122 "settings.service.form.enableAudio" : "オーディオを有効ã«ã™ã‚‹",
123 "settings.service.form.enableBadge" : "未読件数ã®é€šçŸ¥ãƒãƒƒã‚¸ã‚’表示ã™ã‚‹",
114 "settings.service.form.enableNotification" : "通知を有効ã«ã™ã‚‹", 124 "settings.service.form.enableNotification" : "通知を有効ã«ã™ã‚‹",
115 "settings.service.form.enableService" : "サービスを有効ã«ã™ã‚‹", 125 "settings.service.form.enableService" : "サービスを有効ã«ã™ã‚‹",
126 "settings.service.form.headlineBadges" : "未読件数ã®é€šçŸ¥ãƒãƒƒã‚¸",
127 "settings.service.form.headlineGeneral" : "一般",
128 "settings.service.form.headlineNotifications" : "通知メッセージ",
129 "settings.service.form.icon" : "カスタム アイコン",
130 "settings.service.form.iconDelete" : "削除",
131 "settings.service.form.iconUpload" : "ã“ã“ã«ç”»åƒã‚’ドロップã™ã‚‹ã‹ã€ã‚¯ãƒªãƒƒã‚¯ã—ã¦ä¸‹ã•ã„",
116 "settings.service.form.indirectMessageInfo" : "@usernameã€@channelã€@hereã ã‘ã§ãªãã€ãƒãƒ£ãƒ³ãƒãƒ«å†…ã®ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦é€šçŸ¥ã•ã‚Œã¾ã™ã€‚", 132 "settings.service.form.indirectMessageInfo" : "@usernameã€@channelã€@hereã ã‘ã§ãªãã€ãƒãƒ£ãƒ³ãƒãƒ«å†…ã®ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦é€šçŸ¥ã•ã‚Œã¾ã™ã€‚",
117 "settings.service.form.indirectMessages" : "ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦ãƒãƒƒã‚¸ã‚’表示ã™ã‚‹", 133 "settings.service.form.indirectMessages" : "ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦ãƒãƒƒã‚¸ã‚’表示ã™ã‚‹",
118 "settings.service.form.isMutedInfo" : "無効化ã•ã‚Œã¦ã„ã‚‹å ´åˆã€å…¨ã¦ã®é€šçŸ¥éŸ³ã‚„オーディオå†ç”Ÿã¯ç„¡éŸ³ã«ãªã‚Šã¾ã™", 134 "settings.service.form.isMutedInfo" : "無効化ã•ã‚Œã¦ã„ã‚‹å ´åˆã€å…¨ã¦ã®é€šçŸ¥éŸ³ã‚„オーディオå†ç”Ÿã¯ç„¡éŸ³ã«ãªã‚Šã¾ã™",
@@ -121,6 +137,7 @@
121 "settings.service.form.tabHosted" : "ホスト", 137 "settings.service.form.tabHosted" : "ホスト",
122 "settings.service.form.tabOnPremise" : "セルフホスト â­ï¸", 138 "settings.service.form.tabOnPremise" : "セルフホスト â­ï¸",
123 "settings.service.form.team" : "ãƒãƒ¼ãƒ ", 139 "settings.service.form.team" : "ãƒãƒ¼ãƒ ",
140 "settings.service.form.useHostedService" : "ホストã•ã‚ŒãŸã‚µãƒ¼ãƒ“ス {name} を使用ã™ã‚‹ã€‚",
124 "settings.service.form.yourServices" : "利用中ã®ã‚µãƒ¼ãƒ“ス", 141 "settings.service.form.yourServices" : "利用中ã®ã‚µãƒ¼ãƒ“ス",
125 "settings.services.deletedInfo" : "サービスãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ", 142 "settings.services.deletedInfo" : "サービスãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ",
126 "settings.services.discoverServices" : "サービスを探ã™", 143 "settings.services.discoverServices" : "サービスを探ã™",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "姓", 157 "settings.user.form.lastname" : "姓",
141 "settings.user.form.newPassword" : "æ–°ã—ã„パスワード", 158 "settings.user.form.newPassword" : "æ–°ã—ã„パスワード",
142 "sidebar.addNewService" : "サービスを追加", 159 "sidebar.addNewService" : "サービスを追加",
143 "sidebar.mute" : "オーディオã®ç„¡åŠ¹åŒ–", 160 "sidebar.muteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’無効化",
144 "sidebar.settings" : "設定", 161 "sidebar.settings" : "設定",
145 "sidebar.unmute" : "オーディオã®æœ‰åŠ¹åŒ–", 162 "sidebar.unmuteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’有効化",
146 "signup.company.label" : "法人", 163 "signup.company.label" : "法人",
147 "signup.email.label" : "メールアドレス", 164 "signup.email.label" : "メールアドレス",
148 "signup.emailDuplicate" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ—¢ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™", 165 "signup.emailDuplicate" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ—¢ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™",
@@ -182,7 +199,7 @@
182 "tabs.item.disableNotifications" : "通知を無効ã«ã™ã‚‹", 199 "tabs.item.disableNotifications" : "通知を無効ã«ã™ã‚‹",
183 "tabs.item.disableService" : "サービスを無効ã«ã™ã‚‹", 200 "tabs.item.disableService" : "サービスを無効ã«ã™ã‚‹",
184 "tabs.item.edit" : "編集", 201 "tabs.item.edit" : "編集",
185 "tabs.item.enableAudio" : "オーディオã®æœ‰åŠ¹åŒ–", 202 "tabs.item.enableAudio" : "オーディオを有効ã«ã™ã‚‹",
186 "tabs.item.enableNotification" : "通知を有効ã«ã™ã‚‹", 203 "tabs.item.enableNotification" : "通知を有効ã«ã™ã‚‹",
187 "tabs.item.enableService" : "サービスを有効ã«ã™ã‚‹", 204 "tabs.item.enableService" : "サービスを有効ã«ã™ã‚‹",
188 "tabs.item.reload" : "å†èª­ã¿è¾¼ã¿", 205 "tabs.item.reload" : "å†èª­ã¿è¾¼ã¿",
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index 30337cc61..434e885a4 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -3,7 +3,7 @@
3 "global.notConnectedToTheInternet" : "თქვენ áƒáƒ  ხáƒáƒ áƒ— ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბული.", 3 "global.notConnectedToTheInternet" : "თქვენ áƒáƒ  ხáƒáƒ áƒ— ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბული.",
4 "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები", 4 "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები",
5 "import.notSupportedHeadline" : "სერვისები ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი Franz 5-ში", 5 "import.notSupportedHeadline" : "სერვისები ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი Franz 5-ში",
6 "import.skip.label" : "მსურს სერვისების ხელით დáƒáƒ›áƒáƒ¢áƒ”ბáƒ", 6 "import.skip.label" : "I want to add services manually",
7 "import.submit.label" : "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ", 7 "import.submit.label" : "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", 9 "infobar.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ",
@@ -48,8 +48,12 @@
48 "settings.account.accountType.basic" : "ძირითáƒáƒ“ი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜", 48 "settings.account.accountType.basic" : "ძირითáƒáƒ“ი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜",
49 "settings.account.accountType.premium" : "პრემიუმ მხáƒáƒ áƒ“áƒáƒ›áƒ­áƒ”რის áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜", 49 "settings.account.accountType.premium" : "პრემიუმ მხáƒáƒ áƒ“áƒáƒ›áƒ­áƒ”რის áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜",
50 "settings.account.buttonSave" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", 50 "settings.account.buttonSave" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ",
51 "settings.account.deleteAccount" : "Delete account",
52 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
53 "settings.account.deleteInfo" : "If you don't need your Franz account any longer, you can delete your account and all related data here.",
51 "settings.account.headline" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜", 54 "settings.account.headline" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜",
52 "settings.account.headlineAccount" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ", 55 "settings.account.headlineAccount" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ",
56 "settings.account.headlineDangerZone" : "Danger Zone",
53 "settings.account.headlineInvoices" : "ინვáƒáƒ˜áƒ¡áƒ”ბი", 57 "settings.account.headlineInvoices" : "ინვáƒáƒ˜áƒ¡áƒ”ბი",
54 "settings.account.headlinePassword" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ", 58 "settings.account.headlinePassword" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ",
55 "settings.account.headlineProfile" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", 59 "settings.account.headlineProfile" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ",
@@ -64,8 +68,10 @@
64 "settings.account.successInfo" : "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ", 68 "settings.account.successInfo" : "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ",
65 "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ", 69 "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ",
66 "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ", 70 "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", 72 "settings.app.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ",
68 "settings.app.buttonSearchForUpdate" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ", 73 "settings.app.buttonSearchForUpdate" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "áƒáƒ›áƒŸáƒáƒ›áƒ˜áƒœáƒ“ელი ვერსიáƒ:", 75 "settings.app.currentVersion" : "áƒáƒ›áƒŸáƒáƒ›áƒ˜áƒœáƒ“ელი ვერსიáƒ:",
70 "settings.app.form.autoLaunchInBackground" : "გáƒáƒ®áƒ¡áƒ”ნით ფáƒáƒœáƒ–ე", 76 "settings.app.form.autoLaunchInBackground" : "გáƒáƒ®áƒ¡áƒ”ნით ფáƒáƒœáƒ–ე",
71 "settings.app.form.autoLaunchOnStart" : "გáƒáƒ”შვáƒáƒ¡ Franz სისტემის ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡", 77 "settings.app.form.autoLaunchOnStart" : "გáƒáƒ”შვáƒáƒ¡ Franz სისტემის ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვისáƒáƒ¡",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜", 82 "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜",
77 "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Franz გáƒáƒ¨áƒ•áƒ”ბული რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ áƒ დáƒáƒ˜áƒ®áƒ£áƒ áƒ”ბáƒ", 83 "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Franz გáƒáƒ¨áƒ•áƒ”ბული რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ áƒ დáƒáƒ˜áƒ®áƒ£áƒ áƒ”ბáƒ",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled",
79 "settings.app.headline" : "პáƒáƒ áƒáƒ›áƒ”ტრები", 86 "settings.app.headline" : "პáƒáƒ áƒáƒ›áƒ”ტრები",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Appearance",
@@ -83,6 +90,7 @@
83 "settings.app.headlineLanguage" : "ენáƒ", 90 "settings.app.headlineLanguage" : "ენáƒ",
84 "settings.app.headlineUpdates" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბები", 91 "settings.app.headlineUpdates" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბები",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Changes require restart",
93 "settings.app.subheadlineCache" : "Cache",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 94 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბრხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ, იწყებრგáƒáƒ“მáƒáƒ¬áƒ”რáƒ...", 95 "settings.app.updateStatusAvailable" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბრხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ, იწყებრგáƒáƒ“მáƒáƒ¬áƒ”რáƒ...",
88 "settings.app.updateStatusSearching" : "მიმდინáƒáƒ áƒ”áƒáƒ‘ს გáƒáƒœáƒáƒ®áƒšáƒ”ბის ძიებáƒ", 96 "settings.app.updateStatusSearching" : "მიმდინáƒáƒ áƒ”áƒáƒ‘ს გáƒáƒœáƒáƒ®áƒšáƒ”ბის ძიებáƒ",
@@ -99,6 +107,7 @@
99 "settings.recipes.mostPopular" : "ყველáƒáƒ–ე პáƒáƒžáƒ£áƒšáƒáƒ áƒ£áƒšáƒ˜", 107 "settings.recipes.mostPopular" : "ყველáƒáƒ–ე პáƒáƒžáƒ£áƒšáƒáƒ áƒ£áƒšáƒ˜",
100 "settings.recipes.nothingFound" : "უკáƒáƒªáƒ áƒáƒ•áƒáƒ“, მáƒáƒ’რáƒáƒ› áƒáƒ áƒªáƒ”რთი სერვისი áƒáƒ  შეესáƒáƒ‘áƒáƒ›áƒ”ბრთქვენს ძიებáƒáƒ¡.", 108 "settings.recipes.nothingFound" : "უკáƒáƒªáƒ áƒáƒ•áƒáƒ“, მáƒáƒ’რáƒáƒ› áƒáƒ áƒªáƒ”რთი სერვისი áƒáƒ  შეესáƒáƒ‘áƒáƒ›áƒ”ბრთქვენს ძიებáƒáƒ¡.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "სერვისი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ”მáƒáƒ¢áƒ", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "სერვისი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ”მáƒáƒ¢áƒ",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "სერვისებში დáƒáƒ‘რუნებáƒ", 111 "settings.service.error.goBack" : "სერვისებში დáƒáƒ‘რუნებáƒ",
103 "settings.service.error.headline" : "შეცდáƒáƒ›áƒ", 112 "settings.service.error.headline" : "შეცდáƒáƒ›áƒ",
104 "settings.service.error.message" : "სერვისის ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ.", 113 "settings.service.error.message" : "სერვისის ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ.",
@@ -111,8 +120,15 @@
111 "settings.service.form.deleteButton" : "სერვისის წáƒáƒ¨áƒšáƒ", 120 "settings.service.form.deleteButton" : "სერვისის წáƒáƒ¨áƒšáƒ",
112 "settings.service.form.editServiceHeadline" : "შეáƒáƒ¡áƒ¬áƒáƒ áƒ” {name}", 121 "settings.service.form.editServiceHeadline" : "შეáƒáƒ¡áƒ¬áƒáƒ áƒ” {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Enable audio",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "შეტყáƒáƒ‘ინებების ჩáƒáƒ áƒ—ვáƒ", 124 "settings.service.form.enableNotification" : "შეტყáƒáƒ‘ინებების ჩáƒáƒ áƒ—ვáƒ",
115 "settings.service.form.enableService" : "სერვისის ჩáƒáƒ áƒ—ვáƒ", 125 "settings.service.form.enableService" : "სერვისის ჩáƒáƒ áƒ—ვáƒ",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "მთáƒáƒ•áƒáƒ áƒ˜",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "თქვენ მიიღებთ შეტყáƒáƒ‘ინებáƒáƒ¡ ყáƒáƒ•áƒ”ლი áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებისáƒáƒ¡ áƒáƒ áƒ®áƒ–ე, áƒáƒ áƒáƒ›áƒáƒ áƒ¢áƒ @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "თქვენ მიიღებთ შეტყáƒáƒ‘ინებáƒáƒ¡ ყáƒáƒ•áƒ”ლი áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებისáƒáƒ¡ áƒáƒ áƒ®áƒ–ე, áƒáƒ áƒáƒ›áƒáƒ áƒ¢áƒ @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "áƒáƒ©áƒ•áƒ”ნე შეტყáƒáƒ‘ინებების ნიშáƒáƒœáƒ˜ ყáƒáƒ•áƒ”ლი áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებისთვის", 133 "settings.service.form.indirectMessages" : "áƒáƒ©áƒ•áƒ”ნე შეტყáƒáƒ‘ინებების ნიშáƒáƒœáƒ˜ ყáƒáƒ•áƒ”ლი áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებისთვის",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
@@ -121,6 +137,7 @@
121 "settings.service.form.tabHosted" : "დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒšáƒ˜", 137 "settings.service.form.tabHosted" : "დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒšáƒ˜",
122 "settings.service.form.tabOnPremise" : "თვით დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒšáƒ˜ â­ï¸", 138 "settings.service.form.tabOnPremise" : "თვით დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒšáƒ˜ â­ï¸",
123 "settings.service.form.team" : "გუნდი", 139 "settings.service.form.team" : "გუნდი",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "თქვენი სერვისები", 141 "settings.service.form.yourServices" : "თქვენი სერვისები",
125 "settings.services.deletedInfo" : "სერვისი წáƒáƒ˜áƒ¨áƒáƒšáƒ", 142 "settings.services.deletedInfo" : "სერვისი წáƒáƒ˜áƒ¨áƒáƒšáƒ",
126 "settings.services.discoverServices" : "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები", 143 "settings.services.discoverServices" : "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜", 158 "settings.user.form.newPassword" : "áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜",
142 "sidebar.addNewService" : "Add new service", 159 "sidebar.addNewService" : "Add new service",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Disable notifications & audio",
144 "sidebar.settings" : "პáƒáƒ áƒáƒ›áƒ”ტრები", 161 "sidebar.settings" : "პáƒáƒ áƒáƒ›áƒ”ტრები",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Enable notifications & audio",
146 "signup.company.label" : "კáƒáƒ›áƒžáƒáƒœáƒ˜áƒ", 163 "signup.company.label" : "კáƒáƒ›áƒžáƒáƒœáƒ˜áƒ",
147 "signup.email.label" : "მეილი", 164 "signup.email.label" : "მეილი",
148 "signup.emailDuplicate" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ› მეილით უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს", 165 "signup.emailDuplicate" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ› მეილით უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს",
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index 70ae4467e..69ffca6e2 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -3,7 +3,7 @@
3 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", 3 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.",
4 "import.headline" : "Importeer je Franz 4 services", 4 "import.headline" : "Importeer je Franz 4 services",
5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", 5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5",
6 "import.skip.label" : "Ik wil handmatig een service toevoegen", 6 "import.skip.label" : "I want to add services manually",
7 "import.submit.label" : "Importeer services", 7 "import.submit.label" : "Importeer services",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update", 9 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update",
@@ -48,8 +48,12 @@
48 "settings.account.accountType.basic" : "Basis Account", 48 "settings.account.accountType.basic" : "Basis Account",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Profiel aanpassen", 50 "settings.account.buttonSave" : "Profiel aanpassen",
51 "settings.account.deleteAccount" : "Delete account",
52 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
53 "settings.account.deleteInfo" : "If you don't need your Franz account any longer, you can delete your account and all related data here.",
51 "settings.account.headline" : "Account", 54 "settings.account.headline" : "Account",
52 "settings.account.headlineAccount" : "Account informatie", 55 "settings.account.headlineAccount" : "Account informatie",
56 "settings.account.headlineDangerZone" : "Danger Zone",
53 "settings.account.headlineInvoices" : "Facturen", 57 "settings.account.headlineInvoices" : "Facturen",
54 "settings.account.headlinePassword" : "Wijzig wachtwoord", 58 "settings.account.headlinePassword" : "Wijzig wachtwoord",
55 "settings.account.headlineProfile" : "Profiel aanpassen", 59 "settings.account.headlineProfile" : "Profiel aanpassen",
@@ -64,8 +68,10 @@
64 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", 68 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
65 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", 69 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
66 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden", 70 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "Herstart & installeer update", 72 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
68 "settings.app.buttonSearchForUpdate" : "Controleer op updates", 73 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Huidige versie:", 75 "settings.app.currentVersion" : "Huidige versie:",
70 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", 76 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
71 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", 77 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", 82 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
77 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 83 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled",
79 "settings.app.headline" : "Instellingen", 86 "settings.app.headline" : "Instellingen",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Appearance",
@@ -83,6 +90,7 @@
83 "settings.app.headlineLanguage" : "Taal", 90 "settings.app.headlineLanguage" : "Taal",
84 "settings.app.headlineUpdates" : "Updates", 91 "settings.app.headlineUpdates" : "Updates",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Changes require restart",
93 "settings.app.subheadlineCache" : "Cache",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 94 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", 95 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
88 "settings.app.updateStatusSearching" : "Zoekt naar updates", 96 "settings.app.updateStatusSearching" : "Zoekt naar updates",
@@ -99,6 +107,7 @@
99 "settings.recipes.mostPopular" : "Meest populair", 107 "settings.recipes.mostPopular" : "Meest populair",
100 "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.", 108 "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "Terug naar de services", 111 "settings.service.error.goBack" : "Terug naar de services",
103 "settings.service.error.headline" : "Fout", 112 "settings.service.error.headline" : "Fout",
104 "settings.service.error.message" : "Kon het service-recept niet laden.", 113 "settings.service.error.message" : "Kon het service-recept niet laden.",
@@ -111,8 +120,15 @@
111 "settings.service.form.deleteButton" : "Service verwijderen", 120 "settings.service.form.deleteButton" : "Service verwijderen",
112 "settings.service.form.editServiceHeadline" : "{name} aanpassen", 121 "settings.service.form.editServiceHeadline" : "{name} aanpassen",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Enable audio",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Notificaties aanzetten", 124 "settings.service.form.enableNotification" : "Notificaties aanzetten",
115 "settings.service.form.enableService" : "Service aanzetten", 125 "settings.service.form.enableService" : "Service aanzetten",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Algemeen",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten", 133 "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
@@ -121,6 +137,7 @@
121 "settings.service.form.tabHosted" : "Gehost", 137 "settings.service.form.tabHosted" : "Gehost",
122 "settings.service.form.tabOnPremise" : "Intern gehost â­ï¸", 138 "settings.service.form.tabOnPremise" : "Intern gehost â­ï¸",
123 "settings.service.form.team" : "Team", 139 "settings.service.form.team" : "Team",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Jouw services", 141 "settings.service.form.yourServices" : "Jouw services",
125 "settings.services.deletedInfo" : "Service werd verwijderd", 142 "settings.services.deletedInfo" : "Service werd verwijderd",
126 "settings.services.discoverServices" : "Services ontdekken", 143 "settings.services.discoverServices" : "Services ontdekken",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "Achternaam", 157 "settings.user.form.lastname" : "Achternaam",
141 "settings.user.form.newPassword" : "Nieuw wachtwoord", 158 "settings.user.form.newPassword" : "Nieuw wachtwoord",
142 "sidebar.addNewService" : "!!!Add new service", 159 "sidebar.addNewService" : "!!!Add new service",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Disable notifications & audio",
144 "sidebar.settings" : "Instellingen", 161 "sidebar.settings" : "Instellingen",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Enable notifications & audio",
146 "signup.company.label" : "Bedrijf", 163 "signup.company.label" : "Bedrijf",
147 "signup.email.label" : "E-mailadres", 164 "signup.email.label" : "E-mailadres",
148 "signup.emailDuplicate" : "Er bestaat reeds een gebruiker met dat e-mailadres", 165 "signup.emailDuplicate" : "Er bestaat reeds een gebruiker met dat e-mailadres",
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index a78a08878..499f4d784 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -1,21 +1,21 @@
1{ 1{
2 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services", 2 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services",
3 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", 3 "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.",
4 "import.headline" : "Importeer je Franz 4 services", 4 "import.headline" : "Importeer uw Franz 4 services",
5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", 5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5",
6 "import.skip.label" : "Ik wil handmatig een service toevoegen", 6 "import.skip.label" : "Ik wil services handmatig toevoegen",
7 "import.submit.label" : "Importeer services", 7 "import.submit.label" : "Importeer services",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Wat is er nieuw?",
9 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update", 9 "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren",
10 "infobar.buttonReloadServices" : "Herlaad de services", 10 "infobar.buttonReloadServices" : "Herlaad de services",
11 "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden", 11 "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden",
12 "infobar.servicesUpdated" : "Je services zijn geüpdatet.", 12 "infobar.servicesUpdated" : "Je services zijn bijgewerkt.",
13 "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.", 13 "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.",
14 "invite.email.label" : "E-mailadres", 14 "invite.email.label" : "E-mailadres",
15 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", 15 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit",
16 "invite.name.label" : "Naam", 16 "invite.name.label" : "Naam",
17 "invite.skip.label" : "Ik wil dit later doen", 17 "invite.skip.label" : "Ik wil dit later doen",
18 "invite.submit.label" : "Verzend uitnodigingen", 18 "invite.submit.label" : "Uitnodigingen verzenden",
19 "login.email.label" : "E-mailadres", 19 "login.email.label" : "E-mailadres",
20 "login.headline" : "Inloggen", 20 "login.headline" : "Inloggen",
21 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig", 21 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig",
@@ -37,22 +37,26 @@
37 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen", 37 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
38 "pricing.support.label" : "Selecteer je ondersteuningsplan", 38 "pricing.support.label" : "Selecteer je ondersteuningsplan",
39 "service.crashHandler.action" : "{name} herladen", 39 "service.crashHandler.action" : "{name} herladen",
40 "service.crashHandler.autoReload" : "Probeer {name} te herstellen over {seconds} seconden", 40 "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden",
41 "service.crashHandler.headline" : "Oh nee!", 41 "service.crashHandler.headline" : "Oh nee!",
42 "service.crashHandler.text" : "{name} heeft voor een fout gezorgd.", 42 "service.crashHandler.text" : "{name} heeft voor een fout gezorgd.",
43 "service.disabledHandler.action" : "Activeer {name}", 43 "service.disabledHandler.action" : "Activeer {name}",
44 "service.disabledHandler.headline" : "{name} is uitgeschakeld", 44 "service.disabledHandler.headline" : "{name} is uitgeschakeld",
45 "services.getStarted" : "Beginnen", 45 "services.getStarted" : "Begin",
46 "services.welcome" : "Welkom bij Franz", 46 "services.welcome" : "Welkom bij Franz",
47 "settings.account.account.editButton" : "Bewerk account", 47 "settings.account.account.editButton" : "Bewerk account",
48 "settings.account.accountType.basic" : "Basis Account", 48 "settings.account.accountType.basic" : "Basis Account",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Update profiel", 50 "settings.account.buttonSave" : "Update profiel",
51 "settings.account.deleteAccount" : "Verwijder account",
52 "settings.account.deleteEmailSent" : "Je hebt een e-mail ontvangen met een link om de aanvraag tot verwijderen van het account te bevestigen. Je accountgegevens en -data kunnen niet worden teruggehaald!",
53 "settings.account.deleteInfo" : "Wanneer je je Franz account niet langer wilt gebruiken, kan je je account en alle gerelateerde data hier verwijderen.",
51 "settings.account.headline" : "Account", 54 "settings.account.headline" : "Account",
52 "settings.account.headlineAccount" : "Account informatie", 55 "settings.account.headlineAccount" : "Account informatie",
56 "settings.account.headlineDangerZone" : "Gevarenzone",
53 "settings.account.headlineInvoices" : "Facturen", 57 "settings.account.headlineInvoices" : "Facturen",
54 "settings.account.headlinePassword" : "Wijzig wachtwoord", 58 "settings.account.headlinePassword" : "Wijzig wachtwoord",
55 "settings.account.headlineProfile" : "Update profiel", 59 "settings.account.headlineProfile" : "Profiel bijwerken",
56 "settings.account.headlineSubscription" : "Je abonnement", 60 "settings.account.headlineSubscription" : "Je abonnement",
57 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz", 61 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz",
58 "settings.account.invoiceDownload" : "Download", 62 "settings.account.invoiceDownload" : "Download",
@@ -64,8 +68,10 @@
64 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", 68 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
65 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", 69 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
66 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden", 70 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden",
71 "settings.app.buttonClearAllCache" : "Cache legen",
67 "settings.app.buttonInstallUpdate" : "Herstart & installeer update", 72 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
68 "settings.app.buttonSearchForUpdate" : "Controleer op updates", 73 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
74 "settings.app.cacheInfo" : "De Franz cache gebruikt op dit moment {size} schijfruimte.",
69 "settings.app.currentVersion" : "Huidige versie:", 75 "settings.app.currentVersion" : "Huidige versie:",
70 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", 76 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
71 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", 77 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten",
@@ -76,6 +82,7 @@
76 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", 82 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
77 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 83 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
78 "settings.app.form.showDisabledServices" : "Laat uitgeschakelde services zien", 84 "settings.app.form.showDisabledServices" : "Laat uitgeschakelde services zien",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
79 "settings.app.headline" : "Instellingen", 86 "settings.app.headline" : "Instellingen",
80 "settings.app.headlineAdvanced" : "Geavanceerd", 87 "settings.app.headlineAdvanced" : "Geavanceerd",
81 "settings.app.headlineAppearance" : "Weergave", 88 "settings.app.headlineAppearance" : "Weergave",
@@ -83,7 +90,8 @@
83 "settings.app.headlineLanguage" : "Taal", 90 "settings.app.headlineLanguage" : "Taal",
84 "settings.app.headlineUpdates" : "Updates", 91 "settings.app.headlineUpdates" : "Updates",
85 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", 92 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.",
87 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", 95 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
88 "settings.app.updateStatusSearching" : "Zoekt naar updates", 96 "settings.app.updateStatusSearching" : "Zoekt naar updates",
89 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", 97 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz",
@@ -95,32 +103,41 @@
95 "settings.recipes.all" : "Alle services", 103 "settings.recipes.all" : "Alle services",
96 "settings.recipes.dev" : "Ontwikkeling", 104 "settings.recipes.dev" : "Ontwikkeling",
97 "settings.recipes.headline" : "Beschikbare services", 105 "settings.recipes.headline" : "Beschikbare services",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Mist er een dienst?",
99 "settings.recipes.mostPopular" : "Meest populair", 107 "settings.recipes.mostPopular" : "Meest populair",
100 "settings.recipes.nothingFound" : "Geen service kwam overeen met je zoekopdracht.", 108 "settings.recipes.nothingFound" : "Geen service kwam overeen met je zoekopdracht.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd",
110 "settings.searchService" : "Zoek service",
102 "settings.service.error.goBack" : "Terug naar services", 111 "settings.service.error.goBack" : "Terug naar services",
103 "settings.service.error.headline" : "Fout", 112 "settings.service.error.headline" : "Fout",
104 "settings.service.error.message" : "Kon servicerecept niet laden.", 113 "settings.service.error.message" : "Kon servicerecept niet laden.",
105 "settings.service.form.addServiceHeadline" : "Toevoegen {name}", 114 "settings.service.form.addServiceHeadline" : "Toevoegen {name}",
106 "settings.service.form.availableServices" : "Beschikbare services", 115 "settings.service.form.availableServices" : "Beschikbare services",
107 "settings.service.form.customUrl" : "Custom server", 116 "settings.service.form.customUrl" : "Aangepaste server",
108 "settings.service.form.customUrlPremiumInfo" : "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.", 117 "settings.service.form.customUrlPremiumInfo" : "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade je account", 118 "settings.service.form.customUrlUpgradeAccount" : "Upgrade je account",
110 "settings.service.form.customUrlValidationError" : "Kon custom server {name} niet valideren.", 119 "settings.service.form.customUrlValidationError" : "Kon aangepaste server {name} niet valideren.",
111 "settings.service.form.deleteButton" : "Verwijder service", 120 "settings.service.form.deleteButton" : "Verwijder service",
112 "settings.service.form.editServiceHeadline" : "Bewerk {name}", 121 "settings.service.form.editServiceHeadline" : "Bewerk {name}",
113 "settings.service.form.enableAudio" : "Audio inschakelen", 122 "settings.service.form.enableAudio" : "Audio inschakelen",
123 "settings.service.form.enableBadge" : "Toon badges met ongelezen berichten",
114 "settings.service.form.enableNotification" : "Meldingen inschakelen", 124 "settings.service.form.enableNotification" : "Meldingen inschakelen",
115 "settings.service.form.enableService" : "Service inschakelen", 125 "settings.service.form.enableService" : "Service inschakelen",
126 "settings.service.form.headlineBadges" : "Ongelezen berichten badges",
127 "settings.service.form.headlineGeneral" : "Algemeen",
128 "settings.service.form.headlineNotifications" : "Meldingen",
129 "settings.service.form.icon" : "Aangepast icoon",
130 "settings.service.form.iconDelete" : "Verwijderen",
131 "settings.service.form.iconUpload" : "Sleep je afbeelding, of klik hier",
116 "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", 133 "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten",
118 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", 134 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn",
119 "settings.service.form.name" : "Naam", 135 "settings.service.form.name" : "Naam",
120 "settings.service.form.saveButton" : "Opslaan service", 136 "settings.service.form.saveButton" : "Opslaan service",
121 "settings.service.form.tabHosted" : "Gehost", 137 "settings.service.form.tabHosted" : "Gehost",
122 "settings.service.form.tabOnPremise" : "Zelf-gehost *", 138 "settings.service.form.tabOnPremise" : "Zelf-gehost â­ï¸",
123 "settings.service.form.team" : "Team", 139 "settings.service.form.team" : "Team",
140 "settings.service.form.useHostedService" : "Gebruik de gehoste service {name}",
124 "settings.service.form.yourServices" : "Jouw services", 141 "settings.service.form.yourServices" : "Jouw services",
125 "settings.services.deletedInfo" : "Service is verwijderd", 142 "settings.services.deletedInfo" : "Service is verwijderd",
126 "settings.services.discoverServices" : "Ontdek services", 143 "settings.services.discoverServices" : "Ontdek services",
@@ -134,15 +151,15 @@
134 "settings.user.form.accountType.individual" : "Individueel", 151 "settings.user.form.accountType.individual" : "Individueel",
135 "settings.user.form.accountType.label" : "Account type", 152 "settings.user.form.accountType.label" : "Account type",
136 "settings.user.form.accountType.non-profit" : "Non-Profit", 153 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Huidig wachtwoord", 154 "settings.user.form.currentPassword" : "Huidige wachtwoord",
138 "settings.user.form.email" : "E-mailadres", 155 "settings.user.form.email" : "E-mailadres",
139 "settings.user.form.firstname" : "Voornaam", 156 "settings.user.form.firstname" : "Voornaam",
140 "settings.user.form.lastname" : "Achternaam", 157 "settings.user.form.lastname" : "Achternaam",
141 "settings.user.form.newPassword" : "Nieuw wachtwoord", 158 "settings.user.form.newPassword" : "Nieuw wachtwoord",
142 "sidebar.addNewService" : "Service toevoegen", 159 "sidebar.addNewService" : "Service toevoegen",
143 "sidebar.mute" : "Audio uitschakelen", 160 "sidebar.muteApp" : "Uitschakelen berichten & geluid",
144 "sidebar.settings" : "Instellingen", 161 "sidebar.settings" : "Instellingen",
145 "sidebar.unmute" : "Audio inschakelen", 162 "sidebar.unmuteApp" : "Inschakelen berichten & geluid",
146 "signup.company.label" : "Bedrijf", 163 "signup.company.label" : "Bedrijf",
147 "signup.email.label" : "E-mailadres", 164 "signup.email.label" : "E-mailadres",
148 "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", 165 "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres",
@@ -154,7 +171,7 @@
154 "signup.legal.terms" : "Gebruiksvoorwaarden", 171 "signup.legal.terms" : "Gebruiksvoorwaarden",
155 "signup.link.login" : "Al een account? Log in!", 172 "signup.link.login" : "Al een account? Log in!",
156 "signup.password.label" : "Wachtwoord", 173 "signup.password.label" : "Wachtwoord",
157 "signup.submit.label" : "Maak een nieuw account aan", 174 "signup.submit.label" : "Account aanmaken",
158 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn", 175 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn",
159 "subscription.features.ads" : "Geen advertenties, nooit!", 176 "subscription.features.ads" : "Geen advertenties, nooit!",
160 "subscription.features.comingSoon" : "komt binnenkort", 177 "subscription.features.comingSoon" : "komt binnenkort",
@@ -166,7 +183,7 @@
166 "subscription.mining.experimental" : "experimenteel", 183 "subscription.mining.experimental" : "experimenteel",
167 "subscription.mining.headline" : "Hoe werkt dit?", 184 "subscription.mining.headline" : "Hoe werkt dit?",
168 "subscription.mining.line1" : "Door \"Ondersteun met rekenkracht\" te activeren, zal Franz ongeveer 20-50% van je CPU gebruiken om de cryptomunt Monero te minen, wat overeenkomt met ongeveer $ 5\/jaar.", 185 "subscription.mining.line1" : "Door \"Ondersteun met rekenkracht\" te activeren, zal Franz ongeveer 20-50% van je CPU gebruiken om de cryptomunt Monero te minen, wat overeenkomt met ongeveer $ 5\/jaar.",
169 "subscription.mining.line2" : "We zullen het CPU-gebruik aanpassen aan je gebruik en daarmee voorkomen dat de batterij niet leegloopt of dat jij en je werk afgeremd wordt.", 186 "subscription.mining.line2" : "We zullen het CPU-gebruik aanpassen aan je gebruik en daarmee voorkomen dat de batterij leegloopt of dat jij en je werk worden afgeremd.",
170 "subscription.mining.line3" : "Zolang de miner actief is, heb je onbeperkt toegang tot alle Franz Premium Supporter Features.", 187 "subscription.mining.line3" : "Zolang de miner actief is, heb je onbeperkt toegang tot alle Franz Premium Supporter Features.",
171 "subscription.mining.moreInformation" : "Verkrijg meer informatie over dit plan.", 188 "subscription.mining.moreInformation" : "Verkrijg meer informatie over dit plan.",
172 "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren", 189 "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index 67657155f..85b8cf497 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -3,9 +3,9 @@
3 "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", 3 "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.",
4 "import.headline" : "Importuj usługi Franz 4", 4 "import.headline" : "Importuj usługi Franz 4",
5 "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5", 5 "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5",
6 "import.skip.label" : "Chcę ręcznie dodać usługi", 6 "import.skip.label" : "Chcę dodać usługi samodzielnie",
7 "import.submit.label" : "Zaimportuj usługi", 7 "import.submit.label" : "Zaimportuj usługi",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Co nowego?",
9 "infobar.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", 9 "infobar.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™",
10 "infobar.buttonReloadServices" : "Załaduj ponownie usługi", 10 "infobar.buttonReloadServices" : "Załaduj ponownie usługi",
11 "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika", 11 "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.", 36 "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.",
37 "pricing.submit.label" : "Chcę wspierać rozwój aplikacji Franz", 37 "pricing.submit.label" : "Chcę wspierać rozwój aplikacji Franz",
38 "pricing.support.label" : "Wybierz swój plan wsparcia", 38 "pricing.support.label" : "Wybierz swój plan wsparcia",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Przeładuj {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Próba automatycznego odnowienia {name} za {seconds} sekund\/y",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "O nie!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} spowodował problem.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Dostępny {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} jest wyłączony",
45 "services.getStarted" : "Zacznij", 45 "services.getStarted" : "Zacznij",
46 "services.welcome" : "Witaj w programie Franz", 46 "services.welcome" : "Witaj w programie Franz",
47 "settings.account.account.editButton" : "Modyfikuj konta", 47 "settings.account.account.editButton" : "Modyfikuj konta",
48 "settings.account.accountType.basic" : "Podstawowe konto", 48 "settings.account.accountType.basic" : "Podstawowe konto",
49 "settings.account.accountType.premium" : "Premium Supporter Account", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Uaktualnij profil", 50 "settings.account.buttonSave" : "Uaktualnij profil",
51 "settings.account.deleteAccount" : "Usuń konto",
52 "settings.account.deleteEmailSent" : "Wysłaliśmy email z linkiem do potwierdzenia usunięcia konta. Konto oraz dane są usuwane trwale i nie można tego cofnąć!",
53 "settings.account.deleteInfo" : "Jeżeli nie potrzebujesz już konta Franz, możesz je usunąć oraz wszystkie dane na nim zapisane.",
51 "settings.account.headline" : "Konto", 54 "settings.account.headline" : "Konto",
52 "settings.account.headlineAccount" : "Informacje o koncie", 55 "settings.account.headlineAccount" : "Informacje o koncie",
56 "settings.account.headlineDangerZone" : "Niebezpieczna strefa",
53 "settings.account.headlineInvoices" : "Faktury", 57 "settings.account.headlineInvoices" : "Faktury",
54 "settings.account.headlinePassword" : "Zmień hasło", 58 "settings.account.headlinePassword" : "Zmień hasło",
55 "settings.account.headlineProfile" : "Uaktualnij profil", 59 "settings.account.headlineProfile" : "Uaktualnij profil",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "Twoje zmiany zostały zapisane", 68 "settings.account.successInfo" : "Twoje zmiany zostały zapisane",
65 "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie", 69 "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie",
66 "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", 70 "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", 72 "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™",
68 "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje", 73 "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Aktualna wersja:", 75 "settings.app.currentVersion" : "Aktualna wersja:",
70 "settings.app.form.autoLaunchInBackground" : "Otwórz w tle", 76 "settings.app.form.autoLaunchInBackground" : "Otwórz w tle",
71 "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na poczÄ…tku", 77 "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na poczÄ…tku",
72 "settings.app.form.beta" : "Uwzględnij wersje beta", 78 "settings.app.form.beta" : "Uwzględnij wersje beta",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni",
74 "settings.app.form.enableSystemTray" : "Pokaż Franza w tacy systemowej", 80 "settings.app.form.enableSystemTray" : "Pokaż Franza w tacy systemowej",
75 "settings.app.form.language" : "Język", 81 "settings.app.form.language" : "Język",
76 "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", 82 "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz",
77 "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna", 83 "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Wyłącz wyświetlanie zakładek z usługami",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone",
79 "settings.app.headline" : "Ustawienia", 86 "settings.app.headline" : "Ustawienia",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Zaawansowane",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "WyglÄ…d",
82 "settings.app.headlineGeneral" : "Ogólne", 89 "settings.app.headlineGeneral" : "Ogólne",
83 "settings.app.headlineLanguage" : "Język", 90 "settings.app.headlineLanguage" : "Język",
84 "settings.app.headlineUpdates" : "Aktualizacje", 91 "settings.app.headlineUpdates" : "Aktualizacje",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.",
87 "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...", 95 "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...",
88 "settings.app.updateStatusSearching" : "Szukam aktualizacji", 96 "settings.app.updateStatusSearching" : "Szukam aktualizacji",
89 "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz", 97 "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Wszystkie usługi", 103 "settings.recipes.all" : "Wszystkie usługi",
96 "settings.recipes.dev" : "Rozwojowe", 104 "settings.recipes.dev" : "Rozwojowe",
97 "settings.recipes.headline" : "Dostępne usługi", 105 "settings.recipes.headline" : "Dostępne usługi",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Brak usługi?",
99 "settings.recipes.mostPopular" : "Najpopularniejsze", 107 "settings.recipes.mostPopular" : "Najpopularniejsze",
100 "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.", 108 "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "Wróć do usług", 111 "settings.service.error.goBack" : "Wróć do usług",
103 "settings.service.error.headline" : "BÅ‚Ä…d", 112 "settings.service.error.headline" : "BÅ‚Ä…d",
104 "settings.service.error.message" : "Nie można wczytać przepisu usługi.", 113 "settings.service.error.message" : "Nie można wczytać przepisu usługi.",
@@ -110,39 +119,47 @@
110 "settings.service.form.customUrlValidationError" : "Nie można zweryfikować spersonalizowanego {name} serwera.", 119 "settings.service.form.customUrlValidationError" : "Nie można zweryfikować spersonalizowanego {name} serwera.",
111 "settings.service.form.deleteButton" : "Usuń usługę", 120 "settings.service.form.deleteButton" : "Usuń usługę",
112 "settings.service.form.editServiceHeadline" : "Edytuj {name}", 121 "settings.service.form.editServiceHeadline" : "Edytuj {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Włącz dźwięk",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Aktywuj powiadomienia", 124 "settings.service.form.enableNotification" : "Aktywuj powiadomienia",
115 "settings.service.form.enableService" : "Aktywuj usługę", 125 "settings.service.form.enableService" : "Aktywuj usługę",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Ogólne",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", 133 "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone",
119 "settings.service.form.name" : "Nazwa", 135 "settings.service.form.name" : "Nazwa",
120 "settings.service.form.saveButton" : "Zapisz usługę", 136 "settings.service.form.saveButton" : "Zapisz usługę",
121 "settings.service.form.tabHosted" : "Hostowane", 137 "settings.service.form.tabHosted" : "Hostowane",
122 "settings.service.form.tabOnPremise" : "Hostowane lokalnie â­ï¸", 138 "settings.service.form.tabOnPremise" : "Hostowane lokalnie â­ï¸",
123 "settings.service.form.team" : "Zespół", 139 "settings.service.form.team" : "Zespół",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Twoje usługi", 141 "settings.service.form.yourServices" : "Twoje usługi",
125 "settings.services.deletedInfo" : "Usługa została usunięta", 142 "settings.services.deletedInfo" : "Usługa została usunięta",
126 "settings.services.discoverServices" : "Przeglądaj usługi", 143 "settings.services.discoverServices" : "Przeglądaj usługi",
127 "settings.services.headline" : "Twoje usługi", 144 "settings.services.headline" : "Twoje usługi",
128 "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.", 145 "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.",
129 "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna", 146 "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Wszystkie dźwięki są wyciszone",
131 "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne", 148 "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne",
132 "settings.services.updatedInfo" : "Zmiany zostały zapisane", 149 "settings.services.updatedInfo" : "Zmiany zostały zapisane",
133 "settings.user.form.accountType.company" : "Firma", 150 "settings.user.form.accountType.company" : "Firma",
134 "settings.user.form.accountType.individual" : "Prywatne", 151 "settings.user.form.accountType.individual" : "Prywatne",
135 "settings.user.form.accountType.label" : "Typ konta", 152 "settings.user.form.accountType.label" : "Typ konta",
136 "settings.user.form.accountType.non-profit" : "Non-Profit ", 153 "settings.user.form.accountType.non-profit" : "Non-profit",
137 "settings.user.form.currentPassword" : "Obecne hasło", 154 "settings.user.form.currentPassword" : "Obecne hasło",
138 "settings.user.form.email" : "Adres email", 155 "settings.user.form.email" : "Adres email",
139 "settings.user.form.firstname" : "ImiÄ™", 156 "settings.user.form.firstname" : "ImiÄ™",
140 "settings.user.form.lastname" : "Nazwisko", 157 "settings.user.form.lastname" : "Nazwisko",
141 "settings.user.form.newPassword" : "Nowe hasło", 158 "settings.user.form.newPassword" : "Nowe hasło",
142 "sidebar.addNewService" : "!!!Add new service", 159 "sidebar.addNewService" : "!!!Add new service",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki",
144 "sidebar.settings" : "Ustawienia", 161 "sidebar.settings" : "Ustawienia",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki",
146 "signup.company.label" : "Firma", 163 "signup.company.label" : "Firma",
147 "signup.email.label" : "Adres email", 164 "signup.email.label" : "Adres email",
148 "signup.emailDuplicate" : "Użytkownik z takim adresem email już istnieje", 165 "signup.emailDuplicate" : "Użytkownik z takim adresem email już istnieje",
@@ -155,7 +172,7 @@
155 "signup.link.login" : "Masz już konto, zalogować się?", 172 "signup.link.login" : "Masz już konto, zalogować się?",
156 "signup.password.label" : "Hasło", 173 "signup.password.label" : "Hasło",
157 "signup.submit.label" : "Stwórz konto", 174 "signup.submit.label" : "Stwórz konto",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Rezydenci UE: lokalne stawki VAT mogą zostać zaaplikowane",
159 "subscription.features.ads" : "Brak reklam, na zawsze!", 176 "subscription.features.ads" : "Brak reklam, na zawsze!",
160 "subscription.features.comingSoon" : "wkrótce dostępne", 177 "subscription.features.comingSoon" : "wkrótce dostępne",
161 "subscription.features.customServices" : "Prywatne usługi dla Ciebie i Twojego zespołu", 178 "subscription.features.customServices" : "Prywatne usługi dla Ciebie i Twojego zespołu",
@@ -178,11 +195,11 @@
178 "subscriptionPopup.buttonCancel" : "Anuluj", 195 "subscriptionPopup.buttonCancel" : "Anuluj",
179 "subscriptionPopup.buttonDone" : "Zrobione", 196 "subscriptionPopup.buttonDone" : "Zrobione",
180 "tabs.item.deleteService" : "Usuń usługę", 197 "tabs.item.deleteService" : "Usuń usługę",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Wyłącz dźwięk",
182 "tabs.item.disableNotifications" : "Wyłącz powiadomienia", 199 "tabs.item.disableNotifications" : "Wyłącz powiadomienia",
183 "tabs.item.disableService" : "Wyłącz usługę", 200 "tabs.item.disableService" : "Wyłącz usługę",
184 "tabs.item.edit" : "Edytuj", 201 "tabs.item.edit" : "Edytuj",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Włącz dźwięk ",
186 "tabs.item.enableNotification" : "WÅ‚Ä…cz powiadomienia", 203 "tabs.item.enableNotification" : "WÅ‚Ä…cz powiadomienia",
187 "tabs.item.enableService" : "Aktywuj usługę", 204 "tabs.item.enableService" : "Aktywuj usługę",
188 "tabs.item.reload" : "Przeładuj", 205 "tabs.item.reload" : "Przeładuj",
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index 5a20f387a..d32a09e48 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -5,7 +5,7 @@
5 "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5", 5 "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5",
6 "import.skip.label" : "Quero adicionar serviços manualmente", 6 "import.skip.label" : "Quero adicionar serviços manualmente",
7 "import.submit.label" : "Importar serviços", 7 "import.submit.label" : "Importar serviços",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "O que há de novo?",
9 "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações", 9 "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações",
10 "infobar.buttonReloadServices" : "Recarregar serviços", 10 "infobar.buttonReloadServices" : "Recarregar serviços",
11 "infobar.requiredRequestsFailed" : "Não foi possível carregar serviços e informações do usuário", 11 "infobar.requiredRequestsFailed" : "Não foi possível carregar serviços e informações do usuário",
@@ -22,7 +22,7 @@
22 "login.link.password" : "Trocar a senha", 22 "login.link.password" : "Trocar a senha",
23 "login.link.signup" : "Criar uma conta gratuita", 23 "login.link.signup" : "Criar uma conta gratuita",
24 "login.password.label" : "Senha", 24 "login.password.label" : "Senha",
25 "login.serverLogout" : "Sua sessão expirou, faça o login novamente.\",", 25 "login.serverLogout" : "Sua sessão expirou, faça o login novamente.",
26 "login.submit.label" : "Login", 26 "login.submit.label" : "Login",
27 "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", 27 "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.",
28 "password.email.label" : "Endereço de email", 28 "password.email.label" : "Endereço de email",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Eu não quero apoiar o desenvolvimento do Franz.", 36 "pricing.link.skipPayment" : "Eu não quero apoiar o desenvolvimento do Franz.",
37 "pricing.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", 37 "pricing.submit.label" : "Eu quero apoiar o desenvolvimento do Franz",
38 "pricing.support.label" : "Selecione seu plano de apoio", 38 "pricing.support.label" : "Selecione seu plano de apoio",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Recarregar {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Tentando restabelecer {name} automaticamente em {seconds} segundos",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Ah não!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} causou um erro.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Habilitar {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} está desabilitado",
45 "services.getStarted" : "Começar", 45 "services.getStarted" : "Começar",
46 "services.welcome" : "Bem-vindo ao Franz", 46 "services.welcome" : "Bem-vindo ao Franz",
47 "settings.account.account.editButton" : "Editar conta", 47 "settings.account.account.editButton" : "Editar conta",
48 "settings.account.accountType.basic" : "Conta Básica", 48 "settings.account.accountType.basic" : "Conta Básica",
49 "settings.account.accountType.premium" : "Conta Apoiador Premium", 49 "settings.account.accountType.premium" : "Conta Apoiador Premium",
50 "settings.account.buttonSave" : "Atualizar perfil", 50 "settings.account.buttonSave" : "Atualizar perfil",
51 "settings.account.deleteAccount" : "Excluir conta",
52 "settings.account.deleteEmailSent" : "Você recebeu um e-mail com um link para confirmar a exclusão da sua conta. Sua conta e os dados não podem ser restaurados!",
53 "settings.account.deleteInfo" : "Se você não precisar de sua conta Franz por mais tempo, você pode excluir sua conta e todos os dados relacionados aqui.",
51 "settings.account.headline" : "Conta", 54 "settings.account.headline" : "Conta",
52 "settings.account.headlineAccount" : "Informações de conta", 55 "settings.account.headlineAccount" : "Informações de conta",
56 "settings.account.headlineDangerZone" : "Zona de Perigo",
53 "settings.account.headlineInvoices" : "Recibos", 57 "settings.account.headlineInvoices" : "Recibos",
54 "settings.account.headlinePassword" : "Mudar senha", 58 "settings.account.headlinePassword" : "Mudar senha",
55 "settings.account.headlineProfile" : "Atualizar perfil", 59 "settings.account.headlineProfile" : "Atualizar perfil",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "Suas mudanças foram salvas", 68 "settings.account.successInfo" : "Suas mudanças foram salvas",
65 "settings.account.tryReloadUserInfoRequest" : "Tente novamente", 69 "settings.account.tryReloadUserInfoRequest" : "Tente novamente",
66 "settings.account.userInfoRequestFailed" : "Não foi possível carregar as informações do usuário", 70 "settings.account.userInfoRequestFailed" : "Não foi possível carregar as informações do usuário",
71 "settings.app.buttonClearAllCache" : "Limpar cache",
67 "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização", 72 "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização",
68 "settings.app.buttonSearchForUpdate" : "Verificar por atualizações", 73 "settings.app.buttonSearchForUpdate" : "Verificar por atualizações",
74 "settings.app.cacheInfo" : "O cache do franz está usando atualmente {size} do espaço em disco.",
69 "settings.app.currentVersion" : "Versão atual:", 75 "settings.app.currentVersion" : "Versão atual:",
70 "settings.app.form.autoLaunchInBackground" : "Abrir no fundo", 76 "settings.app.form.autoLaunchInBackground" : "Abrir no fundo",
71 "settings.app.form.autoLaunchOnStart" : "Abrir o Franz iniciar o sistema", 77 "settings.app.form.autoLaunchOnStart" : "Abrir o Franz ao iniciar o sistema",
72 "settings.app.form.beta" : "Incluir versões beta", 78 "settings.app.form.beta" : "Incluir versões beta",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Habilitar correção ortográfica",
74 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema", 80 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema",
75 "settings.app.form.language" : "Idioma", 81 "settings.app.form.language" : "Idioma",
76 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema", 82 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema",
77 "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela", 83 "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Mostrar abas de serviços desabilitados",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar o ícone da mensagem não lida quando as notificações estão desativadas",
79 "settings.app.headline" : "Ajustes", 86 "settings.app.headline" : "Ajustes",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Avançado",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Aparência",
82 "settings.app.headlineGeneral" : "Geral", 89 "settings.app.headlineGeneral" : "Geral",
83 "settings.app.headlineLanguage" : "Idioma", 90 "settings.app.headlineLanguage" : "Idioma",
84 "settings.app.headlineUpdates" : "Atualizações", 91 "settings.app.headlineUpdates" : "Atualizações",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Reinicialização necessária",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para a sua língua.",
87 "settings.app.updateStatusAvailable" : "Atualização disponível, fazendo download...", 95 "settings.app.updateStatusAvailable" : "Atualização disponível, fazendo download...",
88 "settings.app.updateStatusSearching" : "Em busca de atualização", 96 "settings.app.updateStatusSearching" : "Em busca de atualização",
89 "settings.app.updateStatusUpToDate" : "Você está usando a última versão do Franz", 97 "settings.app.updateStatusUpToDate" : "Você está usando a última versão do Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Todos serviços", 103 "settings.recipes.all" : "Todos serviços",
96 "settings.recipes.dev" : "Desenvolvimento ", 104 "settings.recipes.dev" : "Desenvolvimento ",
97 "settings.recipes.headline" : "Serviços disponíveis", 105 "settings.recipes.headline" : "Serviços disponíveis",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Sentiu falta de um serviço?",
99 "settings.recipes.mostPopular" : "Mais populares", 107 "settings.recipes.mostPopular" : "Mais populares",
100 "settings.recipes.nothingFound" : "Desculpe, mas nenhum serviço corresponde a sua pesquisa.", 108 "settings.recipes.nothingFound" : "Desculpe, mas nenhum serviço corresponde a sua pesquisa.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado com sucesso", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado com sucesso",
110 "settings.searchService" : "Serviço de pesquisa",
102 "settings.service.error.goBack" : "Voltar aos serviços", 111 "settings.service.error.goBack" : "Voltar aos serviços",
103 "settings.service.error.headline" : "Erro", 112 "settings.service.error.headline" : "Erro",
104 "settings.service.error.message" : "Não foi possível carregar a receita de serviço.", 113 "settings.service.error.message" : "Não foi possível carregar a receita de serviço.",
@@ -110,25 +119,33 @@
110 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor personalizado {name}.", 119 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor personalizado {name}.",
111 "settings.service.form.deleteButton" : "Apagar serviço", 120 "settings.service.form.deleteButton" : "Apagar serviço",
112 "settings.service.form.editServiceHeadline" : "Editar {name}", 121 "settings.service.form.editServiceHeadline" : "Editar {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Habilitar áudio",
114 "settings.service.form.enableNotification" : "Ativar notificações", 123 "settings.service.form.enableBadge" : "Mostrar aviso de mensagens não lidas",
115 "settings.service.form.enableService" : "Ativar serviço", 124 "settings.service.form.enableNotification" : "Habilitar notificações",
125 "settings.service.form.enableService" : "Habilitar serviço",
126 "settings.service.form.headlineBadges" : "Mensagens não lidas",
127 "settings.service.form.headlineGeneral" : "Geral",
128 "settings.service.form.headlineNotifications" : "Notificações",
129 "settings.service.form.icon" : "Ãcone personalizado",
130 "settings.service.form.iconDelete" : "Excluir",
131 "settings.service.form.iconUpload" : "Solte sua imagem, ou clique aqui",
116 "settings.service.form.indirectMessageInfo" : "Você será notificado por todas as mensagens em um canal, não apenas @usuário, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Você será notificado por todas as mensagens em um canal, não apenas @usuário, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens", 133 "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Quando desabilitado, todas as notificações sonoras e áudios são nulas",
119 "settings.service.form.name" : "Nome", 135 "settings.service.form.name" : "Nome",
120 "settings.service.form.saveButton" : "Salvar serviço", 136 "settings.service.form.saveButton" : "Salvar serviço",
121 "settings.service.form.tabHosted" : "Hospedado", 137 "settings.service.form.tabHosted" : "Hospedado",
122 "settings.service.form.tabOnPremise" : "Auto-hospedado â­ï¸", 138 "settings.service.form.tabOnPremise" : "Auto-hospedado â­ï¸",
123 "settings.service.form.team" : "Equipe", 139 "settings.service.form.team" : "Equipe",
140 "settings.service.form.useHostedService" : "Use o serviço {nome} hospedado.",
124 "settings.service.form.yourServices" : "Seus serviços", 141 "settings.service.form.yourServices" : "Seus serviços",
125 "settings.services.deletedInfo" : "Serviço apagado", 142 "settings.services.deletedInfo" : "Serviço apagado",
126 "settings.services.discoverServices" : "Descobrir serviços", 143 "settings.services.discoverServices" : "Descobrir serviços",
127 "settings.services.headline" : "Seus serviços", 144 "settings.services.headline" : "Seus serviços",
128 "settings.services.noServicesAdded" : "Você ainda não adicionou nenhum serviço.", 145 "settings.services.noServicesAdded" : "Você ainda não adicionou nenhum serviço.",
129 "settings.services.tooltip.isDisabled" : "Serviço desativado", 146 "settings.services.tooltip.isDisabled" : "Serviço desabilitado",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Sem som",
131 "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", 148 "settings.services.tooltip.notificationsDisabled" : "Notificações desabilitadas",
132 "settings.services.updatedInfo" : "Suas mudanças foram salvas", 149 "settings.services.updatedInfo" : "Suas mudanças foram salvas",
133 "settings.user.form.accountType.company" : "Empresa", 150 "settings.user.form.accountType.company" : "Empresa",
134 "settings.user.form.accountType.individual" : "Individual", 151 "settings.user.form.accountType.individual" : "Individual",
@@ -140,9 +157,9 @@
140 "settings.user.form.lastname" : "Sobrenome", 157 "settings.user.form.lastname" : "Sobrenome",
141 "settings.user.form.newPassword" : "Nova senha", 158 "settings.user.form.newPassword" : "Nova senha",
142 "sidebar.addNewService" : "Adicionar novo serviço", 159 "sidebar.addNewService" : "Adicionar novo serviço",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Desativar notificações e áudio",
144 "sidebar.settings" : "Ajustes", 161 "sidebar.settings" : "Ajustes",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Ativar notificações e áudio",
146 "signup.company.label" : "Empresa", 163 "signup.company.label" : "Empresa",
147 "signup.email.label" : "Endereço de email", 164 "signup.email.label" : "Endereço de email",
148 "signup.emailDuplicate" : "Um usuário com esta conta já existe", 165 "signup.emailDuplicate" : "Um usuário com esta conta já existe",
@@ -155,7 +172,7 @@
155 "signup.link.login" : "Já tem uma conta. Fazer login?", 172 "signup.link.login" : "Já tem uma conta. Fazer login?",
156 "signup.password.label" : "Senha", 173 "signup.password.label" : "Senha",
157 "signup.submit.label" : "Criar conta", 174 "signup.submit.label" : "Criar conta",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Residentes na União Européia: taxas locais serão aplicadas",
159 "subscription.features.ads" : "Sem anúncios, sempre!", 176 "subscription.features.ads" : "Sem anúncios, sempre!",
160 "subscription.features.comingSoon" : "em breve", 177 "subscription.features.comingSoon" : "em breve",
161 "subscription.features.customServices" : "Serviços privados para você e sua equipe", 178 "subscription.features.customServices" : "Serviços privados para você e sua equipe",
@@ -178,13 +195,13 @@
178 "subscriptionPopup.buttonCancel" : "Cancelar", 195 "subscriptionPopup.buttonCancel" : "Cancelar",
179 "subscriptionPopup.buttonDone" : "Feito", 196 "subscriptionPopup.buttonDone" : "Feito",
180 "tabs.item.deleteService" : "Apagar serviço", 197 "tabs.item.deleteService" : "Apagar serviço",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Desabilitar áudio",
182 "tabs.item.disableNotifications" : "Desativar notificações", 199 "tabs.item.disableNotifications" : "Desabilitar notificações",
183 "tabs.item.disableService" : "Desativar serviço", 200 "tabs.item.disableService" : "Desabilitar serviço",
184 "tabs.item.edit" : "Editar", 201 "tabs.item.edit" : "Editar",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Habilitar áudio",
186 "tabs.item.enableNotification" : "Ativar notificações", 203 "tabs.item.enableNotification" : "Habilitar notificações",
187 "tabs.item.enableService" : "Ativar serviço", 204 "tabs.item.enableService" : "Habilitar o serviço",
188 "tabs.item.reload" : "Recarregar", 205 "tabs.item.reload" : "Recarregar",
189 "welcome.loginButton" : "Fazer login na sua conta", 206 "welcome.loginButton" : "Fazer login na sua conta",
190 "welcome.signupButton" : "Criar uma conta grátis", 207 "welcome.signupButton" : "Criar uma conta grátis",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index dc776c1ad..b8aec56a1 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -3,9 +3,9 @@
3 "global.notConnectedToTheInternet" : "Não estás conectado à internet.", 3 "global.notConnectedToTheInternet" : "Não estás conectado à internet.",
4 "import.headline" : "Importar os teus 4 serviços Franz", 4 "import.headline" : "Importar os teus 4 serviços Franz",
5 "import.notSupportedHeadline" : "Os serviços não são suportados no Franz 5", 5 "import.notSupportedHeadline" : "Os serviços não são suportados no Franz 5",
6 "import.skip.label" : "Quero adicionar os serviços manualmente", 6 "import.skip.label" : "Quero adicionar serviços manualmente",
7 "import.submit.label" : "Importar serviços", 7 "import.submit.label" : "Importar serviços",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Novidades?",
9 "infobar.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", 9 "infobar.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações",
10 "infobar.buttonReloadServices" : "Recarregar serviços", 10 "infobar.buttonReloadServices" : "Recarregar serviços",
11 "infobar.requiredRequestsFailed" : "Não foi possivel carregar os serviços e informações do utilizador", 11 "infobar.requiredRequestsFailed" : "Não foi possivel carregar os serviços e informações do utilizador",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Não quero ajudar no desenvolvimento do Franz", 36 "pricing.link.skipPayment" : "Não quero ajudar no desenvolvimento do Franz",
37 "pricing.submit.label" : "Quero ajudar o desenvolvimento do Franz", 37 "pricing.submit.label" : "Quero ajudar o desenvolvimento do Franz",
38 "pricing.support.label" : "Seleciona o teu plano", 38 "pricing.support.label" : "Seleciona o teu plano",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Actualizar",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "A tentar restaurar automaticamente {name} em {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Oh não!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} causou um erro.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Habilitar {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} está desactivado",
45 "services.getStarted" : "Vamos começar", 45 "services.getStarted" : "Vamos começar",
46 "services.welcome" : "Bem-vindo ao Franz", 46 "services.welcome" : "Bem-vindo ao Franz",
47 "settings.account.account.editButton" : "Editar conta", 47 "settings.account.account.editButton" : "Editar conta",
48 "settings.account.accountType.basic" : "Conta básica", 48 "settings.account.accountType.basic" : "Conta básica",
49 "settings.account.accountType.premium" : "Conta Premium, a ajudar o Franz", 49 "settings.account.accountType.premium" : "Conta Premium, a ajudar o Franz",
50 "settings.account.buttonSave" : "Atualizar o perfil", 50 "settings.account.buttonSave" : "Atualizar o perfil",
51 "settings.account.deleteAccount" : "Apagar conta",
52 "settings.account.deleteEmailSent" : "Recebeu um email com um endereço para confirmar a remoção da sua conta. A sua conta e dados não são possiveis de restaurar!",
53 "settings.account.deleteInfo" : "Se não precisa mais da sua conta Franz, pode apagar a conta e os seus dados aqui.",
51 "settings.account.headline" : "Conta", 54 "settings.account.headline" : "Conta",
52 "settings.account.headlineAccount" : "Informação da conta", 55 "settings.account.headlineAccount" : "Informação da conta",
56 "settings.account.headlineDangerZone" : "Zona de perigo",
53 "settings.account.headlineInvoices" : "Faturas", 57 "settings.account.headlineInvoices" : "Faturas",
54 "settings.account.headlinePassword" : "Mudar password", 58 "settings.account.headlinePassword" : "Mudar password",
55 "settings.account.headlineProfile" : "Actualizar o perfil", 59 "settings.account.headlineProfile" : "Actualizar o perfil",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "As tuas mudanças foram feitas com sucesso", 68 "settings.account.successInfo" : "As tuas mudanças foram feitas com sucesso",
65 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", 69 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente",
66 "settings.account.userInfoRequestFailed" : "Não é possível carregar a informação do utilizador.", 70 "settings.account.userInfoRequestFailed" : "Não é possível carregar a informação do utilizador.",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", 72 "settings.app.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações",
68 "settings.app.buttonSearchForUpdate" : "Procurar por atualizações", 73 "settings.app.buttonSearchForUpdate" : "Procurar por atualizações",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Versão atual", 75 "settings.app.currentVersion" : "Versão atual",
70 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", 76 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano",
71 "settings.app.form.autoLaunchOnStart" : "Inicar o Franz quando inciar o computador", 77 "settings.app.form.autoLaunchOnStart" : "Inicar o Franz quando inciar o computador",
72 "settings.app.form.beta" : "Incluir versões instáveis (beta)", 78 "settings.app.form.beta" : "Incluir versões instáveis (beta)",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica",
74 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema", 80 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema",
75 "settings.app.form.language" : "Idioma:", 81 "settings.app.form.language" : "Idioma:",
76 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema", 82 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema",
77 "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", 83 "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desactivados",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar icon com o número de mensagens não lidas quando as notificações estão desactivadas",
79 "settings.app.headline" : "Definições", 86 "settings.app.headline" : "Definições",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Avançado",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Aparência",
82 "settings.app.headlineGeneral" : "Geral", 89 "settings.app.headlineGeneral" : "Geral",
83 "settings.app.headlineLanguage" : "Idioma:", 90 "settings.app.headlineLanguage" : "Idioma:",
84 "settings.app.headlineUpdates" : "Atualizações", 91 "settings.app.headlineUpdates" : "Atualizações",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Alterações requerem reiniciar",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Ajude a traduzir a Franz para a sua língua. ",
87 "settings.app.updateStatusAvailable" : "Atualização disponivel, a descarregar...", 95 "settings.app.updateStatusAvailable" : "Atualização disponivel, a descarregar...",
88 "settings.app.updateStatusSearching" : "Está a procurar atualizações", 96 "settings.app.updateStatusSearching" : "Está a procurar atualizações",
89 "settings.app.updateStatusUpToDate" : "Estás a usar a última versão do Franz", 97 "settings.app.updateStatusUpToDate" : "Estás a usar a última versão do Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Todos os serviços", 103 "settings.recipes.all" : "Todos os serviços",
96 "settings.recipes.dev" : "Desenvolvimento", 104 "settings.recipes.dev" : "Desenvolvimento",
97 "settings.recipes.headline" : "Serviços disponíveis", 105 "settings.recipes.headline" : "Serviços disponíveis",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "A faltar um serviço?",
99 "settings.recipes.mostPopular" : "Os mais populares", 107 "settings.recipes.mostPopular" : "Os mais populares",
100 "settings.recipes.nothingFound" : "Desculpa, mas não existe nenhum serviço com este termo.", 108 "settings.recipes.nothingFound" : "Desculpa, mas não existe nenhum serviço com este termo.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "Voltar aos serviços", 111 "settings.service.error.goBack" : "Voltar aos serviços",
103 "settings.service.error.headline" : "Erro", 112 "settings.service.error.headline" : "Erro",
104 "settings.service.error.message" : "Não foi possível carregar a receita do serviço.", 113 "settings.service.error.message" : "Não foi possível carregar a receita do serviço.",
@@ -110,24 +119,32 @@
110 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor {nome}.", 119 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor {nome}.",
111 "settings.service.form.deleteButton" : "Apagar serviço", 120 "settings.service.form.deleteButton" : "Apagar serviço",
112 "settings.service.form.editServiceHeadline" : "Editar {name}", 121 "settings.service.form.editServiceHeadline" : "Editar {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Activar áudio",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Ativar notificações", 124 "settings.service.form.enableNotification" : "Ativar notificações",
115 "settings.service.form.enableService" : "Ativar serviço", 125 "settings.service.form.enableService" : "Ativar serviço",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Geral",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Serás notificado sobre todas as novas mensagens de um canal, não só @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Serás notificado sobre todas as novas mensagens de um canal, não só @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", 133 "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Quando desactivado, todo o audio das notificações estará em silêncio",
119 "settings.service.form.name" : "Nome", 135 "settings.service.form.name" : "Nome",
120 "settings.service.form.saveButton" : "Guardar serviço", 136 "settings.service.form.saveButton" : "Guardar serviço",
121 "settings.service.form.tabHosted" : "Hospedado", 137 "settings.service.form.tabHosted" : "Hospedado",
122 "settings.service.form.tabOnPremise" : "Hospedado por si próprio â­ï¸", 138 "settings.service.form.tabOnPremise" : "Hospedado por si próprio â­ï¸",
123 "settings.service.form.team" : "Equipa", 139 "settings.service.form.team" : "Equipa",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Os teus serviços", 141 "settings.service.form.yourServices" : "Os teus serviços",
125 "settings.services.deletedInfo" : "O serviço foi apagado", 142 "settings.services.deletedInfo" : "O serviço foi apagado",
126 "settings.services.discoverServices" : "Descobrir serviços", 143 "settings.services.discoverServices" : "Descobrir serviços",
127 "settings.services.headline" : "Os teus serviços", 144 "settings.services.headline" : "Os teus serviços",
128 "settings.services.noServicesAdded" : "Ainda não adicionaste nenhum serviço.", 145 "settings.services.noServicesAdded" : "Ainda não adicionaste nenhum serviço.",
129 "settings.services.tooltip.isDisabled" : "O serviço está desativado", 146 "settings.services.tooltip.isDisabled" : "O serviço está desativado",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados",
131 "settings.services.tooltip.notificationsDisabled" : "As notificações estão desabilitadas", 148 "settings.services.tooltip.notificationsDisabled" : "As notificações estão desabilitadas",
132 "settings.services.updatedInfo" : "As alterações foram guardadas", 149 "settings.services.updatedInfo" : "As alterações foram guardadas",
133 "settings.user.form.accountType.company" : "Empresa", 150 "settings.user.form.accountType.company" : "Empresa",
@@ -136,26 +153,26 @@
136 "settings.user.form.accountType.non-profit" : "Sem fins lucrativos", 153 "settings.user.form.accountType.non-profit" : "Sem fins lucrativos",
137 "settings.user.form.currentPassword" : "Password atual", 154 "settings.user.form.currentPassword" : "Password atual",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Primeiro Nome",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Último Nome",
141 "settings.user.form.newPassword" : "Nova password", 158 "settings.user.form.newPassword" : "Nova password",
142 "sidebar.addNewService" : "Adicionar um novo serviço", 159 "sidebar.addNewService" : "Adicionar um novo serviço",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Desactivar notificações e audio",
144 "sidebar.settings" : "Definições", 161 "sidebar.settings" : "Definições",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Activar notificações e audio",
146 "signup.company.label" : "Empresa", 163 "signup.company.label" : "Empresa",
147 "signup.email.label" : "Endereço de e-mail", 164 "signup.email.label" : "Endereço de e-mail",
148 "signup.emailDuplicate" : "Uma conta já tem esse email associado", 165 "signup.emailDuplicate" : "Uma conta já tem esse email associado",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Primeiro Nome",
150 "signup.headline" : "Iniciar Sessão", 167 "signup.headline" : "Iniciar Sessão",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Último Nome",
152 "signup.legal.info" : "Ao criar uma conta Franz, aceitas", 169 "signup.legal.info" : "Ao criar uma conta Franz, aceitas",
153 "signup.legal.privacy" : "Declaração de privacidade", 170 "signup.legal.privacy" : "Declaração de privacidade",
154 "signup.legal.terms" : "Termos de Serviço", 171 "signup.legal.terms" : "Termos de Serviço",
155 "signup.link.login" : "Já tens uma conta?", 172 "signup.link.login" : "Já tens uma conta?",
156 "signup.password.label" : "Password", 173 "signup.password.label" : "Password",
157 "signup.submit.label" : "Criar uma Conta", 174 "signup.submit.label" : "Criar uma Conta",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas",
159 "subscription.features.ads" : "Sem anúncios, para sempre!", 176 "subscription.features.ads" : "Sem anúncios, para sempre!",
160 "subscription.features.comingSoon" : "Em breve!", 177 "subscription.features.comingSoon" : "Em breve!",
161 "subscription.features.customServices" : "Serviços privados para ti e para os teus amigos\/colegas", 178 "subscription.features.customServices" : "Serviços privados para ti e para os teus amigos\/colegas",
@@ -178,11 +195,11 @@
178 "subscriptionPopup.buttonCancel" : "Cancelar", 195 "subscriptionPopup.buttonCancel" : "Cancelar",
179 "subscriptionPopup.buttonDone" : "Concluído", 196 "subscriptionPopup.buttonDone" : "Concluído",
180 "tabs.item.deleteService" : "Apagar serviço", 197 "tabs.item.deleteService" : "Apagar serviço",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Desactivar audio",
182 "tabs.item.disableNotifications" : "Desativar notificações", 199 "tabs.item.disableNotifications" : "Desativar notificações",
183 "tabs.item.disableService" : "Desativar serviço", 200 "tabs.item.disableService" : "Desativar serviço",
184 "tabs.item.edit" : "Editar", 201 "tabs.item.edit" : "Editar",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Activar áudio",
186 "tabs.item.enableNotification" : "Ativar notificações", 203 "tabs.item.enableNotification" : "Ativar notificações",
187 "tabs.item.enableService" : "Ativar serviço", 204 "tabs.item.enableService" : "Ativar serviço",
188 "tabs.item.reload" : "Recarregar", 205 "tabs.item.reload" : "Recarregar",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 62a8a0f84..8b1e75871 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -1,55 +1,59 @@
1{ 1{
2 "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº ÑервиÑам Franz", 2 "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº ÑервиÑам Franz",
3 "global.notConnectedToTheInternet" : "Ðет Интернет-ÑоединениÑ", 3 "global.notConnectedToTheInternet" : "Ðет Интернет-ÑоединениÑ",
4 "import.headline" : "Импортировать ÑервиÑÑ‹ Franz 4", 4 "import.headline" : "Импортировать ÑервиÑÑ‹ из Franz 4",
5 "import.notSupportedHeadline" : "СервиÑÑ‹ еще не Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð°Ð½Ñ Ð² Franz 5", 5 "import.notSupportedHeadline" : "СервиÑÑ‹ ещё не поддерживаютÑÑ Ð² Franz 5",
6 "import.skip.label" : "Я хочу добавить ÑервиÑÑ‹ вручную", 6 "import.skip.label" : "Я хочу добавить ÑÐµÑ€Ð²Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ",
7 "import.submit.label" : "Импортировать ÑервиÑÑ‹", 7 "import.submit.label" : "Импортировать ÑервиÑÑ‹",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Что новенького?",
9 "infobar.buttonInstallUpdate" : "ПерезапуÑтить и обновить", 9 "infobar.buttonInstallUpdate" : "ПерезапуÑтить и обновить",
10 "infobar.buttonReloadServices" : "Перезагрузить ÑервиÑÑ‹", 10 "infobar.buttonReloadServices" : "Перезагрузить ÑервиÑÑ‹",
11 "infobar.requiredRequestsFailed" : "Ðевозможно загрузить ÑервиÑÑ‹ и информацию пользователÑ", 11 "infobar.requiredRequestsFailed" : "Ðевозможно загрузить ÑервиÑÑ‹ и информацию пользователÑ",
12 "infobar.servicesUpdated" : "Ваши ÑервиÑÑ‹ были обновлены.", 12 "infobar.servicesUpdated" : "Ваши ÑервиÑÑ‹ были обновлены.",
13 "infobar.updateAvailable" : "ДоÑтупно обновление Franz.", 13 "infobar.updateAvailable" : "ДоÑтупно обновление Franz.",
14 "invite.email.label" : "Email адреÑ", 14 "invite.email.label" : "Email адреÑ",
15 "invite.headline.friends" : "ПриглаÑите 3Ñ… друзей или коллег", 15 "invite.headline.friends" : "ПриглаÑите 3-Ñ… друзей или коллег",
16 "invite.name.label" : "ИмÑ", 16 "invite.name.label" : "ИмÑ",
17 "invite.skip.label" : "Я Ñделаю Ñто позже", 17 "invite.skip.label" : "Я Ñделаю Ñто позже",
18 "invite.submit.label" : "Ð’Ñ‹Ñлать приглашениÑ", 18 "invite.submit.label" : "Ð’Ñ‹Ñлать приглашениÑ",
19 "login.email.label" : "Email адреÑ", 19 "login.email.label" : "Email",
20 "login.headline" : "РегиÑтрациÑ", 20 "login.headline" : "ÐÑод",
21 "login.invalidCredentials" : "Ðеправильный email или пароль", 21 "login.invalidCredentials" : "Ðеправильный email или пароль",
22 "login.link.password" : "ВоÑÑтановить пароль", 22 "login.link.password" : "ВоÑÑтановить пароль",
23 "login.link.signup" : "Создать беÑплатный аккаунт", 23 "login.link.signup" : "Создать беÑплатный аккаунт",
24 "login.password.label" : "Пароль", 24 "login.password.label" : "Пароль",
25 "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", 25 "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.",
26 "login.submit.label" : "РегиÑтрациÑ", 26 "login.submit.label" : "ÐÑод",
27 "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", 27 "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.",
28 "password.email.label" : "Email адреÑ", 28 "password.email.label" : "Email адреÑ",
29 "password.headline" : "ВоÑÑтановление паролÑ", 29 "password.headline" : "ВоÑÑтановление паролÑ",
30 "password.link.login" : "Вход", 30 "password.link.login" : "Вход",
31 "password.link.signup" : "Создать аккаунт", 31 "password.link.signup" : "Создать аккаунт",
32 "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email", 32 "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email",
33 "password.submit.label" : "ОтпÑавить", 33 "password.submit.label" : "ÐоÑÑтановить",
34 "password.successInfo" : "Проверьте Ваш email", 34 "password.successInfo" : "Проверьте Ваш email",
35 "pricing.headline" : "Поддержать Franz", 35 "pricing.headline" : "Поддержать Franz",
36 "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", 36 "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.",
37 "pricing.submit.label" : "Я хочу поддержать разработку Franz", 37 "pricing.submit.label" : "Я хочу поддержать разработку Franz",
38 "pricing.support.label" : "Выберите план поддержки", 38 "pricing.support.label" : "Выберите план поддержки",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Перезагрузить {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "ПытаюÑÑŒ автоматичеÑки воÑÑтановить {name} в течение {seconds} Ñекунд",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "О, нет!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} вызвало ошибку.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Включить {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} выключено",
45 "services.getStarted" : "Ðачать работу", 45 "services.getStarted" : "Ðачать работу",
46 "services.welcome" : "Добро пожаловать во Franz", 46 "services.welcome" : "Добро пожаловать во Franz",
47 "settings.account.account.editButton" : "Редактировать аккаунт", 47 "settings.account.account.editButton" : "Редактировать аккаунт",
48 "settings.account.accountType.basic" : "Базовый аккаунт", 48 "settings.account.accountType.basic" : "Базовый аккаунт",
49 "settings.account.accountType.premium" : "Премиум аккаунт", 49 "settings.account.accountType.premium" : "Премиум аккаунт",
50 "settings.account.buttonSave" : "Сохранить изменениÑ", 50 "settings.account.buttonSave" : "Обновить профиль",
51 "settings.account.deleteAccount" : "Удалить аккаунт",
52 "settings.account.deleteEmailSent" : "Вам выÑлано пиÑьмо Ñ ÑÑылкой Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°. ПоÑле Ñтого ваш аккаунт и данные не Ñмогут быть воÑÑтановлены!",
53 "settings.account.deleteInfo" : "ЕÑли вам больше не нужна ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в Franz, вы можете удалить аккаунт и вÑÑŽ ÑвÑзанную Ñ Ð½ÐµÐ¹ информацию.",
51 "settings.account.headline" : "Ðккаунт", 54 "settings.account.headline" : "Ðккаунт",
52 "settings.account.headlineAccount" : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°", 55 "settings.account.headlineAccount" : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°",
56 "settings.account.headlineDangerZone" : "ОпаÑÐ½Ð°Ñ Ð—Ð¾Ð½Ð°",
53 "settings.account.headlineInvoices" : "Счета", 57 "settings.account.headlineInvoices" : "Счета",
54 "settings.account.headlinePassword" : "Сменить пароль", 58 "settings.account.headlinePassword" : "Сменить пароль",
55 "settings.account.headlineProfile" : "Обновить профиль", 59 "settings.account.headlineProfile" : "Обновить профиль",
@@ -60,31 +64,35 @@
60 "settings.account.mining.active" : "Ð’Ñ‹ выполнÑете {hashes} вычиÑлений в Ñекунду.", 64 "settings.account.mining.active" : "Ð’Ñ‹ выполнÑете {hashes} вычиÑлений в Ñекунду.",
61 "settings.account.mining.cancel" : "Отменить майнинг", 65 "settings.account.mining.cancel" : "Отменить майнинг",
62 "settings.account.mining.moreInformation" : "Больше информации", 66 "settings.account.mining.moreInformation" : "Больше информации",
63 "settings.account.mining.thankyou" : "СпаÑибо за поддержку Franz Вашими процеÑÑорными мощноÑÑ‚Ñми.", 67 "settings.account.mining.thankyou" : "Благодарим Ð²Ð°Ñ Ð·Ð° поддержку Franz вашей вычиÑлительной мощноÑтью.",
64 "settings.account.successInfo" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены", 68 "settings.account.successInfo" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены",
65 "settings.account.tryReloadUserInfoRequest" : "Попробовать Ñнова", 69 "settings.account.tryReloadUserInfoRequest" : "Попробовать Ñнова",
66 "settings.account.userInfoRequestFailed" : "Ðевозможно загрузить информацию пользователÑ", 70 "settings.account.userInfoRequestFailed" : "Ðевозможно загрузить информацию пользователÑ",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "ПерезапуÑтить и обновить", 72 "settings.app.buttonInstallUpdate" : "ПерезапуÑтить и обновить",
68 "settings.app.buttonSearchForUpdate" : "Проверить обновлениÑ", 73 "settings.app.buttonSearchForUpdate" : "Проверить обновлениÑ",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:", 75 "settings.app.currentVersion" : "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:",
70 "settings.app.form.autoLaunchInBackground" : "Открывать в фоне", 76 "settings.app.form.autoLaunchInBackground" : "Открывать в фоне",
71 "settings.app.form.autoLaunchOnStart" : "ЗапуÑкать Franz при Ñтарте", 77 "settings.app.form.autoLaunchOnStart" : "ЗапуÑкать Franz при Ñтарте",
72 "settings.app.form.beta" : "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", 78 "settings.app.form.beta" : "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Включить проверку правопиÑаниÑ",
74 "settings.app.form.enableSystemTray" : "Показывать Franz в трее", 80 "settings.app.form.enableSystemTray" : "Показывать Franz в ÑиÑÑемном трее",
75 "settings.app.form.language" : "Язык", 81 "settings.app.form.language" : "Язык",
76 "settings.app.form.minimizeToSystemTray" : "Сворачивать Franz в трей", 82 "settings.app.form.minimizeToSystemTray" : "Сворачивать Franz в ÑиÑÑемный трей",
77 "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Franz в фоне при закрытии окна", 83 "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Franz в фоне при закрытии окна",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Показывать вкладки отключённых Ñлужб",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Показывать значок непрочитанного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отключённых уведомлениÑÑ…",
79 "settings.app.headline" : "ÐаÑтройки", 86 "settings.app.headline" : "ÐаÑтройки",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Дополнительно",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Внешний вид",
82 "settings.app.headlineGeneral" : "Общие", 89 "settings.app.headlineGeneral" : "Общие",
83 "settings.app.headlineLanguage" : "Язык", 90 "settings.app.headlineLanguage" : "Язык",
84 "settings.app.headlineUpdates" : "ОбновлениÑ", 91 "settings.app.headlineUpdates" : "ОбновлениÑ",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ перезагрузки приложениÑ",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
87 "settings.app.updateStatusAvailable" : "ДоÑтупно обновление, загрука...", 94 "settings.app.translationHelp" : "Помогите нам перевеÑти Franz на ваш Ñзык.",
95 "settings.app.updateStatusAvailable" : "ДоÑтупно обновление, идёт загрузка...",
88 "settings.app.updateStatusSearching" : "ПоиÑк обновлений", 96 "settings.app.updateStatusSearching" : "ПоиÑк обновлений",
89 "settings.app.updateStatusUpToDate" : "Ð’Ñ‹ иÑпользуете актуальную верÑию Franz", 97 "settings.app.updateStatusUpToDate" : "Ð’Ñ‹ иÑпользуете актуальную верÑию Franz",
90 "settings.navigation.account" : "Ðккаунт", 98 "settings.navigation.account" : "Ðккаунт",
@@ -95,39 +103,48 @@
95 "settings.recipes.all" : "Ð’Ñе ÑервиÑÑ‹", 103 "settings.recipes.all" : "Ð’Ñе ÑервиÑÑ‹",
96 "settings.recipes.dev" : "Разработка", 104 "settings.recipes.dev" : "Разработка",
97 "settings.recipes.headline" : "ДоÑтупные ÑервиÑÑ‹", 105 "settings.recipes.headline" : "ДоÑтупные ÑервиÑÑ‹",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Ðе можете найти Ñлужбу?",
99 "settings.recipes.mostPopular" : "ПопулÑрные", 107 "settings.recipes.mostPopular" : "ПопулÑрные",
100 "settings.recipes.nothingFound" : "Ðичего не найдено по Ðашему запроÑу.", 108 "settings.recipes.nothingFound" : "Ðичего не найдено по вашему запроÑу.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÑпешно добавлен", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÑпешно добавлен",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "ВернутьÑÑ Ðº ÑервиÑам", 111 "settings.service.error.goBack" : "ВернутьÑÑ Ðº ÑервиÑам",
103 "settings.service.error.headline" : "Ошибка", 112 "settings.service.error.headline" : "Ошибка",
104 "settings.service.error.message" : "Ðевозможно загрузить рецепт ÑервиÑа.", 113 "settings.service.error.message" : "Ðевозможно загрузить рецепт ÑервиÑа.",
105 "settings.service.form.addServiceHeadline" : "Добавление {name}", 114 "settings.service.form.addServiceHeadline" : "Добавление {name}",
106 "settings.service.form.availableServices" : "ДоÑтупные ÑервиÑÑ‹", 115 "settings.service.form.availableServices" : "ДоÑтупные ÑервиÑÑ‹",
107 "settings.service.form.customUrl" : "ÐÐ´Ñ€ÐµÑ Ñервера", 116 "settings.service.form.customUrl" : "ÐÐ´Ñ€ÐµÑ Ñервера",
108 "settings.service.form.customUrlPremiumInfo" : "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð½Ð¸Ñ ÑервиÑа на Ñвоем хоÑтинге, необходим аккаунт Franz Premium.", 117 "settings.service.form.customUrlPremiumInfo" : "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑервиÑа на Ñвоем хоÑтинге необходим аккаунт Franz Premium.",
109 "settings.service.form.customUrlUpgradeAccount" : "Улучшить аккаунт", 118 "settings.service.form.customUrlUpgradeAccount" : "Улучшить аккаунт",
110 "settings.service.form.customUrlValidationError" : "Ðевозможно проверить Ñервер {name}.", 119 "settings.service.form.customUrlValidationError" : "Ðевозможно проверить Ñервер {name}.",
111 "settings.service.form.deleteButton" : "Удалить ÑервиÑ", 120 "settings.service.form.deleteButton" : "Удалить ÑервиÑ",
112 "settings.service.form.editServiceHeadline" : "Редактирование {name}", 121 "settings.service.form.editServiceHeadline" : "Редактирование {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Включить звук",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Включить уведомлениÑ", 124 "settings.service.form.enableNotification" : "Включить уведомлениÑ",
115 "settings.service.form.enableService" : "Включить ÑервиÑ", 125 "settings.service.form.enableService" : "Включить ÑервиÑ",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Общие",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Ð’Ñ‹ будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñех Ñообщений, не только Ð´Ð»Ñ @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Ð’Ñ‹ будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñех Ñообщений, не только Ð´Ð»Ñ @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Показывать значок уведомлений Ð´Ð»Ñ Ð²Ñех новых Ñообщений", 133 "settings.service.form.indirectMessages" : "Показывать значок уведомлений Ð´Ð»Ñ Ð²Ñех новых Ñообщений",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Когда выключено, вÑе звуковые ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отключены",
119 "settings.service.form.name" : "Ðазвание", 135 "settings.service.form.name" : "Ðазвание",
120 "settings.service.form.saveButton" : "Сохранить ÑервиÑ", 136 "settings.service.form.saveButton" : "Сохранить",
121 "settings.service.form.tabHosted" : "Hosted", 137 "settings.service.form.tabHosted" : "Размещено",
122 "settings.service.form.tabOnPremise" : "Свой хоÑтинг â­ï¸", 138 "settings.service.form.tabOnPremise" : "Свой хоÑтинг â­ï¸",
123 "settings.service.form.team" : "Команда", 139 "settings.service.form.team" : "Команда",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Ваши ÑервиÑÑ‹", 141 "settings.service.form.yourServices" : "Ваши ÑервиÑÑ‹",
125 "settings.services.deletedInfo" : "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½", 142 "settings.services.deletedInfo" : "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½",
126 "settings.services.discoverServices" : "Ðайти ÑервиÑÑ‹", 143 "settings.services.discoverServices" : "Ðайти ÑервиÑÑ‹",
127 "settings.services.headline" : "Ваши ÑервиÑÑ‹", 144 "settings.services.headline" : "Ваши ÑервиÑÑ‹",
128 "settings.services.noServicesAdded" : "У ÐÐ°Ñ Ð¿Ð¾ÐºÐ° Ð½ÐµÑ ÑервиÑов", 145 "settings.services.noServicesAdded" : "Ð’Ñ Ð¿Ð¾ÐºÐ° не добавили Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ ÑервиÑов.",
129 "settings.services.tooltip.isDisabled" : "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½", 146 "settings.services.tooltip.isDisabled" : "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Ð’Ñе звуки отключены",
131 "settings.services.tooltip.notificationsDisabled" : "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹", 148 "settings.services.tooltip.notificationsDisabled" : "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹",
132 "settings.services.updatedInfo" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены", 149 "settings.services.updatedInfo" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены",
133 "settings.user.form.accountType.company" : "КомпаниÑ", 150 "settings.user.form.accountType.company" : "КомпаниÑ",
@@ -139,52 +156,52 @@
139 "settings.user.form.firstname" : "ИмÑ", 156 "settings.user.form.firstname" : "ИмÑ",
140 "settings.user.form.lastname" : "ФамилиÑ", 157 "settings.user.form.lastname" : "ФамилиÑ",
141 "settings.user.form.newPassword" : "Ðовый пароль", 158 "settings.user.form.newPassword" : "Ðовый пароль",
142 "sidebar.addNewService" : "!!!Add new service", 159 "sidebar.addNewService" : "Добавить новый ÑервиÑ",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Отключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук",
144 "sidebar.settings" : "ÐаÑтройки", 161 "sidebar.settings" : "ÐаÑтройки",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук",
146 "signup.company.label" : "ОрганизациÑ", 163 "signup.company.label" : "ОрганизациÑ",
147 "signup.email.label" : "Email адреÑ", 164 "signup.email.label" : "Email адреÑ",
148 "signup.emailDuplicate" : "Пользователь Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ email уже ÑущеÑтвует", 165 "signup.emailDuplicate" : "Пользователь Ñ Ñаким email уже ÑущеÑтвует",
149 "signup.firstname.label" : "ИмÑ", 166 "signup.firstname.label" : "ИмÑ",
150 "signup.headline" : "РегиÑтрациÑ", 167 "signup.headline" : "РегиÑтрациÑ",
151 "signup.lastname.label" : "ФамилиÑ", 168 "signup.lastname.label" : "ФамилиÑ",
152 "signup.legal.info" : "Ð¡Ð¾Ð·Ð´Ð°Ð²Ð°Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚ Franz, ÐÑ‹ принимаете", 169 "signup.legal.info" : "Ð¡Ð¾Ð·Ð´Ð°Ð²Ð°Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚ Franz, вы принимаете",
153 "signup.legal.privacy" : "Политика конфиденциальноÑти", 170 "signup.legal.privacy" : "Политика конфиденциальноÑти",
154 "signup.legal.terms" : "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±ÑлуживаниÑ", 171 "signup.legal.terms" : "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±ÑлуживаниÑ",
155 "signup.link.login" : "Уже еÑÑ‚ÑŒ аккаунт, войти?", 172 "signup.link.login" : "Уже еÑÑ‚ÑŒ аккаунт, войти?",
156 "signup.password.label" : "Пароль", 173 "signup.password.label" : "Пароль",
157 "signup.submit.label" : "Создать аккаунт", 174 "signup.submit.label" : "Создать аккаунт",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Резидентам ЕвроСоюза: могут применÑÑ‚ÑŒÑÑ Ð¼ÐµÑтные налоги",
159 "subscription.features.ads" : "Без рекламы, навÑегда!", 176 "subscription.features.ads" : "Без рекламы, навÑегда!",
160 "subscription.features.comingSoon" : "Ñледите за обновлениÑми", 177 "subscription.features.comingSoon" : "ÑкоÑо",
161 "subscription.features.customServices" : "ÐаÑтраиваемые ÑервиÑÑ‹ Ð´Ð»Ñ Ð’Ð°Ñ Ð¸ Вашей команды", 178 "subscription.features.customServices" : "ÐаÑтраиваемые ÑервиÑÑ‹ Ð´Ð»Ñ Ð²Ð°Ñ Ð¸ вашей команды",
162 "subscription.features.encryptedSync" : "Ð¨Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑеÑÑии", 179 "subscription.features.encryptedSync" : "Шифрование ÑеÑÑий Ñинхронизации",
163 "subscription.features.onpremise" : "Добавить облачные Ñлужбы или Ñлужбы Ñо Ñвоим хоÑтингом типа HipChat", 180 "subscription.features.onpremise" : "Добавление облачных Ñлужб или Ñлужб на Ñвоём хоÑтинге типа HipChat",
164 "subscription.features.vpn" : "Поддержка прокÑи и VPN", 181 "subscription.features.vpn" : "Поддержку прокÑи и VPN",
165 "subscription.includedFeatures" : "ОплаÑенный Franz Премиум аккаунт включает", 182 "subscription.includedFeatures" : "ПлаÑный аккаунт Franz Premium включает",
166 "subscription.mining.experimental" : "ÑкÑпериментально", 183 "subscription.mining.experimental" : "ÑкÑпериментально",
167 "subscription.mining.headline" : "Как Ñто работает?\",", 184 "subscription.mining.headline" : "Как Ñто работает?",
168 "subscription.mining.line1" : "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ \"Поддерживать Franz, предоÑтавлÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑорную мощноÑÑ‚ÑŒ\", Franz будет иÑпользовать 20-50% процеÑÑорного времени Ð´Ð»Ñ Ð¼Ð°Ð¹Ð½Ð¸Ð½Ð³Ð° криптовалюты Monero в примерном объеме 5$\/год.", 185 "subscription.mining.line1" : "Включив «Поддержку Ñ Ð²Ñ‹Ñ‡Ð¸Ñлительной мощноÑтью», Franz будет иÑпользовать около 20–50% вашего процеÑÑора, Ð´Ð»Ñ Ð¼Ð°Ð¹Ð½Ð¸Ð½Ð³Ð° криптовалюты Monero в примерном объёме $5\/год.",
169 "subscription.mining.line2" : "Мы будем регулировать иÑпользование процеÑÑора, чтобы не Ñадить батарею и не мешать Вашей работе", 186 "subscription.mining.line2" : "Мы будем регулировать иÑпользование процеÑÑора, чтобы не разрÑжать аккумулÑтор и не замедлÑÑ‚ÑŒ работу вашего компьютера.",
170 "subscription.mining.line3" : "Пока разрешен майнинг, Вам будут доÑтуны вÑе возможноÑти Franz Premium без ограничений", 187 "subscription.mining.line3" : "Пока разрешен майнинг, у Ð²Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ неограниченный доÑтуп ко вÑем функциÑм Franz Premium.",
171 "subscription.mining.moreInformation" : "Узнать больше об Ñтом плане.", 188 "subscription.mining.moreInformation" : "Узнать больше об Ñтом плане.",
172 "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты", 189 "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты",
173 "subscription.submit.label" : "Я хочу поддержать разработку Franz", 190 "subscription.submit.label" : "Я хочу поддержать разработку Franz",
174 "subscription.type.free" : "беÑплатно", 191 "subscription.type.free" : "беÑплатно",
175 "subscription.type.mining" : "Поддерживать Franz, предоÑтавлÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑорную мощноÑÑ‚ÑŒ", 192 "subscription.type.mining" : "Поддержка Franz вычиÑлительной мощноÑтью",
176 "subscription.type.month" : "меÑÑц", 193 "subscription.type.month" : "меÑÑц",
177 "subscription.type.year" : "год", 194 "subscription.type.year" : "год",
178 "subscriptionPopup.buttonCancel" : "Отмена", 195 "subscriptionPopup.buttonCancel" : "Отмена",
179 "subscriptionPopup.buttonDone" : "Готово", 196 "subscriptionPopup.buttonDone" : "Готово",
180 "tabs.item.deleteService" : "Удалить ÑервиÑ", 197 "tabs.item.deleteService" : "Удалить ÑервиÑ",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Отключить звук",
182 "tabs.item.disableNotifications" : "Отключить уведомлениÑ", 199 "tabs.item.disableNotifications" : "Отключить уведомлениÑ",
183 "tabs.item.disableService" : "Отключить ÑервиÑ", 200 "tabs.item.disableService" : "Отключить ÑервиÑ",
184 "tabs.item.edit" : "Редактировать", 201 "tabs.item.edit" : "Редактировать",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Включить аудио",
186 "tabs.item.enableNotification" : "Включить уведомлениÑ", 203 "tabs.item.enableNotification" : "Включить уведомлениÑ",
187 "tabs.item.enableService" : "Включить ÑеÑвиÑ", 204 "tabs.item.enableService" : "Включить ÑлуÐбу",
188 "tabs.item.reload" : "Перезагрузить", 205 "tabs.item.reload" : "Перезагрузить",
189 "welcome.loginButton" : "Вход", 206 "welcome.loginButton" : "Вход",
190 "welcome.signupButton" : "Создать аккаунт", 207 "welcome.signupButton" : "Создать аккаунт",
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index d8415762d..84f6e7ecc 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -3,9 +3,9 @@
3 "global.notConnectedToTheInternet" : "Nie ste pripojený k internetu", 3 "global.notConnectedToTheInternet" : "Nie ste pripojený k internetu",
4 "import.headline" : "Importovať služby z Franz 4", 4 "import.headline" : "Importovať služby z Franz 4",
5 "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", 5 "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5",
6 "import.skip.label" : "Chcem pridaÅ¥ služby manuálne", 6 "import.skip.label" : "Chcem pridaÅ¥ službu ruÄne",
7 "import.submit.label" : "Importovať služby", 7 "import.submit.label" : "Importovať služby",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Čo je nové:",
9 "infobar.buttonInstallUpdate" : "Reštartovať a inštalovať aktualizáciu", 9 "infobar.buttonInstallUpdate" : "Reštartovať a inštalovať aktualizáciu",
10 "infobar.buttonReloadServices" : "Obnoviť služby", 10 "infobar.buttonReloadServices" : "Obnoviť služby",
11 "infobar.requiredRequestsFailed" : "Nie je možné naÄítaÅ¥ služby a informácie o užívateľovi", 11 "infobar.requiredRequestsFailed" : "Nie je možné naÄítaÅ¥ služby a informácie o užívateľovi",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Nechcem podporiť vývoj aplikácie Franz.", 36 "pricing.link.skipPayment" : "Nechcem podporiť vývoj aplikácie Franz.",
37 "pricing.submit.label" : "Chcem podporiť vývoj aplikácie Franz", 37 "pricing.submit.label" : "Chcem podporiť vývoj aplikácie Franz",
38 "pricing.support.label" : "Vyberte váš plán podpory", 38 "pricing.support.label" : "Vyberte váš plán podpory",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "NaÄítaÅ¥ znovu {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Pokus o automatické obnovenie {name} za {seconds} sekúnd",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "Ale nie!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} spôsobil chybu.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Zapnúť {name}",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} je vypnutý",
45 "services.getStarted" : "ZaÄíname", 45 "services.getStarted" : "ZaÄíname",
46 "services.welcome" : "Víta vás Franz", 46 "services.welcome" : "Víta vás Franz",
47 "settings.account.account.editButton" : "UpraviÅ¥ úÄet", 47 "settings.account.account.editButton" : "UpraviÅ¥ úÄet",
48 "settings.account.accountType.basic" : "Základný úÄet", 48 "settings.account.accountType.basic" : "Základný úÄet",
49 "settings.account.accountType.premium" : "Prémiový úÄet podporovateľa", 49 "settings.account.accountType.premium" : "Prémiový úÄet podporovateľa",
50 "settings.account.buttonSave" : "Aktualizovať profil", 50 "settings.account.buttonSave" : "Aktualizovať profil",
51 "settings.account.deleteAccount" : "OdstrániÅ¥ úÄet",
52 "settings.account.deleteEmailSent" : "Na váš mail bol odoslaný email s odkazom pre potvrdenie zmazanie úÄtu. Váš úÄet a dáta potom nepôjde obnoviÅ¥!",
53 "settings.account.deleteInfo" : "Ak už nepotrebujete váš Franz úÄet, môžete tu váš úÄet, a vÅ¡etky dáta v ňom, zmazaÅ¥.",
51 "settings.account.headline" : "ÚÄet", 54 "settings.account.headline" : "ÚÄet",
52 "settings.account.headlineAccount" : "Informácie o úÄte", 55 "settings.account.headlineAccount" : "Informácie o úÄte",
56 "settings.account.headlineDangerZone" : "NebezpeÄná zóna",
53 "settings.account.headlineInvoices" : "Faktúry", 57 "settings.account.headlineInvoices" : "Faktúry",
54 "settings.account.headlinePassword" : "Zmeniť heslo", 58 "settings.account.headlinePassword" : "Zmeniť heslo",
55 "settings.account.headlineProfile" : "Aktualizovať profil", 59 "settings.account.headlineProfile" : "Aktualizovať profil",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "Vaše zmeny boli uložené", 68 "settings.account.successInfo" : "Vaše zmeny boli uložené",
65 "settings.account.tryReloadUserInfoRequest" : "Skúsiť znova", 69 "settings.account.tryReloadUserInfoRequest" : "Skúsiť znova",
66 "settings.account.userInfoRequestFailed" : "Nebolo možné získať informácie o užívateľovi", 70 "settings.account.userInfoRequestFailed" : "Nebolo možné získať informácie o užívateľovi",
71 "settings.app.buttonClearAllCache" : "VyÄistiÅ¥ vyrovnávaciu pamäť",
67 "settings.app.buttonInstallUpdate" : "Reštart a inštalácia aktualizácií", 72 "settings.app.buttonInstallUpdate" : "Reštart a inštalácia aktualizácií",
68 "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie", 73 "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie",
74 "settings.app.cacheInfo" : "Franz momentálne používa {size} miesta na disku.",
69 "settings.app.currentVersion" : "Aktuálna verzia:", 75 "settings.app.currentVersion" : "Aktuálna verzia:",
70 "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí", 76 "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí",
71 "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte", 77 "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte",
72 "settings.app.form.beta" : "Vrátane beta verzií", 78 "settings.app.form.beta" : "Vrátane beta verzií",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Povoliť zvýraznenie preklepov",
74 "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište", 80 "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište",
75 "settings.app.form.language" : "Jazyk", 81 "settings.app.form.language" : "Jazyk",
76 "settings.app.form.minimizeToSystemTray" : "Minimalizovať Franz do systémovej lišty", 82 "settings.app.form.minimizeToSystemTray" : "Minimalizovať Franz do systémovej lišty",
77 "settings.app.form.runInBackground" : "Ponechať Franz spustený v pozadí pri zatvorení okna", 83 "settings.app.form.runInBackground" : "Ponechať Franz spustený v pozadí pri zatvorení okna",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Zobraziť záložky vypnutých služieb",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "ZobraziÅ¥ odznak pre nepreÄítané správy keÄ sú upozornenia vypnutá",
79 "settings.app.headline" : "Nastavenia", 86 "settings.app.headline" : "Nastavenia",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Rozšírené",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "Vzhľad",
82 "settings.app.headlineGeneral" : "Všeobecné", 89 "settings.app.headlineGeneral" : "Všeobecné",
83 "settings.app.headlineLanguage" : "Jazyk", 90 "settings.app.headlineLanguage" : "Jazyk",
84 "settings.app.headlineUpdates" : "Aktualizácie", 91 "settings.app.headlineUpdates" : "Aktualizácie",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Zmeny vyžadujú restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Vyrovnávacia pamäť",
94 "settings.app.translationHelp" : "Pomôžte nám preložiť Franz do svojho jazyka.",
87 "settings.app.updateStatusAvailable" : "Dostupná aktualizácia, sťahujem...", 95 "settings.app.updateStatusAvailable" : "Dostupná aktualizácia, sťahujem...",
88 "settings.app.updateStatusSearching" : "Vyhľadávam aktualizácie", 96 "settings.app.updateStatusSearching" : "Vyhľadávam aktualizácie",
89 "settings.app.updateStatusUpToDate" : "Používate najnovšiu verziu Franz", 97 "settings.app.updateStatusUpToDate" : "Používate najnovšiu verziu Franz",
@@ -95,10 +103,11 @@
95 "settings.recipes.all" : "Všetky služby", 103 "settings.recipes.all" : "Všetky služby",
96 "settings.recipes.dev" : "Vývoj", 104 "settings.recipes.dev" : "Vývoj",
97 "settings.recipes.headline" : "Dostupné služby", 105 "settings.recipes.headline" : "Dostupné služby",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Chýbajúce služba?",
99 "settings.recipes.mostPopular" : "Najpopulárnejšie", 107 "settings.recipes.mostPopular" : "Najpopulárnejšie",
100 "settings.recipes.nothingFound" : "Je nám ľúto, ale žiadna služba nezodpovedala vášmu hľadanému výrazu.", 108 "settings.recipes.nothingFound" : "Je nám ľúto, ale žiadna služba nezodpovedala vášmu hľadanému výrazu.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba úspešne pridaná", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba úspešne pridaná",
110 "settings.searchService" : "Vyhľadať službu",
102 "settings.service.error.goBack" : "Späť na služby", 111 "settings.service.error.goBack" : "Späť na služby",
103 "settings.service.error.headline" : "Chyba", 112 "settings.service.error.headline" : "Chyba",
104 "settings.service.error.message" : "Nepodarilo sa naÄítaÅ¥ službu.", 113 "settings.service.error.message" : "Nepodarilo sa naÄítaÅ¥ službu.",
@@ -110,24 +119,32 @@
110 "settings.service.form.customUrlValidationError" : "Nebolo možné overiť vlastný server: {name}.", 119 "settings.service.form.customUrlValidationError" : "Nebolo možné overiť vlastný server: {name}.",
111 "settings.service.form.deleteButton" : "Odstrániť službu", 120 "settings.service.form.deleteButton" : "Odstrániť službu",
112 "settings.service.form.editServiceHeadline" : "Upraviť {meno}", 121 "settings.service.form.editServiceHeadline" : "Upraviť {meno}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Zapnúť zvuk",
123 "settings.service.form.enableBadge" : "UkázaÅ¥ odznaky nepreÄítaných správ",
114 "settings.service.form.enableNotification" : "Povoliť oznámenia", 124 "settings.service.form.enableNotification" : "Povoliť oznámenia",
115 "settings.service.form.enableService" : "Povoliť službu", 125 "settings.service.form.enableService" : "Povoliť službu",
126 "settings.service.form.headlineBadges" : "Odznaky nepreÄítaných správ",
127 "settings.service.form.headlineGeneral" : "Všeobecné",
128 "settings.service.form.headlineNotifications" : "Upozornenia",
129 "settings.service.form.icon" : "Vlastná ikona",
130 "settings.service.form.iconDelete" : "Zmazať",
131 "settings.service.form.iconUpload" : "Presuňte váš obrázok, alebo kliknite sem",
116 "settings.service.form.indirectMessageInfo" : "Budete dostávať upozornenia na všetky nové správy v kanáli, nielen na @meno, @kanál, @kde, ...", 132 "settings.service.form.indirectMessageInfo" : "Budete dostávať upozornenia na všetky nové správy v kanáli, nielen na @meno, @kanál, @kde, ...",
117 "settings.service.form.indirectMessages" : "Zobraziť znak správy pre všetky nové správy", 133 "settings.service.form.indirectMessages" : "Zobraziť znak správy pre všetky nové správy",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "Ak je vypnuté, všetky zvuky notifikácií a iného audia budú stíšené",
119 "settings.service.form.name" : "Meno", 135 "settings.service.form.name" : "Meno",
120 "settings.service.form.saveButton" : "Uložiť službu", 136 "settings.service.form.saveButton" : "Uložiť službu",
121 "settings.service.form.tabHosted" : "Hostovaný", 137 "settings.service.form.tabHosted" : "Hostovaný",
122 "settings.service.form.tabOnPremise" : "Vlastné hosÅ¥ovanie â­ï¸", 138 "settings.service.form.tabOnPremise" : "Vlastné hosÅ¥ovanie â­ï¸",
123 "settings.service.form.team" : "Tím", 139 "settings.service.form.team" : "Tím",
140 "settings.service.form.useHostedService" : "Použite hostovanú {name} službu.",
124 "settings.service.form.yourServices" : "Vaše služby", 141 "settings.service.form.yourServices" : "Vaše služby",
125 "settings.services.deletedInfo" : "Služba bola odstránená", 142 "settings.services.deletedInfo" : "Služba bola odstránená",
126 "settings.services.discoverServices" : "Preskúmajte služby", 143 "settings.services.discoverServices" : "Preskúmajte služby",
127 "settings.services.headline" : "Vaše služby", 144 "settings.services.headline" : "Vaše služby",
128 "settings.services.noServicesAdded" : "Nepridali ste ešte žiadne služby", 145 "settings.services.noServicesAdded" : "Nepridali ste ešte žiadne služby",
129 "settings.services.tooltip.isDisabled" : "Služba je vypnutá", 146 "settings.services.tooltip.isDisabled" : "Služba je vypnutá",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Všetky zvuky sú stíšené",
131 "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté", 148 "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté",
132 "settings.services.updatedInfo" : "Vaše zmeny boli uložené", 149 "settings.services.updatedInfo" : "Vaše zmeny boli uložené",
133 "settings.user.form.accountType.company" : "SpoloÄnosÅ¥", 150 "settings.user.form.accountType.company" : "SpoloÄnosÅ¥",
@@ -136,26 +153,26 @@
136 "settings.user.form.accountType.non-profit" : "Nezisková organizácia", 153 "settings.user.form.accountType.non-profit" : "Nezisková organizácia",
137 "settings.user.form.currentPassword" : "SúÄasné heslo", 154 "settings.user.form.currentPassword" : "SúÄasné heslo",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Krstné meno",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Priezvisko",
141 "settings.user.form.newPassword" : "Nové heslo", 158 "settings.user.form.newPassword" : "Nové heslo",
142 "sidebar.addNewService" : "Pridať novú službu", 159 "sidebar.addNewService" : "Pridať novú službu",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Vypnúť upozornenia a zvuky",
144 "sidebar.settings" : "Nastavenia", 161 "sidebar.settings" : "Nastavenia",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Zapnúť upozornenia a zvuky",
146 "signup.company.label" : "SpoloÄnosÅ¥", 163 "signup.company.label" : "SpoloÄnosÅ¥",
147 "signup.email.label" : "Emailová adresa", 164 "signup.email.label" : "Emailová adresa",
148 "signup.emailDuplicate" : "Kontakt s touto emailovou adresou už existuje", 165 "signup.emailDuplicate" : "Kontakt s touto emailovou adresou už existuje",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Krstné meno",
150 "signup.headline" : "Prihlásiť sa", 167 "signup.headline" : "Prihlásiť sa",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Priezvisko",
152 "signup.legal.info" : "Vytvorením úÄtu Franz akceptujete", 169 "signup.legal.info" : "Vytvorením úÄtu Franz akceptujete",
153 "signup.legal.privacy" : "Vyhlásenie o ochrane súkromia", 170 "signup.legal.privacy" : "Vyhlásenie o ochrane súkromia",
154 "signup.legal.terms" : "Podmienky služby", 171 "signup.legal.terms" : "Podmienky služby",
155 "signup.link.login" : "Už máte úÄet, prihlásiÅ¥ sa?", 172 "signup.link.login" : "Už máte úÄet, prihlásiÅ¥ sa?",
156 "signup.password.label" : "Heslo", 173 "signup.password.label" : "Heslo",
157 "signup.submit.label" : "VytvoriÅ¥ úÄet", 174 "signup.submit.label" : "VytvoriÅ¥ úÄet",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Pro obyvatelé EÚ: môžu byť aplikované miestne dane",
159 "subscription.features.ads" : "Žiadne reklamy, nikdy!", 176 "subscription.features.ads" : "Žiadne reklamy, nikdy!",
160 "subscription.features.comingSoon" : "už Äoskoro", 177 "subscription.features.comingSoon" : "už Äoskoro",
161 "subscription.features.customServices" : "Privátne ​​služby pre vás a váš tím", 178 "subscription.features.customServices" : "Privátne ​​služby pre vás a váš tím",
@@ -178,11 +195,11 @@
178 "subscriptionPopup.buttonCancel" : "Zrušiť", 195 "subscriptionPopup.buttonCancel" : "Zrušiť",
179 "subscriptionPopup.buttonDone" : "DokonÄiÅ¥", 196 "subscriptionPopup.buttonDone" : "DokonÄiÅ¥",
180 "tabs.item.deleteService" : "Odstrániť službu", 197 "tabs.item.deleteService" : "Odstrániť službu",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "Vypnúť zvuk",
182 "tabs.item.disableNotifications" : "Zakázať oznámenia", 199 "tabs.item.disableNotifications" : "Zakázať oznámenia",
183 "tabs.item.disableService" : "Vypnúť službu", 200 "tabs.item.disableService" : "Vypnúť službu",
184 "tabs.item.edit" : "Upraviť", 201 "tabs.item.edit" : "Upraviť",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Zapnúť zvuk",
186 "tabs.item.enableNotification" : "Povoliť oznámenia", 203 "tabs.item.enableNotification" : "Povoliť oznámenia",
187 "tabs.item.enableService" : "Povoliť službu", 204 "tabs.item.enableService" : "Povoliť službu",
188 "tabs.item.reload" : "Obnoviť", 205 "tabs.item.reload" : "Obnoviť",
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
new file mode 100644
index 000000000..4d4e20d17
--- /dev/null
+++ b/src/i18n/locales/sr.json
@@ -0,0 +1,209 @@
1{
2 "global.api.unhealthy" : "Nije moguće pristupiti Francovim on-line servisima. ",
3 "global.notConnectedToTheInternet" : "Niste povezani sa serverom.",
4 "import.headline" : "Uvezite svoje Franc4 servise",
5 "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franc5",
6 "import.skip.label" : "I want to add services manually",
7 "import.submit.label" : "Uvezi servise",
8 "infobar.buttonChangelog" : "Å ta je novo? ",
9 "infobar.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje ",
10 "infobar.buttonReloadServices" : "Ponovo uÄitaj servise ",
11 "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije",
12 "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ",
13 "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ",
14 "invite.email.label" : "Vaša e-adresa",
15 "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege",
16 "invite.name.label" : "Ime",
17 "invite.skip.label" : "Želim da ovo uradim kasnije",
18 "invite.submit.label" : "Pošalji pozivnice",
19 "login.email.label" : "Vaša e-adresa:",
20 "login.headline" : "Prijavite se",
21 "login.invalidCredentials" : "E-mail ili lozinka nisu toÄni",
22 "login.link.password" : "Stvaranje nove lozinke",
23 "login.link.signup" : "Stvorite besplatan raÄun",
24 "login.password.label" : "Lozinka",
25 "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.",
26 "login.submit.label" : "Prijavite se",
27 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.",
28 "password.email.label" : "Vaša e-adresa",
29 "password.headline" : "Stvorite novu zaporku",
30 "password.link.login" : "Prijavite se na VaÅ¡ raÄun",
31 "password.link.signup" : "Stvorite besplatan raÄun",
32 "password.noUser" : "Ne postoji ni jedan korisnik s tom e-mail adresom",
33 "password.submit.label" : "Pošalji",
34 "password.successInfo" : "Molimo Vas da provjerite vašu e-mail adresu",
35 "pricing.headline" : "Podržite Franz",
36 "pricing.link.skipPayment" : "Ne želim da podržim razvoj Franz-a.",
37 "pricing.submit.label" : "Želim da podržim razvoj Franz-a.",
38 "pricing.support.label" : "Izaberite vaš plan za podržavanje",
39 "service.crashHandler.action" : "Osvježi {ime}",
40 "service.crashHandler.autoReload" : "Pokušaću automatski povratiti {ime} u {sekundi} sekundi",
41 "service.crashHandler.headline" : "O, ne! ",
42 "service.crashHandler.text" : "{ime} je izazvalo grešku. ",
43 "service.disabledHandler.action" : "Omogući {ime} ",
44 "service.disabledHandler.headline" : "{ime} je onemogućen\/o",
45 "services.getStarted" : "ZapoÄnimo! ",
46 "services.welcome" : "Dobrodošli u Franz",
47 "settings.account.account.editButton" : "Uredi raÄun",
48 "settings.account.accountType.basic" : "Osnovni raÄun",
49 "settings.account.accountType.premium" : "Premium raÄun",
50 "settings.account.buttonSave" : "Ažuriraj profil",
51 "settings.account.deleteAccount" : "Delete account",
52 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
53 "settings.account.deleteInfo" : "If you don't need your Franz account any longer, you can delete your account and all related data here.",
54 "settings.account.headline" : "KorisniÄki nalog",
55 "settings.account.headlineAccount" : "Podaci o nalogu",
56 "settings.account.headlineDangerZone" : "Danger Zone",
57 "settings.account.headlineInvoices" : "Fakture",
58 "settings.account.headlinePassword" : "Promijenite lozinku",
59 "settings.account.headlineProfile" : "Ažurirajte profil",
60 "settings.account.headlineSubscription" : "Vaša pretplata",
61 "settings.account.headlineUpgrade" : "Nadogradite raÄun i podržite Franc",
62 "settings.account.invoiceDownload" : "Preuzmite",
63 "settings.account.manageSubscription.label" : "Upravljajte pretplatama",
64 "settings.account.mining.active" : "Trenutno se odvija {hashes} kalkulacija po sekundi. ",
65 "settings.account.mining.cancel" : "Odustani ",
66 "settings.account.mining.moreInformation" : "Dođi do više informacija",
67 "settings.account.mining.thankyou" : "Hvala Vam što podržavate Franca s vašom procesorskom moći. ",
68 "settings.account.successInfo" : "Vaše promjene su spremljene",
69 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno",
70 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku",
71 "settings.app.buttonClearAllCache" : "Clear cache",
72 "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje",
73 "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
75 "settings.app.currentVersion" : "Trenutna verzija:",
76 "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini",
77 "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom",
78 "settings.app.form.beta" : "Obuhvati i beta verzije",
79 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa",
80 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci",
81 "settings.app.form.language" : "Jezik",
82 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku",
83 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren",
84 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled",
86 "settings.app.headline" : "Postavke",
87 "settings.app.headlineAdvanced" : "Napredne alatke",
88 "settings.app.headlineAppearance" : "Izgled",
89 "settings.app.headlineGeneral" : "Općenito",
90 "settings.app.headlineLanguage" : "Jezik",
91 "settings.app.headlineUpdates" : "Nadogradnje",
92 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni pogon",
93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
95 "settings.app.updateStatusAvailable" : "Nadogradnja dostupna, preuzimanje...",
96 "settings.app.updateStatusSearching" : "Traže se ažuriranja",
97 "settings.app.updateStatusUpToDate" : "Koristite najnoviju verziju Franca.",
98 "settings.navigation.account" : "RaÄun",
99 "settings.navigation.availableServices" : "Dostupne usluge",
100 "settings.navigation.logout" : "Odjava",
101 "settings.navigation.settings" : "Postavke",
102 "settings.navigation.yourServices" : "Vaše usluge",
103 "settings.recipes.all" : "Sve usluge",
104 "settings.recipes.dev" : "Razvoj",
105 "settings.recipes.headline" : "Dostupne usluge",
106 "settings.recipes.missingService" : "Da li neki servis nedostaje?",
107 "settings.recipes.mostPopular" : "Najpopularniji",
108 "settings.recipes.nothingFound" : "Žao nam je, ali ne postoje usluge koje se poklapaju s onima koje tražite",
109 "settings.recipes.servicesSuccessfulAddedInfo" : "Usluga uspješno dodana",
110 "settings.searchService" : "Search service",
111 "settings.service.error.goBack" : "Nazad do servisa",
112 "settings.service.error.headline" : "Greška ",
113 "settings.service.error.message" : "Nemoguće uÄitati sadržaj usluge",
114 "settings.service.form.addServiceHeadline" : "Dodaj {ime} ",
115 "settings.service.form.availableServices" : "Dostupne usluge",
116 "settings.service.form.customUrl" : "Prilagođen server",
117 "settings.service.form.customUrlPremiumInfo" : "Da bi ste dodali samo-hostovane usluge, potreban vam je Premium raÄun.",
118 "settings.service.form.customUrlUpgradeAccount" : "Nadogradite VaÅ¡ raÄun",
119 "settings.service.form.customUrlValidationError" : "Nije moguće odobriti prilagođeno {ime} servera.",
120 "settings.service.form.deleteButton" : "Izbriši uslugu",
121 "settings.service.form.editServiceHeadline" : "Uredite {ime}",
122 "settings.service.form.enableAudio" : "Omogućite zvuk",
123 "settings.service.form.enableBadge" : "Show unread message badges",
124 "settings.service.form.enableNotification" : "Omogućite obavijesti",
125 "settings.service.form.enableService" : "Omogućite usluge",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Općenito",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
132 "settings.service.form.indirectMessageInfo" : "Vi ćete biti obavješteni o svim novim porukama na kanalu, ne samo o @imenima, kanalima, @ovdje, ...",
133 "settings.service.form.indirectMessages" : "Prikaži znaÄku na svim novim porukuama",
134 "settings.service.form.isMutedInfo" : "Kada je onemogućeno, sve obavijesti, svi zvukovi i sva pozadinska podrÅ¡ka će biti neÄujna.",
135 "settings.service.form.name" : "Ime",
136 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e",
137 "settings.service.form.tabHosted" : "Hostovano",
138 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸",
139 "settings.service.form.team" : "Tim",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
141 "settings.service.form.yourServices" : "Vaše usluge",
142 "settings.services.deletedInfo" : "Usluga je onemogućena",
143 "settings.services.discoverServices" : "Pronađite usluge",
144 "settings.services.headline" : "Vaše usluge",
145 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.",
146 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena.",
147 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni.",
148 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
149 "settings.services.updatedInfo" : "Vaše promjene su pohranjene.",
150 "settings.user.form.accountType.company" : "Tvrtka",
151 "settings.user.form.accountType.individual" : "Pojedinac",
152 "settings.user.form.accountType.label" : "Tip raÄuna",
153 "settings.user.form.accountType.non-profit" : "Neprofitno",
154 "settings.user.form.currentPassword" : "Trenutna lozinka",
155 "settings.user.form.email" : "E-pošta",
156 "settings.user.form.firstname" : "Ime",
157 "settings.user.form.lastname" : "Prezime",
158 "settings.user.form.newPassword" : "Nova lozinka",
159 "sidebar.addNewService" : "Dodajte novu uslugu",
160 "sidebar.muteApp" : "Disable notifications & audio",
161 "sidebar.settings" : "Postavke",
162 "sidebar.unmuteApp" : "Enable notifications & audio",
163 "signup.company.label" : "Tvrtka",
164 "signup.email.label" : "Vaša e-adresa",
165 "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom",
166 "signup.firstname.label" : "Ime",
167 "signup.headline" : "Prijava",
168 "signup.lastname.label" : "Prezime",
169 "signup.legal.info" : "Prilikom stvaranja Franz raÄuna, slažete se sa sljedećim stavkama",
170 "signup.legal.privacy" : "Izjava o privatnosti",
171 "signup.legal.terms" : "Uvjeti korištenja",
172 "signup.link.login" : "Imate raÄun? Prijavite se.",
173 "signup.password.label" : "Lozinka",
174 "signup.submit.label" : "Napravite novi raÄun",
175 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje",
176 "subscription.features.ads" : "Bez reklama, doživotno!",
177 "subscription.features.comingSoon" : "Dolazi uskoro",
178 "subscription.features.customServices" : "Privatni servisi za Vas i Vaš tim",
179 "subscription.features.encryptedSync" : "Kodirano usklađivanje sesija.",
180 "subscription.features.onpremise" : "Dodajte pretpostavljeni\/hostirani servis kao Å¡to ima usluga HipChat",
181 "subscription.features.vpn" : "Podrška za Proxy i VPM ( VPN )",
182 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće:",
183 "subscription.mining.experimental" : "Eksperimentalno",
184 "subscription.mining.headline" : "Na koji naÄin ovo radi?",
185 "subscription.mining.line1" : "Omogućavanjem \" Podrška snagom procesora \", Franc će iskoristiti oko 20-50% vaših CPU resursa za Kripto valutu \" Monero \" koja košta otprilike 5$ godišnje.",
186 "subscription.mining.line2" : "Adaptiraćemo iskorišćenost CPU resursa na osnovu vaÅ¡eg rada, na taj naÄin ćemo izbjeći iscrpljivanje baterije i usporavanje ureÄ‘aja.",
187 "subscription.mining.line3" : "Dok god je \" rudar \" aktivan, imaćete neograniÄen pristup svim Francovim Premium znaÄajkama.",
188 "subscription.mining.moreInformation" : "Dajte mi više informacija o ovom planu.",
189 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu",
190 "subscription.submit.label" : "Želim da podržim razvoj Franca.",
191 "subscription.type.free" : "Slobodno",
192 "subscription.type.mining" : "Podržite Franca s procesorskim resursima",
193 "subscription.type.month" : "mjesec",
194 "subscription.type.year" : "godina",
195 "subscriptionPopup.buttonCancel" : "Odustani",
196 "subscriptionPopup.buttonDone" : "Završeno",
197 "tabs.item.deleteService" : "Izbriši servis",
198 "tabs.item.disableAudio" : "Onemogući zvuk",
199 "tabs.item.disableNotifications" : "Onemogući obavijesti",
200 "tabs.item.disableService" : "Onemogući servis",
201 "tabs.item.edit" : "Uredi",
202 "tabs.item.enableAudio" : "UkljuÄi zvuk",
203 "tabs.item.enableNotification" : "Omogući obavijesti",
204 "tabs.item.enableService" : "Omogući usluge",
205 "tabs.item.reload" : "Ponovno uÄitavanje",
206 "welcome.loginButton" : "Prijavite se na raÄun",
207 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun",
208 "welcome.slogan" : "Poruke koje su stvorene za tebe"
209}
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
new file mode 100644
index 000000000..816a60793
--- /dev/null
+++ b/src/i18n/locales/tr.json
@@ -0,0 +1,209 @@
1{
2 "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor.",
3 "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.",
4 "import.headline" : "Franz 4 servislerinizi ekleyin.",
5 "import.notSupportedHeadline" : "Servisler henüz Franz 5'te desteklenmiyor.",
6 "import.skip.label" : "Servisleri kendim eklemek istiyorum",
7 "import.submit.label" : "Servisleri içe aktar",
8 "infobar.buttonChangelog" : "Yeni ne var?",
9 "infobar.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur",
10 "infobar.buttonReloadServices" : "Hizmetleri yeniden yükle",
11 "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yüklenemedi",
12 "infobar.servicesUpdated" : "Hizmetleriniz güncellendi.",
13 "infobar.updateAvailable" : "Yeni Franz güncellemesi mevcut",
14 "invite.email.label" : "E-posta adresi",
15 "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et",
16 "invite.name.label" : "Ad",
17 "invite.skip.label" : "Daha sonra yapmak istiyorum",
18 "invite.submit.label" : "Davetiye gönder",
19 "login.email.label" : "E-posta adresi",
20 "login.headline" : "Oturum Aç",
21 "login.invalidCredentials" : "Yanlış parola ya da e-posta adresi",
22 "login.link.password" : "Parola sıfırla",
23 "login.link.signup" : "Kullanıcı hesabı oluştur",
24 "login.password.label" : "Parola",
25 "login.serverLogout" : "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.",
26 "login.submit.label" : "Oturum Aç",
27 "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.",
28 "password.email.label" : "E-posta adresi",
29 "password.headline" : "Parola sıfırla",
30 "password.link.login" : "Hesabına giriş yap",
31 "password.link.signup" : "Ãœcretsiz bir hesap oluÅŸtur",
32 "password.noUser" : "Bu e-posta adresinde bir kullanıcı bulunamadı",
33 "password.submit.label" : "Gönder",
34 "password.successInfo" : "E-postanızı kontrol ediniz",
35 "pricing.headline" : "Franz'ı Destekle",
36 "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.",
37 "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum",
38 "pricing.support.label" : "Destek planınızı seçiniz",
39 "service.crashHandler.action" : "{name} yeniden yükle",
40 "service.crashHandler.autoReload" : "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz",
41 "service.crashHandler.headline" : "Aman Tanrım hayır!",
42 "service.crashHandler.text" : "{name} bir hataya neden oldu.",
43 "service.disabledHandler.action" : "AktifleÅŸtir {name}",
44 "service.disabledHandler.headline" : "{name} devredışı",
45 "services.getStarted" : "Haydi başlayalım",
46 "services.welcome" : "Franz'a HoÅŸgeldiniz",
47 "settings.account.account.editButton" : "Hesabı düzenle",
48 "settings.account.accountType.basic" : "Basit Hesap",
49 "settings.account.accountType.premium" : "Premium Destekçi Hesabı",
50 "settings.account.buttonSave" : "Profili güncelle",
51 "settings.account.deleteAccount" : "Hesabı sil",
52 "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!",
53 "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.",
54 "settings.account.headline" : "Hesap",
55 "settings.account.headlineAccount" : "Hesap bilgileri",
56 "settings.account.headlineDangerZone" : "Tehlike Bölgesi",
57 "settings.account.headlineInvoices" : "Faturalar",
58 "settings.account.headlinePassword" : "Parolayı değiştir",
59 "settings.account.headlineProfile" : "Profili güncelle",
60 "settings.account.headlineSubscription" : "AboneliÄŸin",
61 "settings.account.headlineUpgrade" : "Hesabını yükselt & Franz'ı destekle",
62 "settings.account.invoiceDownload" : "Ä°ndir",
63 "settings.account.manageSubscription.label" : "Aboneliğini yönet",
64 "settings.account.mining.active" : "Şu anda saniyede {hashes} hesaplama işlemi gerçekleştiriyorsun.",
65 "settings.account.mining.cancel" : "MadenciliÄŸi iptal et",
66 "settings.account.mining.moreInformation" : "Daha fazla bilgi al",
67 "settings.account.mining.thankyou" : "Franz'ı işlem gücünle desteklediğin için teşekkürler.",
68 "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi",
69 "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin",
70 "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yüklenemedi.",
71 "settings.app.buttonClearAllCache" : "Clear cache",
72 "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur",
73 "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
75 "settings.app.currentVersion" : "Geçerli sürüm:",
76 "settings.app.form.autoLaunchInBackground" : "Arka planda aç",
77 "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç",
78 "settings.app.form.beta" : "Beta versiyonları dahil et",
79 "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir",
80 "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster",
81 "settings.app.form.language" : "Dil",
82 "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült",
83 "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut",
84 "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster",
86 "settings.app.headline" : "Ayarlar",
87 "settings.app.headlineAdvanced" : "GeliÅŸmiÅŸ",
88 "settings.app.headlineAppearance" : "Görünüm",
89 "settings.app.headlineGeneral" : "Genel",
90 "settings.app.headlineLanguage" : "Dil",
91 "settings.app.headlineUpdates" : "Güncellemeler",
92 "settings.app.restartRequired" : "Değişiklikler yeniden başlatmayı gerektiriyor",
93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Franz'ı senin diline tercüme etmemiz için yardım et.",
95 "settings.app.updateStatusAvailable" : "Güncelleme mevcut, indiriliyor...",
96 "settings.app.updateStatusSearching" : "Güncellemeleri denetliyor",
97 "settings.app.updateStatusUpToDate" : "Franz'ın son versiyonunu kullanıyorsun",
98 "settings.navigation.account" : "Hesap",
99 "settings.navigation.availableServices" : "Mevcut servisler",
100 "settings.navigation.logout" : "Çıkış",
101 "settings.navigation.settings" : "Ayarlar",
102 "settings.navigation.yourServices" : "Servislerin",
103 "settings.recipes.all" : "Tüm servisler",
104 "settings.recipes.dev" : "GeliÅŸtirme",
105 "settings.recipes.headline" : "Mevcut servisler",
106 "settings.recipes.missingService" : "Aradığın servisi bulamadın mı?",
107 "settings.recipes.mostPopular" : "En popüler",
108 "settings.recipes.nothingFound" : "Aradığın terimle eşleşen servis bulunamadı.",
109 "settings.recipes.servicesSuccessfulAddedInfo" : "Servis başarıyla eklendi",
110 "settings.searchService" : "Search service",
111 "settings.service.error.goBack" : "Servislere geri dön",
112 "settings.service.error.headline" : "Hata",
113 "settings.service.error.message" : "Servis tarifi yüklenemedi",
114 "settings.service.form.addServiceHeadline" : "{name} Ekle",
115 "settings.service.form.availableServices" : "Mevcut servisler",
116 "settings.service.form.customUrl" : "Özel sunucu",
117 "settings.service.form.customUrlPremiumInfo" : "Kendi barındırdığın servisi ekleyebilmek için Franz Premium Destek Hesabına ihtiyacın var.",
118 "settings.service.form.customUrlUpgradeAccount" : "Hesabını yükselt",
119 "settings.service.form.customUrlValidationError" : "{name} özel sunucu doğrulanamadı.",
120 "settings.service.form.deleteButton" : "Servisi sil",
121 "settings.service.form.editServiceHeadline" : "{name} düzenle",
122 "settings.service.form.enableAudio" : "Sesi etkinleÅŸtirin",
123 "settings.service.form.enableBadge" : "Show unread message badges",
124 "settings.service.form.enableNotification" : "Bildirimleri etkinleÅŸtir",
125 "settings.service.form.enableService" : "Servisi etkinleÅŸtir",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Genel",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
132 "settings.service.form.indirectMessageInfo" : "Bir kanaldaki tüm yeni mesajlar hakkında size bilgi verilecektir, bunlar daihil @username, @channel, @here, ...",
133 "settings.service.form.indirectMessages" : "Mesaj rozetini tüm yeni mesajlar için göster",
134 "settings.service.form.isMutedInfo" : "Devre dışı bırakıldığında, tüm bildirim sesleri sessize alınır",
135 "settings.service.form.name" : "Ä°sim",
136 "settings.service.form.saveButton" : "Servisi kaydet",
137 "settings.service.form.tabHosted" : "Barındırılan",
138 "settings.service.form.tabOnPremise" : "Kendi barındırılan",
139 "settings.service.form.team" : "Takım",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
141 "settings.service.form.yourServices" : "Servislerin",
142 "settings.services.deletedInfo" : "Servis silindi",
143 "settings.services.discoverServices" : "Servisleri keÅŸfet",
144 "settings.services.headline" : "Servislerin",
145 "settings.services.noServicesAdded" : "Henüz hiç servis eklemedin.",
146 "settings.services.tooltip.isDisabled" : "Servis devre dışı",
147 "settings.services.tooltip.isMuted" : "Tüm sesler kapalı",
148 "settings.services.tooltip.notificationsDisabled" : "Bildirimler devre dışı",
149 "settings.services.updatedInfo" : "DeÄŸiÅŸikliklerin kaydedildi",
150 "settings.user.form.accountType.company" : "Kurum",
151 "settings.user.form.accountType.individual" : "Bireysel",
152 "settings.user.form.accountType.label" : "Hesap tipi",
153 "settings.user.form.accountType.non-profit" : "Kar amacı gütmeyen",
154 "settings.user.form.currentPassword" : "Mevcut ÅŸifre",
155 "settings.user.form.email" : "E-posta",
156 "settings.user.form.firstname" : "Ad",
157 "settings.user.form.lastname" : "Soyad",
158 "settings.user.form.newPassword" : "Yeni ÅŸifre",
159 "sidebar.addNewService" : "Yeni servis ekle",
160 "sidebar.muteApp" : "Bildirimleri ve sesli uyarıları kapat",
161 "sidebar.settings" : "Ayarlar",
162 "sidebar.unmuteApp" : "Bildirimleri ve sesli uyarıları etkinleştir",
163 "signup.company.label" : "Kurum",
164 "signup.email.label" : "E-posta adresi",
165 "signup.emailDuplicate" : "Bu email adresine sahip bir kullanıcı zaten mevcut",
166 "signup.firstname.label" : "Ad",
167 "signup.headline" : "Hesap oluÅŸtur",
168 "signup.lastname.label" : "Soyad",
169 "signup.legal.info" : "Franz'ı hesabı oluşturark kabul ediyorsun",
170 "signup.legal.privacy" : "Gizlilik Sözleşmesi",
171 "signup.legal.terms" : "Kullanım Koşulları",
172 "signup.link.login" : "Mevcut hesabınla giriş yap.",
173 "signup.password.label" : "Åžifre",
174 "signup.submit.label" : "Hesap oluÅŸtur",
175 "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir",
176 "subscription.features.ads" : "Reklam yok, asla!",
177 "subscription.features.comingSoon" : "yakında geliyor",
178 "subscription.features.customServices" : "Sen ve takımın için gizli servis",
179 "subscription.features.encryptedSync" : "Åžifreli oturum senkronizasyonu",
180 "subscription.features.onpremise" : "HipChat gibi kurum içi\/barındırılan hizmetler ekle",
181 "subscription.features.vpn" : "Proxy & VPN desteÄŸi",
182 "subscription.includedFeatures" : "Ücretli Franz Premium Destekçi Hesabına dahil",
183 "subscription.mining.experimental" : "deneysel",
184 "subscription.mining.headline" : "Bu nasıl çalışır?",
185 "subscription.mining.line1" : "\"İşlem gücü ile destekleme\"'yi etkinleştirdiğinde, Franz CPU'nun %20-50'lik kısmını kriptopara Monero madenciliği için kullanacak. Yılda yaklaşık 5$'a eşdeğer.",
186 "subscription.mining.line2" : "CPU kullanımını, pilinizi bitirmemek ve makinenizi yavaşlatmamak için çalışma davranışınıza göre uyarlayacağız.",
187 "subscription.mining.line3" : "Madenci etkin olduğu sürece, tüm Franz Premium Destekçi Özelliklerine sınırsız erişime sahip olacaksınız.",
188 "subscription.mining.moreInformation" : "Bu plan hakkında daha fazla bilgi al.",
189 "subscription.paymentSessionError" : "Ödeme formu başlatılamadı",
190 "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum",
191 "subscription.type.free" : "ücretsiz",
192 "subscription.type.mining" : "Franz'ı işlem gücüyle destekle",
193 "subscription.type.month" : "ay",
194 "subscription.type.year" : "yıl",
195 "subscriptionPopup.buttonCancel" : "Ä°ptal",
196 "subscriptionPopup.buttonDone" : "Tamamlandı",
197 "tabs.item.deleteService" : "Servisi sil",
198 "tabs.item.disableAudio" : "Sesi kapat",
199 "tabs.item.disableNotifications" : "Bildirimleri devre dışı bırak",
200 "tabs.item.disableService" : "Servisi devre dışı bırak",
201 "tabs.item.edit" : "Düzenle",
202 "tabs.item.enableAudio" : "Sesi etkinleÅŸtir",
203 "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir",
204 "tabs.item.enableService" : "Servisi etkinleÅŸtir",
205 "tabs.item.reload" : "Yeniden Yükle",
206 "welcome.loginButton" : "Hesabına giriş yap",
207 "welcome.signupButton" : "Ãœcretsiz hesap oluÅŸtur",
208 "welcome.slogan" : "Sizin için çalışan mesajlaşma"
209}
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 902368150..5456bea95 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -3,9 +3,9 @@
3 "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", 3 "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.",
4 "import.headline" : "Імпортувати ваші ÑервіÑи з Franz 4", 4 "import.headline" : "Імпортувати ваші ÑервіÑи з Franz 4",
5 "import.notSupportedHeadline" : "СервіÑи ще не підтримуютьÑÑ Ð² Franz 5", 5 "import.notSupportedHeadline" : "СервіÑи ще не підтримуютьÑÑ Ð² Franz 5",
6 "import.skip.label" : "Я хочу додати ÑервіÑи вручну", 6 "import.skip.label" : "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ",
7 "import.submit.label" : "Імпортувати ÑервіÑи", 7 "import.submit.label" : "Імпортувати ÑервіÑи",
8 "infobar.buttonChangelog" : "What is new?", 8 "infobar.buttonChangelog" : "Що нового?",
9 "infobar.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", 9 "infobar.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ",
10 "infobar.buttonReloadServices" : "Перезавантажити ÑервіÑи", 10 "infobar.buttonReloadServices" : "Перезавантажити ÑервіÑи",
11 "infobar.requiredRequestsFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача", 11 "infobar.requiredRequestsFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача",
@@ -36,20 +36,24 @@
36 "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.", 36 "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.",
37 "pricing.submit.label" : "Я хочу підтримати розробку Franz", 37 "pricing.submit.label" : "Я хочу підтримати розробку Franz",
38 "pricing.support.label" : "Виберіть Ñвій план підтримки", 38 "pricing.support.label" : "Виберіть Ñвій план підтримки",
39 "service.crashHandler.action" : "Reload {name}", 39 "service.crashHandler.action" : "Перезавантажити {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", 40 "service.crashHandler.autoReload" : "Спробую автоматично відновити {name} через {seconds} Ñ",
41 "service.crashHandler.headline" : "Oh no!", 41 "service.crashHandler.headline" : "О, ні!",
42 "service.crashHandler.text" : "{name} has caused an error.", 42 "service.crashHandler.text" : "{name} призвів до помилки.",
43 "service.disabledHandler.action" : "Enable {name}", 43 "service.disabledHandler.action" : "Увімкнути {name} ",
44 "service.disabledHandler.headline" : "{name} is disabled", 44 "service.disabledHandler.headline" : "{name} вимкнено",
45 "services.getStarted" : "Почати", 45 "services.getStarted" : "Почати",
46 "services.welcome" : "ЛаÑкаво проÑимо в Franz", 46 "services.welcome" : "ЛаÑкаво проÑимо в Franz",
47 "settings.account.account.editButton" : "Редагувати акаунт", 47 "settings.account.account.editButton" : "Редагувати акаунт",
48 "settings.account.accountType.basic" : "Базовий акаунт", 48 "settings.account.accountType.basic" : "Базовий акаунт",
49 "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника", 49 "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника",
50 "settings.account.buttonSave" : "Оновити профіль", 50 "settings.account.buttonSave" : "Оновити профіль",
51 "settings.account.deleteAccount" : "Видалити обліковий запиÑ",
52 "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
53 "settings.account.deleteInfo" : "Якщо Вам більше не потрібний обліковий Ð·Ð°Ð¿Ð¸Ñ Franz, Ви можете його видалити Ñ– вÑÑ– Ñуміжні дані.",
51 "settings.account.headline" : "Ðкаунт", 54 "settings.account.headline" : "Ðкаунт",
52 "settings.account.headlineAccount" : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ акаунт", 55 "settings.account.headlineAccount" : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ акаунт",
56 "settings.account.headlineDangerZone" : "Ðа Ñвій Ñтрах Ñ– ризик",
53 "settings.account.headlineInvoices" : "ІнвойÑи", 57 "settings.account.headlineInvoices" : "ІнвойÑи",
54 "settings.account.headlinePassword" : "Змінити пароль", 58 "settings.account.headlinePassword" : "Змінити пароль",
55 "settings.account.headlineProfile" : "Оновити профіль", 59 "settings.account.headlineProfile" : "Оновити профіль",
@@ -64,26 +68,30 @@
64 "settings.account.successInfo" : "Ваші зміни були збережені", 68 "settings.account.successInfo" : "Ваші зміни були збережені",
65 "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз", 69 "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз",
66 "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", 70 "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача",
71 "settings.app.buttonClearAllCache" : "Clear cache",
67 "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", 72 "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ",
68 "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", 73 "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
69 "settings.app.currentVersion" : "Поточна верÑÑ–Ñ:", 75 "settings.app.currentVersion" : "Поточна верÑÑ–Ñ:",
70 "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", 76 "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі",
71 "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку", 77 "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку",
72 "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—", 78 "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking", 79 "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray", 80 "settings.app.form.enableSystemTray" : "Показувати Franz у ÑиÑтемному лотку",
75 "settings.app.form.language" : "Мова", 81 "settings.app.form.language" : "Мова",
76 "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до ÑиÑтемного лотка", 82 "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до ÑиÑтемного лотка",
77 "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", 83 "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 84 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–",
79 "settings.app.headline" : "ÐалаштуваннÑ", 86 "settings.app.headline" : "ÐалаштуваннÑ",
80 "settings.app.headlineAdvanced" : "Advanced", 87 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance", 88 "settings.app.headlineAppearance" : "ВиглÑд",
82 "settings.app.headlineGeneral" : "Загальні", 89 "settings.app.headlineGeneral" : "Загальні",
83 "settings.app.headlineLanguage" : "Мова", 90 "settings.app.headlineLanguage" : "Мова",
84 "settings.app.headlineUpdates" : "ОновленнÑ", 91 "settings.app.headlineUpdates" : "ОновленнÑ",
85 "settings.app.restartRequired" : "Changes require restart", 92 "settings.app.restartRequired" : "Зміни потребують перезапуÑку",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "Допоможіть переклаÑти Franz на Вашу мову.",
87 "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", 95 "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...",
88 "settings.app.updateStatusSearching" : "Шукає оновленнÑ", 96 "settings.app.updateStatusSearching" : "Шукає оновленнÑ",
89 "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz", 97 "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz",
@@ -95,24 +103,32 @@
95 "settings.recipes.all" : "Ð’ÑÑ– ÑервіÑи", 103 "settings.recipes.all" : "Ð’ÑÑ– ÑервіÑи",
96 "settings.recipes.dev" : "Розробка", 104 "settings.recipes.dev" : "Розробка",
97 "settings.recipes.headline" : "ДоÑтупні ÑервіÑи", 105 "settings.recipes.headline" : "ДоÑтупні ÑервіÑи",
98 "settings.recipes.missingService" : "Missing a service?", 106 "settings.recipes.missingService" : "Ðе знайшли ÑервіÑу?",
99 "settings.recipes.mostPopular" : "Ðайбільш популÑрні", 107 "settings.recipes.mostPopular" : "Ðайбільш популÑрні",
100 "settings.recipes.nothingFound" : "Вибачте, але жоден ÑÐµÑ€Ð²Ñ–Ñ Ð½Ðµ відповідає пошуковому терміну.", 108 "settings.recipes.nothingFound" : "Вибачте, але жоден ÑÐµÑ€Ð²Ñ–Ñ Ð½Ðµ відповідає пошуковому терміну.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Ð¡ÐµÑ€Ð²Ñ–Ñ ÑƒÑпішно додано", 109 "settings.recipes.servicesSuccessfulAddedInfo" : "Ð¡ÐµÑ€Ð²Ñ–Ñ ÑƒÑпішно додано",
110 "settings.searchService" : "Search service",
102 "settings.service.error.goBack" : "ПовернутиÑÑŒ до ÑервіÑів", 111 "settings.service.error.goBack" : "ПовернутиÑÑŒ до ÑервіÑів",
103 "settings.service.error.headline" : "Помилка", 112 "settings.service.error.headline" : "Помилка",
104 "settings.service.error.message" : "Ðе вдалоÑÑŒ завантажити Ñерверний протокол.", 113 "settings.service.error.message" : "Ðе вдалоÑÑŒ завантажити Ñерверний протокол.",
105 "settings.service.form.addServiceHeadline" : "Додати {name}", 114 "settings.service.form.addServiceHeadline" : "Додати {name}",
106 "settings.service.form.availableServices" : "ДоÑтупні ÑервіÑи", 115 "settings.service.form.availableServices" : "ДоÑтупні ÑервіÑи",
107 "settings.service.form.customUrl" : "КориÑтувацький Ñервер ", 116 "settings.service.form.customUrl" : "КориÑтувацький Ñервер",
108 "settings.service.form.customUrlPremiumInfo" : "Щоб додати ÑамоÑтійно розміщені ÑервіÑи, вам потріьно мати Преміумним Ðкаунт Прихильника Franz.", 117 "settings.service.form.customUrlPremiumInfo" : "Щоб додати ÑамоÑтійно розміщені ÑервіÑи, вам потріьно мати Преміумним Ðкаунт Прихильника Franz.",
109 "settings.service.form.customUrlUpgradeAccount" : "Оновити ваш обліковий запиÑ", 118 "settings.service.form.customUrlUpgradeAccount" : "Оновити ваш обліковий запиÑ",
110 "settings.service.form.customUrlValidationError" : "Ðе вдалоÑÑŒ підтвердити влаÑний {name} Ñервер.", 119 "settings.service.form.customUrlValidationError" : "Ðе вдалоÑÑŒ підтвердити влаÑний {name} Ñервер.",
111 "settings.service.form.deleteButton" : "Видалити ÑервіÑ", 120 "settings.service.form.deleteButton" : "Видалити ÑервіÑ",
112 "settings.service.form.editServiceHeadline" : "Редагувати {name}", 121 "settings.service.form.editServiceHeadline" : "Редагувати {name}",
113 "settings.service.form.enableAudio" : "Enable audio", 122 "settings.service.form.enableAudio" : "Увімкнути звук",
123 "settings.service.form.enableBadge" : "Show unread message badges",
114 "settings.service.form.enableNotification" : "Увімкнути ÑповіщеннÑ", 124 "settings.service.form.enableNotification" : "Увімкнути ÑповіщеннÑ",
115 "settings.service.form.enableService" : "Увімкнути ÑервіÑ", 125 "settings.service.form.enableService" : "Увімкнути ÑервіÑ",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "Загальні",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
116 "settings.service.form.indirectMessageInfo" : "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...", 132 "settings.service.form.indirectMessageInfo" : "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", 133 "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 134 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
@@ -121,13 +137,14 @@
121 "settings.service.form.tabHosted" : "Розміщений", 137 "settings.service.form.tabHosted" : "Розміщений",
122 "settings.service.form.tabOnPremise" : "СамоÑтійно розміщений â­ï¸", 138 "settings.service.form.tabOnPremise" : "СамоÑтійно розміщений â­ï¸",
123 "settings.service.form.team" : "Команда", 139 "settings.service.form.team" : "Команда",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
124 "settings.service.form.yourServices" : "Ваші ÑервіÑи", 141 "settings.service.form.yourServices" : "Ваші ÑервіÑи",
125 "settings.services.deletedInfo" : "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð±ÑƒÐ»Ð¾ видалено", 142 "settings.services.deletedInfo" : "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð±ÑƒÐ»Ð¾ видалено",
126 "settings.services.discoverServices" : "Відкрийте Ð´Ð»Ñ Ñебе ÑервіÑи", 143 "settings.services.discoverServices" : "Відкрийте Ð´Ð»Ñ Ñебе ÑервіÑи",
127 "settings.services.headline" : "Ваші ÑервіÑи", 144 "settings.services.headline" : "Ваші ÑервіÑи",
128 "settings.services.noServicesAdded" : "Ви ще не додавали жодних ÑервіÑів.", 145 "settings.services.noServicesAdded" : "Ви ще не додавали жодних ÑервіÑів.",
129 "settings.services.tooltip.isDisabled" : "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹", 146 "settings.services.tooltip.isDisabled" : "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹",
130 "settings.services.tooltip.isMuted" : "All sounds are muted", 147 "settings.services.tooltip.isMuted" : "Ð’ÑÑ– звуки вимкнено",
131 "settings.services.tooltip.notificationsDisabled" : "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ–", 148 "settings.services.tooltip.notificationsDisabled" : "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ–",
132 "settings.services.updatedInfo" : "Ваші зміни були збережені", 149 "settings.services.updatedInfo" : "Ваші зміни були збережені",
133 "settings.user.form.accountType.company" : "КомпаніÑ", 150 "settings.user.form.accountType.company" : "КомпаніÑ",
@@ -135,27 +152,27 @@
135 "settings.user.form.accountType.label" : "Тип акаунту", 152 "settings.user.form.accountType.label" : "Тип акаунту",
136 "settings.user.form.accountType.non-profit" : "Ðекомерційний", 153 "settings.user.form.accountType.non-profit" : "Ðекомерційний",
137 "settings.user.form.currentPassword" : "Поточний пароль", 154 "settings.user.form.currentPassword" : "Поточний пароль",
138 "settings.user.form.email" : "Email", 155 "settings.user.form.email" : "Ел. пошта",
139 "settings.user.form.firstname" : "First Name", 156 "settings.user.form.firstname" : "Ім`Ñ",
140 "settings.user.form.lastname" : "Last Name", 157 "settings.user.form.lastname" : "Прізвище",
141 "settings.user.form.newPassword" : "Ðовий пароль", 158 "settings.user.form.newPassword" : "Ðовий пароль",
142 "sidebar.addNewService" : "Add new service", 159 "sidebar.addNewService" : "Додати новий ÑервіÑ",
143 "sidebar.mute" : "Disable audio", 160 "sidebar.muteApp" : "Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки",
144 "sidebar.settings" : "ÐалаштуваннÑ", 161 "sidebar.settings" : "ÐалаштуваннÑ",
145 "sidebar.unmute" : "Enable audio", 162 "sidebar.unmuteApp" : "Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки",
146 "signup.company.label" : "КомпаніÑ", 163 "signup.company.label" : "КомпаніÑ",
147 "signup.email.label" : "Email адреÑа", 164 "signup.email.label" : "Email адреÑа",
148 "signup.emailDuplicate" : "КориÑтувач із цією email адреÑою вже Ñ–Ñнує", 165 "signup.emailDuplicate" : "КориÑтувач із цією email адреÑою вже Ñ–Ñнує",
149 "signup.firstname.label" : "First Name", 166 "signup.firstname.label" : "Ім`Ñ",
150 "signup.headline" : "Увійти", 167 "signup.headline" : "Увійти",
151 "signup.lastname.label" : "Last Name", 168 "signup.lastname.label" : "Прізвище",
152 "signup.legal.info" : "СтвореннÑм акаунту Franz ви приймаєте", 169 "signup.legal.info" : "СтвореннÑм акаунту Franz ви приймаєте",
153 "signup.legal.privacy" : "ЗаÑва про конфіденційніÑÑ‚ÑŒ", 170 "signup.legal.privacy" : "ЗаÑва про конфіденційніÑÑ‚ÑŒ",
154 "signup.legal.terms" : "Умови викориÑтаннÑ", 171 "signup.legal.terms" : "Умови викориÑтаннÑ",
155 "signup.link.login" : "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?", 172 "signup.link.login" : "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?",
156 "signup.password.label" : "Пароль", 173 "signup.password.label" : "Пароль",
157 "signup.submit.label" : "Створити акаунт", 174 "signup.submit.label" : "Створити акаунт",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 175 "subscription.euTaxInfo" : "Ð”Ð»Ñ Ð¶Ð¸Ñ‚ÐµÐ»Ñ–Ð² ЄС: можуть заÑтоÑовуватиÑÑ Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐ¸",
159 "subscription.features.ads" : "Жодної реклами!", 176 "subscription.features.ads" : "Жодної реклами!",
160 "subscription.features.comingSoon" : "очікуйте незабаром", 177 "subscription.features.comingSoon" : "очікуйте незабаром",
161 "subscription.features.customServices" : "Приватні ÑервіÑи Ð´Ð»Ñ Ð²Ð°Ñ Ñ– вашої команди", 178 "subscription.features.customServices" : "Приватні ÑервіÑи Ð´Ð»Ñ Ð²Ð°Ñ Ñ– вашої команди",
@@ -178,13 +195,13 @@
178 "subscriptionPopup.buttonCancel" : "Відмінити", 195 "subscriptionPopup.buttonCancel" : "Відмінити",
179 "subscriptionPopup.buttonDone" : "Готово", 196 "subscriptionPopup.buttonDone" : "Готово",
180 "tabs.item.deleteService" : "Видалити ÑервіÑ", 197 "tabs.item.deleteService" : "Видалити ÑервіÑ",
181 "tabs.item.disableAudio" : "Disable audio", 198 "tabs.item.disableAudio" : "відключити звук",
182 "tabs.item.disableNotifications" : "Вимкнути ÑповіщеннÑ", 199 "tabs.item.disableNotifications" : "Вимкнути ÑповіщеннÑ",
183 "tabs.item.disableService" : "Вимкнути ÑервіÑ", 200 "tabs.item.disableService" : "Вимкнути ÑервіÑ",
184 "tabs.item.edit" : "Редагувати", 201 "tabs.item.edit" : "Редагувати",
185 "tabs.item.enableAudio" : "Enable audio", 202 "tabs.item.enableAudio" : "Увімкнути звук",
186 "tabs.item.enableNotification" : "Увімкнути ÑповіщеннÑ", 203 "tabs.item.enableNotification" : "Увімкнути ÑповіщеннÑ",
187 "tabs.item.enableService" : "Увімкнути ÑеÑвіÑ", 204 "tabs.item.enableService" : "Увімкнути Ñлужбу",
188 "tabs.item.reload" : "Перезавантажити", 205 "tabs.item.reload" : "Перезавантажити",
189 "welcome.loginButton" : "Увійдіть до Ñвого акаунту", 206 "welcome.loginButton" : "Увійдіть до Ñвого акаунту",
190 "welcome.signupButton" : "Створити безплатний акаунт", 207 "welcome.signupButton" : "Створити безплатний акаунт",
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json
new file mode 100644
index 000000000..12f1035bf
--- /dev/null
+++ b/src/i18n/locales/zh-TW.json
@@ -0,0 +1,209 @@
1{
2 "global.api.unhealthy" : "無法連線至Franz的伺æœå™¨ã€‚",
3 "global.notConnectedToTheInternet" : "你沒有連上網路。",
4 "import.headline" : "匯入Franz 4çš„æœå‹™",
5 "import.notSupportedHeadline" : "Franz 5尚未支æ´æ­¤æœå‹™",
6 "import.skip.label" : "手動添加æœå‹™",
7 "import.submit.label" : "匯入æœå‹™",
8 "infobar.buttonChangelog" : "有什麼新功能呢?",
9 "infobar.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°",
10 "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™",
11 "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資訊",
12 "infobar.servicesUpdated" : "ä½ çš„æœå‹™å·²ç¶“被更新",
13 "infobar.updateAvailable" : "Franz有å¯ç”¨çš„æ›´æ–°",
14 "invite.email.label" : "é›»å­éƒµä»¶åœ°å€",
15 "invite.headline.friends" : "邀請3ä½ä½ çš„朋å‹æˆ–åŒäº‹",
16 "invite.name.label" : "å稱",
17 "invite.skip.label" : "我想ç¨å¾Œå†åš",
18 "invite.submit.label" : "é€å‡ºé‚€è«‹",
19 "login.email.label" : "é›»å­éƒµä»¶åœ°å€",
20 "login.headline" : "登入",
21 "login.invalidCredentials" : "é›»å­éƒµä»¶æˆ–密碼有誤",
22 "login.link.password" : "é‡è¨­å¯†ç¢¼",
23 "login.link.signup" : "建立å…費帳號",
24 "login.password.label" : "密碼",
25 "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„",
26 "login.submit.label" : "登入",
27 "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚",
28 "password.email.label" : "é›»å­éƒµä»¶åœ°å€",
29 "password.headline" : "é‡è¨­å¯†ç¢¼",
30 "password.link.login" : "登入您的帳號",
31 "password.link.signup" : "建立å…費帳號",
32 "password.noUser" : "找ä¸åˆ°è©²é›»å­éƒµä»¶åœ°å€çš„用戶",
33 "password.submit.label" : "é€å‡º",
34 "password.successInfo" : "請檢查您的電å­éƒµä»¶",
35 "pricing.headline" : "支æŒFranz",
36 "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒFranz的開發。",
37 "pricing.submit.label" : "我想支æŒFranz的開發。",
38 "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒçš„計畫",
39 "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}",
40 "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}",
41 "service.crashHandler.headline" : "噢ä¸!",
42 "service.crashHandler.text" : "{name}導致了一個錯誤。",
43 "service.disabledHandler.action" : "啟用{name}",
44 "service.disabledHandler.headline" : "{name}å·²åœç”¨",
45 "services.getStarted" : "開始",
46 "services.welcome" : "歡迎使用Franz",
47 "settings.account.account.editButton" : "編輯帳號",
48 "settings.account.accountType.basic" : "基礎帳號",
49 "settings.account.accountType.premium" : "高級支æŒè€…帳戶",
50 "settings.account.buttonSave" : "更新簡介",
51 "settings.account.deleteAccount" : "移除帳號",
52 "settings.account.deleteEmailSent" : "移除帳號之確èªé›»éƒµå·²é€å‡ºã€‚你的帳號åŠç›¸é—œè³‡æ–™å°‡ç„¡æ³•æ¢å¾©ï¼",
53 "settings.account.deleteInfo" : "如果ä¸å†éœ€è¦ä½ çš„帳號了,你å¯ä»¥åœ¨é€™è£¡åˆªé™¤å¸³è™Ÿå’Œç›¸é—œè³‡æ–™",
54 "settings.account.headline" : "帳號",
55 "settings.account.headlineAccount" : "帳戶資訊",
56 "settings.account.headlineDangerZone" : "å±éšªåœ°å¸¶",
57 "settings.account.headlineInvoices" : "帳單",
58 "settings.account.headlinePassword" : "變更密碼",
59 "settings.account.headlineProfile" : "更新簡介",
60 "settings.account.headlineSubscription" : "您的訂閱",
61 "settings.account.headlineUpgrade" : "å‡ç´šæ‚¨çš„帳戶&支æŒFranz",
62 "settings.account.invoiceDownload" : "下載",
63 "settings.account.manageSubscription.label" : "管ç†æ‚¨çš„訂閱",
64 "settings.account.mining.active" : "您ç¾åœ¨æ¯ç§’正在執行{hashes}計算。",
65 "settings.account.mining.cancel" : "å–消挖掘",
66 "settings.account.mining.moreInformation" : "å–得更多資訊",
67 "settings.account.mining.thankyou" : "æ„Ÿè¬ç”¨ä½ çš„處ç†èƒ½åŠ›æ”¯æŒFranz。",
68 "settings.account.successInfo" : "您的更變已經被儲存",
69 "settings.account.tryReloadUserInfoRequest" : "å†è©¦ä¸€æ¬¡",
70 "settings.account.userInfoRequestFailed" : "無法載入使用者資訊。",
71 "settings.app.buttonClearAllCache" : "Clear cache",
72 "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°",
73 "settings.app.buttonSearchForUpdate" : "檢查更新",
74 "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.",
75 "settings.app.currentVersion" : "ç›®å‰çš„版本",
76 "settings.app.form.autoLaunchInBackground" : "在背景開啟",
77 "settings.app.form.autoLaunchOnStart" : "開機時啟動Franz",
78 "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ",
79 "settings.app.form.enableSpellchecking" : "啟用拼字檢查",
80 "settings.app.form.enableSystemTray" : "顯示Franz在系統列",
81 "settings.app.form.language" : "語言",
82 "settings.app.form.minimizeToSystemTray" : "最å°åŒ–Franz到系統列",
83 "settings.app.form.runInBackground" : "當關閉視窗時ä¿æŒFranz在背景é‹ä½œ",
84 "settings.app.form.showDisabledServices" : "顯示åœç”¨çš„æœå‹™æ¨™ç±¤",
85 "settings.app.form.showMessagesBadgesWhenMuted" : "當通知關閉時,標記未讀的訊æ¯",
86 "settings.app.headline" : "設定",
87 "settings.app.headlineAdvanced" : "進階",
88 "settings.app.headlineAppearance" : "外觀",
89 "settings.app.headlineGeneral" : "一般",
90 "settings.app.headlineLanguage" : "語言",
91 "settings.app.headlineUpdates" : "æ›´æ–°",
92 "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®Š",
93 "settings.app.subheadlineCache" : "Cache",
94 "settings.app.translationHelp" : "幫助我們將Franz翻譯æˆæ‚¨çš„語言。",
95 "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸­...",
96 "settings.app.updateStatusSearching" : "正在æœå°‹æ›´æ–°",
97 "settings.app.updateStatusUpToDate" : "您正在使用最新版本的Franz",
98 "settings.navigation.account" : "帳號",
99 "settings.navigation.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™",
100 "settings.navigation.logout" : "登出",
101 "settings.navigation.settings" : "設定",
102 "settings.navigation.yourServices" : "您的æœå‹™",
103 "settings.recipes.all" : "所有æœå‹™",
104 "settings.recipes.dev" : "開發",
105 "settings.recipes.headline" : "å¯ä½¿ç”¨çš„æœå‹™",
106 "settings.recipes.missingService" : "缺少æœå‹™?",
107 "settings.recipes.mostPopular" : "最熱門",
108 "settings.recipes.nothingFound" : "很抱歉,沒有與您的æœå°‹å­—詞符åˆçš„æœå‹™",
109 "settings.recipes.servicesSuccessfulAddedInfo" : "æœå‹™å·²æˆåŠŸæ–°å¢žã€‚",
110 "settings.searchService" : "Search service",
111 "settings.service.error.goBack" : "返回æœå‹™",
112 "settings.service.error.headline" : "錯誤",
113 "settings.service.error.message" : "無法載入æœå‹™å‘½ä»¤ã€‚",
114 "settings.service.form.addServiceHeadline" : "新增{name}",
115 "settings.service.form.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™",
116 "settings.service.form.customUrl" : "自訂伺æœå™¨",
117 "settings.service.form.customUrlPremiumInfo" : "è¦æ·»åŠ è‡ªå·±è¨—管的æœå‹™ï¼Œæ‚¨éœ€è¦ä¸€å€‹Franz é¡å¤–支æŒè€…帳戶。",
118 "settings.service.form.customUrlUpgradeAccount" : "å‡ç´šæ‚¨çš„帳戶",
119 "settings.service.form.customUrlValidationError" : "無法驗證自定義{name}æœå‹™å™¨ã€‚",
120 "settings.service.form.deleteButton" : "刪除æœå‹™",
121 "settings.service.form.editServiceHeadline" : "編輯{å稱}",
122 "settings.service.form.enableAudio" : "啟用音訊",
123 "settings.service.form.enableBadge" : "Show unread message badges",
124 "settings.service.form.enableNotification" : "啟用通知",
125 "settings.service.form.enableService" : "啟用æœå‹™",
126 "settings.service.form.headlineBadges" : "Unread message badges",
127 "settings.service.form.headlineGeneral" : "一般",
128 "settings.service.form.headlineNotifications" : "Notifications",
129 "settings.service.form.icon" : "Custom icon",
130 "settings.service.form.iconDelete" : "Delete",
131 "settings.service.form.iconUpload" : "Drop your image, or click here",
132 "settings.service.form.indirectMessageInfo" : "您將收到有關頻é“中所有新消æ¯çš„通知,而ä¸åƒ…僅是@username,@channel,@here,...",
133 "settings.service.form.indirectMessages" : "顯示所有新消æ¯çš„消æ¯æ¨™èªŒ",
134 "settings.service.form.isMutedInfo" : "åœç”¨æ™‚,所有通知è²å’Œè²éŸ³æ’­æ”¾éƒ½å°‡éœéŸ³",
135 "settings.service.form.name" : "å稱",
136 "settings.service.form.saveButton" : "ä¿å­˜æœå‹™",
137 "settings.service.form.tabHosted" : "託管",
138 "settings.service.form.tabOnPremise" : "自我託管â­ï¸",
139 "settings.service.form.team" : "團隊",
140 "settings.service.form.useHostedService" : "Use the hosted {name} service.",
141 "settings.service.form.yourServices" : "您的æœå‹™",
142 "settings.services.deletedInfo" : "已刪除æœå‹™",
143 "settings.services.discoverServices" : "發ç¾æœå‹™",
144 "settings.services.headline" : "您的æœå‹™",
145 "settings.services.noServicesAdded" : "你尚未新增任何æœå‹™",
146 "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨",
147 "settings.services.tooltip.isMuted" : "所有的è²éŸ³éƒ½æ˜¯éœéŸ³",
148 "settings.services.tooltip.notificationsDisabled" : "通知已åœç”¨",
149 "settings.services.updatedInfo" : "你的更變已經儲存",
150 "settings.user.form.accountType.company" : "å…¬å¸",
151 "settings.user.form.accountType.individual" : "個人",
152 "settings.user.form.accountType.label" : "帳戶類型",
153 "settings.user.form.accountType.non-profit" : "éžç›ˆåˆ©",
154 "settings.user.form.currentPassword" : "ç›®å‰å¯†ç¢¼",
155 "settings.user.form.email" : "é›»å­éƒµä»¶",
156 "settings.user.form.firstname" : "å",
157 "settings.user.form.lastname" : "姓",
158 "settings.user.form.newPassword" : "新密碼",
159 "sidebar.addNewService" : "新增新的æœå‹™",
160 "sidebar.muteApp" : "關閉通知和通知音效",
161 "sidebar.settings" : "設定",
162 "sidebar.unmuteApp" : "開啟通知和通知音效",
163 "signup.company.label" : "å…¬å¸",
164 "signup.email.label" : "é›»å­éƒµä»¶åœ°å€",
165 "signup.emailDuplicate" : "該使用者的電å­éƒµä»¶ä½å€å·²å­˜åœ¨",
166 "signup.firstname.label" : "å",
167 "signup.headline" : "註冊",
168 "signup.lastname.label" : "姓",
169 "signup.legal.info" : "你接å—é€éŽå‰µå»ºä¸€å€‹Franz帳戶",
170 "signup.legal.privacy" : "éš±ç§è²æ˜Ž",
171 "signup.legal.terms" : "æœå‹™æ¢æ¬¾",
172 "signup.link.login" : "已經有一個帳戶,登入?",
173 "signup.password.label" : "密碼",
174 "signup.submit.label" : "建立帳號",
175 "subscription.euTaxInfo" : "æ­ç›Ÿå±…民:å¯èƒ½æŽ¡ç”¨ç•¶åœ°éŠ·å”®ç¨…",
176 "subscription.features.ads" : "無廣告,永é !",
177 "subscription.features.comingSoon" : "å³å°‡æŽ¨å‡º",
178 "subscription.features.customServices" : "為您和您的團隊æä¾›ç§äººæœå‹™",
179 "subscription.features.encryptedSync" : "加密的會話åŒæ­¥",
180 "subscription.features.onpremise" : "添加本地\/託管æœå‹™å¦‚HipChat",
181 "subscription.features.vpn" : "代ç†å’ŒVPN支æŒ",
182 "subscription.includedFeatures" : "包å«é«˜ç´šFranz付費帳戶",
183 "subscription.mining.experimental" : "實驗性",
184 "subscription.mining.headline" : "這是怎麼é‹ä½œçš„?",
185 "subscription.mining.line1" : "é€éŽå•Ÿç”¨ã€Œå…·æœ‰è™•ç†èƒ½åŠ›çš„支æ´ã€ï¼ŒFranz將使用大約20-50%çš„CPU來挖掘加密貨幣Monero,大約相當於æ¯å¹´5美元。",
186 "subscription.mining.line2" : "我們將根據您的使用情形調整CPU使用率,以é¿å…耗盡電池,é™ä½Žæ‚¨å’Œæ©Ÿå™¨çš„性能。",
187 "subscription.mining.line3" : "åªè¦ç¤¦å·¥è™•æ–¼æ´»å‹•ç‹€æ…‹ï¼Œæ‚¨å°±å¯ä»¥ç„¡é™åˆ¶åœ°ä½¿ç”¨æ‰€æœ‰çš„Franz 高級支æŒè€…的功能。",
188 "subscription.mining.moreInformation" : "å–得有關此計劃的更多資訊。",
189 "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單",
190 "subscription.submit.label" : "我想支æŒFranz的開發",
191 "subscription.type.free" : "自由",
192 "subscription.type.mining" : "用進程處ç†æ¬Šé™æ”¯æŒFranz",
193 "subscription.type.month" : "月",
194 "subscription.type.year" : "å¹´",
195 "subscriptionPopup.buttonCancel" : "å–消",
196 "subscriptionPopup.buttonDone" : "完æˆ",
197 "tabs.item.deleteService" : "刪除æœå‹™",
198 "tabs.item.disableAudio" : "åœç”¨éŸ³è¨Š",
199 "tabs.item.disableNotifications" : "åœç”¨é€šçŸ¥",
200 "tabs.item.disableService" : "關閉æœå‹™",
201 "tabs.item.edit" : "編輯",
202 "tabs.item.enableAudio" : "啟用音訊",
203 "tabs.item.enableNotification" : "啟用通知",
204 "tabs.item.enableService" : "啟用æœå‹™",
205 "tabs.item.reload" : "é‡æ–°è¼‰å…¥",
206 "welcome.loginButton" : "登入您的帳戶",
207 "welcome.signupButton" : "建立å…費帳號",
208 "welcome.slogan" : "為你通信"
209}
diff --git a/src/index.html b/src/index.html
index 05a93e37b..9e5acd705 100644
--- a/src/index.html
+++ b/src/index.html
@@ -23,6 +23,24 @@
23 s.async = true; 23 s.async = true;
24 s.setAttribute('src', lrHost + '/livereload.js'); 24 s.setAttribute('src', lrHost + '/livereload.js');
25 document.body.appendChild(s); 25 document.body.appendChild(s);
26
27 s.onload = () => {
28 console.log('livereload loaded');
29 const originalReloadBehaviour = window._onLiveReloadFileChanged;
30
31 window._onLiveReloadFileChanged = (file) => {
32 if (!file.path.includes('/build/webview/') && !file.path.includes('/build/index.js') && !file.path.includes('/build/electron/')) {
33 originalReloadBehaviour(file);
34 } else {
35 if (file.path.includes('/build/webview/')) {
36 console.log('Livereload: Reloading all webvies');
37 const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload());
38 } else {
39 console.log('Livereload: skip reload as only main process files have changed');
40 }
41 }
42 }
43 }
26 })(); 44 })();
27 } 45 }
28 </script> 46 </script>
diff --git a/src/index.js b/src/index.js
index 6a08e5e5a..f82bb3590 100644
--- a/src/index.js
+++ b/src/index.js
@@ -8,6 +8,7 @@ import { isDevMode, isWindows } from './environment';
8import ipcApi from './electron/ipc-api'; 8import ipcApi from './electron/ipc-api';
9import Tray from './lib/Tray'; 9import Tray from './lib/Tray';
10import Settings from './electron/Settings'; 10import Settings from './electron/Settings';
11import handleDeepLink from './electron/deepLinking';
11import { appId } from './package.json'; // eslint-disable-line import/no-unresolved 12import { appId } from './package.json'; // eslint-disable-line import/no-unresolved
12import './electron/exception'; 13import './electron/exception';
13 14
@@ -26,14 +27,24 @@ if (isWindows) {
26} 27}
27 28
28// Force single window 29// Force single window
29const isSecondInstance = app.makeSingleInstance(() => { 30const isSecondInstance = app.makeSingleInstance((argv) => {
30 if (mainWindow) { 31 if (mainWindow) {
31 if (mainWindow.isMinimized()) mainWindow.restore(); 32 if (mainWindow.isMinimized()) mainWindow.restore();
32 mainWindow.focus(); 33 mainWindow.focus();
34
35 if (process.platform === 'win32') {
36 // Keep only command line / deep linked arguments
37 const url = argv.slice(1);
38
39 if (url) {
40 handleDeepLink(mainWindow, url.toString());
41 }
42 }
33 } 43 }
34}); 44});
35 45
36if (isSecondInstance) { 46if (isSecondInstance) {
47 console.log('An instance of Franz is already running. Exiting...');
37 app.exit(); 48 app.exit();
38} 49}
39 50
@@ -176,3 +187,15 @@ app.on('activate', () => {
176 mainWindow.show(); 187 mainWindow.show();
177 } 188 }
178}); 189});
190
191app.on('will-finish-launching', () => {
192 // Protocol handler for osx
193 app.on('open-url', (event, url) => {
194 event.preventDefault();
195 console.log(`open-url event: ${url}`);
196 handleDeepLink(mainWindow, url);
197 });
198});
199
200// Register App URL
201app.setAsDefaultProtocolClient('franz');
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 6624ab75e..d01666d49 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -167,7 +167,7 @@ export default class FranzMenu {
167 label: 'Settings', 167 label: 'Settings',
168 accelerator: 'CmdOrCtrl+,', 168 accelerator: 'CmdOrCtrl+,',
169 click: () => { 169 click: () => {
170 this.actions.ui.openSettings({ path: '' }); 170 this.actions.ui.openSettings({ path: 'app' });
171 }, 171 },
172 }, 172 },
173 { 173 {
@@ -249,7 +249,7 @@ export default class FranzMenu {
249 } 249 }
250 250
251 @computed get serviceTpl() { 251 @computed get serviceTpl() {
252 const services = this.stores.services.enabled; 252 const services = this.stores.services.allDisplayed;
253 253
254 if (this.stores.user.isLoggedIn) { 254 if (this.stores.user.isLoggedIn) {
255 return services.map((service, i) => ({ 255 return services.map((service, i) => ({
diff --git a/src/models/Recipe.js b/src/models/Recipe.js
index 9971df77c..1fc23ac89 100644
--- a/src/models/Recipe.js
+++ b/src/models/Recipe.js
@@ -1,10 +1,11 @@
1import emailParser from 'address-rfc2822'; 1import emailParser from 'address-rfc2822';
2import semver from 'semver';
2 3
3export default class Recipe { 4export default class Recipe {
4 id = ''; 5 id = '';
5 name = ''; 6 name = '';
6 description = ''; 7 description = '';
7 version = '1.0'; 8 version = '';
8 path = ''; 9 path = '';
9 10
10 serviceURL = ''; 11 serviceURL = '';
@@ -15,6 +16,7 @@ export default class Recipe {
15 hasTeamId = false; 16 hasTeamId = false;
16 hasPredefinedUrl = false; 17 hasPredefinedUrl = false;
17 hasCustomUrl = false; 18 hasCustomUrl = false;
19 hasHostedOption = false;
18 urlInputPrefix = ''; 20 urlInputPrefix = '';
19 urlInputSuffix = ''; 21 urlInputSuffix = '';
20 22
@@ -30,6 +32,10 @@ export default class Recipe {
30 throw Error(`Recipe '${data.name}' requires Id`); 32 throw Error(`Recipe '${data.name}' requires Id`);
31 } 33 }
32 34
35 if (!semver.valid(data.version)) {
36 throw Error(`Version ${data.version} of recipe '${data.name}' is not a valid semver version`);
37 }
38
33 this.id = data.id || this.id; 39 this.id = data.id || this.id;
34 this.name = data.name || this.name; 40 this.name = data.name || this.name;
35 this.rawAuthor = data.author || this.author; 41 this.rawAuthor = data.author || this.author;
@@ -45,6 +51,7 @@ export default class Recipe {
45 this.hasTeamId = data.config.hasTeamId || this.hasTeamId; 51 this.hasTeamId = data.config.hasTeamId || this.hasTeamId;
46 this.hasPredefinedUrl = data.config.hasPredefinedUrl || this.hasPredefinedUrl; 52 this.hasPredefinedUrl = data.config.hasPredefinedUrl || this.hasPredefinedUrl;
47 this.hasCustomUrl = data.config.hasCustomUrl || this.hasCustomUrl; 53 this.hasCustomUrl = data.config.hasCustomUrl || this.hasCustomUrl;
54 this.hasHostedOption = data.config.hasHostedOption || this.hasHostedOption;
48 55
49 this.urlInputPrefix = data.config.urlInputPrefix || this.urlInputPrefix; 56 this.urlInputPrefix = data.config.urlInputPrefix || this.urlInputPrefix;
50 this.urlInputSuffix = data.config.urlInputSuffix || this.urlInputSuffix; 57 this.urlInputSuffix = data.config.urlInputSuffix || this.urlInputSuffix;
diff --git a/src/models/Service.js b/src/models/Service.js
index 958e4b11e..423510c7d 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -22,8 +22,10 @@ export default class Service {
22 @observable team = ''; 22 @observable team = '';
23 @observable customUrl = ''; 23 @observable customUrl = '';
24 @observable isNotificationEnabled = true; 24 @observable isNotificationEnabled = true;
25 @observable isBadgeEnabled = true;
25 @observable isIndirectMessageBadgeEnabled = true; 26 @observable isIndirectMessageBadgeEnabled = true;
26 @observable customIconUrl = ''; 27 @observable iconUrl = '';
28 @observable hasCustomUploadedIcon = false;
27 @observable hasCrashed = false; 29 @observable hasCrashed = false;
28 30
29 constructor(data, recipe) { 31 constructor(data, recipe) {
@@ -41,7 +43,8 @@ export default class Service {
41 this.name = data.name || this.name; 43 this.name = data.name || this.name;
42 this.team = data.team || this.team; 44 this.team = data.team || this.team;
43 this.customUrl = data.customUrl || this.customUrl; 45 this.customUrl = data.customUrl || this.customUrl;
44 this.customIconUrl = data.customIconUrl || this.customIconUrl; 46 // this.customIconUrl = data.customIconUrl || this.customIconUrl;
47 this.iconUrl = data.iconUrl || this.iconUrl;
45 48
46 this.order = data.order !== undefined 49 this.order = data.order !== undefined
47 ? data.order : this.order; 50 ? data.order : this.order;
@@ -52,11 +55,16 @@ export default class Service {
52 this.isNotificationEnabled = data.isNotificationEnabled !== undefined 55 this.isNotificationEnabled = data.isNotificationEnabled !== undefined
53 ? data.isNotificationEnabled : this.isNotificationEnabled; 56 ? data.isNotificationEnabled : this.isNotificationEnabled;
54 57
58 this.isBadgeEnabled = data.isBadgeEnabled !== undefined
59 ? data.isBadgeEnabled : this.isBadgeEnabled;
60
55 this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined 61 this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined
56 ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; 62 ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled;
57 63
58 this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted; 64 this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted;
59 65
66 this.hasCustomUploadedIcon = data.hasCustomIcon !== undefined ? data.hasCustomIcon : this.hasCustomUploadedIcon;
67
60 this.recipe = recipe; 68 this.recipe = recipe;
61 69
62 autorun(() => { 70 autorun(() => {
@@ -93,15 +101,15 @@ export default class Service {
93 } 101 }
94 102
95 @computed get icon() { 103 @computed get icon() {
96 if (this.hasCustomIcon) { 104 if (this.iconUrl) {
97 return this.customIconUrl; 105 return this.iconUrl;
98 } 106 }
99 107
100 return path.join(this.recipe.path, 'icon.svg'); 108 return path.join(this.recipe.path, 'icon.svg');
101 } 109 }
102 110
103 @computed get hasCustomIcon() { 111 @computed get hasCustomIcon() {
104 return (this.customIconUrl !== ''); 112 return Boolean(this.iconUrl);
105 } 113 }
106 114
107 @computed get iconPNG() { 115 @computed get iconPNG() {
diff --git a/src/models/Settings.js b/src/models/Settings.js
index 3b352f9aa..ca44da258 100644
--- a/src/models/Settings.js
+++ b/src/models/Settings.js
@@ -1,4 +1,4 @@
1import { observable } from 'mobx'; 1import { observable, extendObservable } from 'mobx';
2import { DEFAULT_APP_SETTINGS } from '../config'; 2import { DEFAULT_APP_SETTINGS } from '../config';
3 3
4export default class Settings { 4export default class Settings {
@@ -8,6 +8,7 @@ export default class Settings {
8 @observable enableSystemTray = DEFAULT_APP_SETTINGS.enableSystemTray; 8 @observable enableSystemTray = DEFAULT_APP_SETTINGS.enableSystemTray;
9 @observable minimizeToSystemTray = DEFAULT_APP_SETTINGS.minimizeToSystemTray; 9 @observable minimizeToSystemTray = DEFAULT_APP_SETTINGS.minimizeToSystemTray;
10 @observable showDisabledServices = DEFAULT_APP_SETTINGS.showDisabledServices; 10 @observable showDisabledServices = DEFAULT_APP_SETTINGS.showDisabledServices;
11 @observable showMessageBadgeWhenMuted = DEFAULT_APP_SETTINGS.showMessageBadgeWhenMuted;
11 @observable enableSpellchecking = DEFAULT_APP_SETTINGS.enableSpellchecking; 12 @observable enableSpellchecking = DEFAULT_APP_SETTINGS.enableSpellchecking;
12 @observable locale = DEFAULT_APP_SETTINGS.locale; 13 @observable locale = DEFAULT_APP_SETTINGS.locale;
13 @observable beta = DEFAULT_APP_SETTINGS.beta; 14 @observable beta = DEFAULT_APP_SETTINGS.beta;
@@ -16,4 +17,8 @@ export default class Settings {
16 constructor(data) { 17 constructor(data) {
17 Object.assign(this, data); 18 Object.assign(this, data);
18 } 19 }
20
21 update(data) {
22 extendObservable(this, data);
23 }
19} 24}
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 0b7c60bce..e33f50f05 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -1,10 +1,11 @@
1import { remote, ipcRenderer, shell } from 'electron'; 1import { remote, ipcRenderer, shell } from 'electron';
2import { action, observable } from 'mobx'; 2import { action, computed, observable } from 'mobx';
3import moment from 'moment'; 3import moment from 'moment';
4import key from 'keymaster'; 4import key from 'keymaster';
5import { getDoNotDisturb } from '@meetfranz/electron-notification-state'; 5import { getDoNotDisturb } from '@meetfranz/electron-notification-state';
6import idleTimer from '@paulcbetts/system-idle-time'; 6import idleTimer from '@paulcbetts/system-idle-time';
7import AutoLaunch from 'auto-launch'; 7import AutoLaunch from 'auto-launch';
8import prettyBytes from 'pretty-bytes';
8 9
9import Store from './lib/Store'; 10import Store from './lib/Store';
10import Request from './lib/Request'; 11import Request from './lib/Request';
@@ -14,7 +15,10 @@ import locales from '../i18n/translations';
14import { gaEvent } from '../lib/analytics'; 15import { gaEvent } from '../lib/analytics';
15import Miner from '../lib/Miner'; 16import Miner from '../lib/Miner';
16 17
17const { app, powerMonitor } = remote; 18import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js';
19
20const { app } = remote;
21
18const defaultLocale = DEFAULT_APP_SETTINGS.locale; 22const defaultLocale = DEFAULT_APP_SETTINGS.locale;
19const autoLauncher = new AutoLaunch({ 23const autoLauncher = new AutoLaunch({
20 name: 'Franz', 24 name: 'Franz',
@@ -30,6 +34,8 @@ export default class AppStore extends Store {
30 }; 34 };
31 35
32 @observable healthCheckRequest = new Request(this.api.app, 'health'); 36 @observable healthCheckRequest = new Request(this.api.app, 'health');
37 @observable getAppCacheSizeRequest = new Request(this.api.local, 'getAppCacheSize');
38 @observable clearAppCacheRequest = new Request(this.api.local, 'clearAppCache');
33 39
34 @observable autoLaunchOnStart = true; 40 @observable autoLaunchOnStart = true;
35 41
@@ -45,7 +51,9 @@ export default class AppStore extends Store {
45 miner = null; 51 miner = null;
46 @observable minerHashrate = 0.0; 52 @observable minerHashrate = 0.0;
47 53
48 @observable isSystemMuted = false; 54 @observable isSystemMuteOverridden = false;
55
56 @observable isClearingAllCache = false;
49 57
50 constructor(...args) { 58 constructor(...args) {
51 super(...args); 59 super(...args);
@@ -61,12 +69,14 @@ export default class AppStore extends Store {
61 this.actions.app.healthCheck.listen(this._healthCheck.bind(this)); 69 this.actions.app.healthCheck.listen(this._healthCheck.bind(this));
62 this.actions.app.muteApp.listen(this._muteApp.bind(this)); 70 this.actions.app.muteApp.listen(this._muteApp.bind(this));
63 this.actions.app.toggleMuteApp.listen(this._toggleMuteApp.bind(this)); 71 this.actions.app.toggleMuteApp.listen(this._toggleMuteApp.bind(this));
72 this.actions.app.clearAllCache.listen(this._clearAllCache.bind(this));
64 73
65 this.registerReactions([ 74 this.registerReactions([
66 this._offlineCheck.bind(this), 75 this._offlineCheck.bind(this),
67 this._setLocale.bind(this), 76 this._setLocale.bind(this),
68 this._handleMiner.bind(this), 77 this._handleMiner.bind(this),
69 this._handleMinerThrottle.bind(this), 78 this._handleMinerThrottle.bind(this),
79 this._muteAppHandler.bind(this),
70 ]); 80 ]);
71 } 81 }
72 82
@@ -115,15 +125,31 @@ export default class AppStore extends Store {
115 } 125 }
116 }); 126 });
117 127
128 // Handle deep linking (franz://)
129 ipcRenderer.on('navigateFromDeepLink', (event, data) => {
130 const { url } = data;
131 if (!url) return;
132
133 this.stores.router.push(data.url);
134 });
135
136 const TIMEOUT = 5000;
118 // Check system idle time every minute 137 // Check system idle time every minute
119 setInterval(() => { 138 setInterval(() => {
120 this.idleTime = idleTimer.getIdleTime(); 139 this.idleTime = idleTimer.getIdleTime();
121 }, 60000); 140 }, TIMEOUT);
122 141
123 // Reload all services after a healthy nap 142 // Reload all services after a healthy nap
124 powerMonitor.on('resume', () => { 143 // Alternative solution for powerMonitor as the resume event is not fired
125 setTimeout(window.location.reload, 5000); 144 // More information: https://github.com/electron/electron/issues/1615
126 }); 145 let lastTime = (new Date()).getTime();
146 setInterval(() => {
147 const currentTime = (new Date()).getTime();
148 if (currentTime > (lastTime + TIMEOUT + 2000)) {
149 this._reactivateServices();
150 }
151 lastTime = currentTime;
152 }, TIMEOUT);
127 153
128 // Set active the next service 154 // Set active the next service
129 key( 155 key(
@@ -137,7 +163,7 @@ export default class AppStore extends Store {
137 this.actions.service.setActivePrev(); 163 this.actions.service.setActivePrev();
138 }); 164 });
139 165
140 // Global Mute 166 // Global Mute
141 key( 167 key(
142 '⌘+shift+m ctrl+shift+m', () => { 168 '⌘+shift+m ctrl+shift+m', () => {
143 this.actions.app.toggleMuteApp(); 169 this.actions.app.toggleMuteApp();
@@ -148,8 +174,14 @@ export default class AppStore extends Store {
148 this._healthCheck(); 174 this._healthCheck();
149 } 175 }
150 176
177 @computed get cacheSize() {
178 return prettyBytes(this.getAppCacheSizeRequest.execute().result || 0);
179 }
180
151 // Actions 181 // Actions
152 @action _notify({ title, options, notificationId, serviceId = null }) { 182 @action _notify({ title, options, notificationId, serviceId = null }) {
183 if (this.stores.settings.all.isAppMuted) return;
184
153 const notification = new window.Notification(title, options); 185 const notification = new window.Notification(title, options);
154 notification.onclick = (e) => { 186 notification.onclick = (e) => {
155 if (serviceId) { 187 if (serviceId) {
@@ -160,6 +192,11 @@ export default class AppStore extends Store {
160 }); 192 });
161 193
162 this.actions.service.setActive({ serviceId }); 194 this.actions.service.setActive({ serviceId });
195
196 if (!isMac) {
197 const mainWindow = remote.getCurrentWindow();
198 mainWindow.restore();
199 }
163 } 200 }
164 }; 201 };
165 } 202 }
@@ -217,7 +254,9 @@ export default class AppStore extends Store {
217 this.healthCheckRequest.execute(); 254 this.healthCheckRequest.execute();
218 } 255 }
219 256
220 @action _muteApp({ isMuted }) { 257 @action _muteApp({ isMuted, overrideSystemMute = true }) {
258 this.isSystemMuteOverriden = overrideSystemMute;
259
221 this.actions.settings.update({ 260 this.actions.settings.update({
222 settings: { 261 settings: {
223 isAppMuted: isMuted, 262 isAppMuted: isMuted,
@@ -229,6 +268,23 @@ export default class AppStore extends Store {
229 this._muteApp({ isMuted: !this.stores.settings.all.isAppMuted }); 268 this._muteApp({ isMuted: !this.stores.settings.all.isAppMuted });
230 } 269 }
231 270
271 @action async _clearAllCache() {
272 this.isClearingAllCache = true;
273 const clearAppCache = this.clearAppCacheRequest.execute();
274 const allServiceIds = await getServiceIdsFromPartitions();
275 const allOrphanedServiceIds = allServiceIds.filter(id => !this.stores.services.all.find(s => id.replace('service-', '') === s.id));
276
277 await Promise.all(allOrphanedServiceIds.map(id => removeServicePartitionDirectory(id)));
278
279 await Promise.all(this.stores.services.all.map(s => this.actions.service.clearCache({ serviceId: s.id })));
280
281 await clearAppCache._promise;
282
283 this.getAppCacheSizeRequest.execute();
284
285 this.isClearingAllCache = false;
286 }
287
232 // Reactions 288 // Reactions
233 _offlineCheck() { 289 _offlineCheck() {
234 if (!this.isOnline) { 290 if (!this.isOnline) {
@@ -245,8 +301,10 @@ export default class AppStore extends Store {
245 _setLocale() { 301 _setLocale() {
246 const locale = this.stores.settings.all.locale; 302 const locale = this.stores.settings.all.locale;
247 303
248 if (locale && locale !== this.locale) { 304 if (locale && Object.prototype.hasOwnProperty.call(locales, locale) && locale !== this.locale) {
249 this.locale = locale; 305 this.locale = locale;
306 } else if (!locale) {
307 this.locale = this._getDefaultLocale();
250 } 308 }
251 } 309 }
252 310
@@ -271,6 +329,10 @@ export default class AppStore extends Store {
271 locale = defaultLocale; 329 locale = defaultLocale;
272 } 330 }
273 331
332 if (!locale) {
333 locale = DEFAULT_APP_SETTINGS.fallbackLocale;
334 }
335
274 return locale; 336 return locale;
275 } 337 }
276 338
@@ -296,6 +358,14 @@ export default class AppStore extends Store {
296 } 358 }
297 } 359 }
298 360
361 _muteAppHandler() {
362 const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted;
363
364 if (!showMessageBadgesEvenWhenMuted) {
365 this.actions.app.setBadge({ unreadDirectMessageCount: 0, unreadIndirectMessageCount: 0 });
366 }
367 }
368
299 // Helpers 369 // Helpers
300 async _appStartsCounter() { 370 async _appStartsCounter() {
301 // we need to wait until the settings request is resolved 371 // we need to wait until the settings request is resolved
@@ -325,7 +395,23 @@ export default class AppStore extends Store {
325 return autoLauncher.isEnabled() || false; 395 return autoLauncher.isEnabled() || false;
326 } 396 }
327 397
398 _reactivateServices(retryCount = 0) {
399 if (!this.isOnline) {
400 console.debug('reactivateServices: computer is offline, trying again in 5s, retries:', retryCount);
401 setTimeout(() => this._reactivateServices(retryCount + 1), 5000);
402 } else {
403 console.debug('reactivateServices: reload all services');
404 this.actions.service.reloadAll();
405 }
406 }
407
328 _systemDND() { 408 _systemDND() {
329 this.isSystemMuted = getDoNotDisturb(); 409 const dnd = getDoNotDisturb();
410 if (dnd === this.stores.settings.all.isAppMuted || !this.isSystemMuteOverriden) {
411 this.actions.app.muteApp({
412 isMuted: dnd,
413 overrideSystemMute: false,
414 });
415 }
330 } 416 }
331} 417}
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 22c376c06..20e07e540 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -16,6 +16,7 @@ export default class ServicesStore extends Store {
16 @observable updateServiceRequest = new Request(this.api.services, 'update'); 16 @observable updateServiceRequest = new Request(this.api.services, 'update');
17 @observable reorderServicesRequest = new Request(this.api.services, 'reorder'); 17 @observable reorderServicesRequest = new Request(this.api.services, 'reorder');
18 @observable deleteServiceRequest = new Request(this.api.services, 'delete'); 18 @observable deleteServiceRequest = new Request(this.api.services, 'delete');
19 @observable clearCacheRequest = new Request(this.api.services, 'clearCache');
19 20
20 @observable filterNeedle = null; 21 @observable filterNeedle = null;
21 22
@@ -31,6 +32,7 @@ export default class ServicesStore extends Store {
31 this.actions.service.createFromLegacyService.listen(this._createFromLegacyService.bind(this)); 32 this.actions.service.createFromLegacyService.listen(this._createFromLegacyService.bind(this));
32 this.actions.service.updateService.listen(this._updateService.bind(this)); 33 this.actions.service.updateService.listen(this._updateService.bind(this));
33 this.actions.service.deleteService.listen(this._deleteService.bind(this)); 34 this.actions.service.deleteService.listen(this._deleteService.bind(this));
35 this.actions.service.clearCache.listen(this._clearCache.bind(this));
34 this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this)); 36 this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this));
35 this.actions.service.focusService.listen(this._focusService.bind(this)); 37 this.actions.service.focusService.listen(this._focusService.bind(this));
36 this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this)); 38 this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this));
@@ -172,9 +174,29 @@ export default class ServicesStore extends Store {
172 const data = this._cleanUpTeamIdAndCustomUrl(service.recipe.id, serviceData); 174 const data = this._cleanUpTeamIdAndCustomUrl(service.recipe.id, serviceData);
173 const request = this.updateServiceRequest.execute(serviceId, data); 175 const request = this.updateServiceRequest.execute(serviceId, data);
174 176
177 const newData = serviceData;
178 if (serviceData.iconFile) {
179 await request._promise;
180
181 newData.iconUrl = request.result.data.iconUrl;
182 newData.hasCustomUploadedIcon = true;
183 }
184
175 this.allServicesRequest.patch((result) => { 185 this.allServicesRequest.patch((result) => {
176 if (!result) return; 186 if (!result) return;
177 Object.assign(result.find(c => c.id === serviceId), serviceData); 187
188 // patch custom icon deletion
189 if (data.customIcon === 'delete') {
190 newData.iconUrl = '';
191 newData.hasCustomUploadedIcon = false;
192 }
193
194 // patch custom icon url
195 if (data.customIconUrl) {
196 newData.iconUrl = data.customIconUrl;
197 }
198
199 Object.assign(result.find(c => c.id === serviceId), newData);
178 }); 200 });
179 201
180 await request._promise; 202 await request._promise;
@@ -205,6 +227,13 @@ export default class ServicesStore extends Store {
205 gaEvent('Service', 'delete', service.recipe.id); 227 gaEvent('Service', 'delete', service.recipe.id);
206 } 228 }
207 229
230 @action async _clearCache({ serviceId }) {
231 this.clearCacheRequest.reset();
232 const request = this.clearCacheRequest.execute(serviceId);
233 await request._promise;
234 gaEvent('Service', 'clear cache');
235 }
236
208 @action _setActive({ serviceId }) { 237 @action _setActive({ serviceId }) {
209 const service = this.one(serviceId); 238 const service = this.one(serviceId);
210 239
@@ -297,7 +326,7 @@ export default class ServicesStore extends Store {
297 }); 326 });
298 } else if (channel === 'notification') { 327 } else if (channel === 'notification') {
299 const options = args[0].options; 328 const options = args[0].options;
300 if (service.recipe.hasNotificationSound || service.isMuted) { 329 if (service.recipe.hasNotificationSound || service.isMuted || this.stores.settings.all.isAppMuted) {
301 Object.assign(options, { 330 Object.assign(options, {
302 silent: true, 331 silent: true,
303 }); 332 });
@@ -316,7 +345,7 @@ export default class ServicesStore extends Store {
316 } 345 }
317 } else if (channel === 'avatar') { 346 } else if (channel === 'avatar') {
318 const url = args[0]; 347 const url = args[0];
319 if (service.customIconUrl !== url) { 348 if (service.iconUrl !== url && !service.hasCustomUploadedIcon) {
320 service.customIconUrl = url; 349 service.customIconUrl = url;
321 350
322 this.actions.service.updateService({ 351 this.actions.service.updateService({
@@ -327,6 +356,10 @@ export default class ServicesStore extends Store {
327 redirect: false, 356 redirect: false,
328 }); 357 });
329 } 358 }
359 } else if (channel === 'new-window') {
360 const url = args[0];
361
362 this.actions.app.openExternalUrl({ url });
330 } 363 }
331 } 364 }
332 365
@@ -368,7 +401,7 @@ export default class ServicesStore extends Store {
368 const service = this.one(serviceId); 401 const service = this.one(serviceId);
369 service.resetMessageCount(); 402 service.resetMessageCount();
370 403
371 service.webview.reload(); 404 service.webview.loadURL(service.url);
372 } 405 }
373 406
374 @action _reloadActive() { 407 @action _reloadActive() {
@@ -488,19 +521,27 @@ export default class ServicesStore extends Store {
488 } 521 }
489 522
490 _getUnreadMessageCountReaction() { 523 _getUnreadMessageCountReaction() {
491 const unreadDirectMessageCount = this.enabled 524 const showMessageBadgeWhenMuted = this.stores.settings.all.showMessageBadgeWhenMuted;
525 const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted;
526
527 const unreadDirectMessageCount = this.allDisplayed
528 .filter(s => (showMessageBadgeWhenMuted || s.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && s.isBadgeEnabled)
492 .map(s => s.unreadDirectMessageCount) 529 .map(s => s.unreadDirectMessageCount)
493 .reduce((a, b) => a + b, 0); 530 .reduce((a, b) => a + b, 0);
494 531
495 const unreadIndirectMessageCount = this.enabled 532 const unreadIndirectMessageCount = this.allDisplayed
496 .filter(s => s.isIndirectMessageBadgeEnabled) 533 .filter(s => (showMessageBadgeWhenMuted && showMessageBadgesEvenWhenMuted) && (s.isBadgeEnabled && s.isIndirectMessageBadgeEnabled))
497 .map(s => s.unreadIndirectMessageCount) 534 .map(s => s.unreadIndirectMessageCount)
498 .reduce((a, b) => a + b, 0); 535 .reduce((a, b) => a + b, 0);
499 536
500 this.actions.app.setBadge({ 537 // We can't just block this earlier, otherwise the mobx reaction won't be aware of the vars to watch in some cases
501 unreadDirectMessageCount, 538 if (showMessageBadgesEvenWhenMuted) {
502 unreadIndirectMessageCount, 539 console.log('set badge', unreadDirectMessageCount, unreadIndirectMessageCount);
503 }); 540 this.actions.app.setBadge({
541 unreadDirectMessageCount,
542 unreadIndirectMessageCount,
543 });
544 }
504 } 545 }
505 546
506 _logoutReaction() { 547 _logoutReaction() {
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index 30058f41d..da99a720f 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -5,6 +5,7 @@ import Store from './lib/Store';
5import Request from './lib/Request'; 5import Request from './lib/Request';
6import CachedRequest from './lib/CachedRequest'; 6import CachedRequest from './lib/CachedRequest';
7import { gaEvent } from '../lib/analytics'; 7import { gaEvent } from '../lib/analytics';
8import SettingsModel from '../models/Settings';
8 9
9export default class SettingsStore extends Store { 10export default class SettingsStore extends Store {
10 @observable allSettingsRequest = new CachedRequest(this.api.local, 'getSettings'); 11 @observable allSettingsRequest = new CachedRequest(this.api.local, 'getSettings');
@@ -25,7 +26,7 @@ export default class SettingsStore extends Store {
25 } 26 }
26 27
27 @computed get all() { 28 @computed get all() {
28 return this.allSettingsRequest.result || {}; 29 return new SettingsModel(this.allSettingsRequest.result);
29 } 30 }
30 31
31 @action async _update({ settings }) { 32 @action async _update({ settings }) {
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js
index cb45b88b5..5e9cc9ba7 100644
--- a/src/stores/UIStore.js
+++ b/src/stores/UIStore.js
@@ -1,4 +1,4 @@
1import { action, observable } from 'mobx'; 1import { action, observable, computed } from 'mobx';
2 2
3import Store from './lib/Store'; 3import Store from './lib/Store';
4 4
@@ -14,6 +14,12 @@ export default class UIStore extends Store {
14 this.actions.ui.toggleServiceUpdatedInfoBar.listen(this._toggleServiceUpdatedInfoBar.bind(this)); 14 this.actions.ui.toggleServiceUpdatedInfoBar.listen(this._toggleServiceUpdatedInfoBar.bind(this));
15 } 15 }
16 16
17 @computed get showMessageBadgesEvenWhenMuted() {
18 const settings = this.stores.settings.all;
19
20 return (settings.isAppMuted && settings.showMessageBadgeWhenMuted) || !settings.isAppMuted;
21 }
22
17 // Actions 23 // Actions
18 @action _openSettings({ path = '/settings' }) { 24 @action _openSettings({ path = '/settings' }) {
19 const settingsPath = path !== '/settings' ? `/settings/${path}` : path; 25 const settingsPath = path !== '/settings' ? `/settings/${path}` : path;
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 1cb2ecac3..09000dcdb 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -26,6 +26,7 @@ export default class UserStore extends Store {
26 @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo'); 26 @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo');
27 @observable updateUserInfoRequest = new Request(this.api.user, 'updateInfo'); 27 @observable updateUserInfoRequest = new Request(this.api.user, 'updateInfo');
28 @observable getLegacyServicesRequest = new CachedRequest(this.api.user, 'getLegacyServices'); 28 @observable getLegacyServicesRequest = new CachedRequest(this.api.user, 'getLegacyServices');
29 @observable deleteAccountRequest = new CachedRequest(this.api.user, 'delete');
29 30
30 @observable isImportLegacyServicesExecuting = false; 31 @observable isImportLegacyServicesExecuting = false;
31 @observable isImportLegacyServicesCompleted = false; 32 @observable isImportLegacyServicesCompleted = false;
@@ -57,6 +58,7 @@ export default class UserStore extends Store {
57 this.actions.user.update.listen(this._update.bind(this)); 58 this.actions.user.update.listen(this._update.bind(this));
58 this.actions.user.resetStatus.listen(this._resetStatus.bind(this)); 59 this.actions.user.resetStatus.listen(this._resetStatus.bind(this));
59 this.actions.user.importLegacyServices.listen(this._importLegacyServices.bind(this)); 60 this.actions.user.importLegacyServices.listen(this._importLegacyServices.bind(this));
61 this.actions.user.delete.listen(this._delete.bind(this));
60 62
61 // Reactions 63 // Reactions
62 this.registerReactions([ 64 this.registerReactions([
@@ -212,6 +214,10 @@ export default class UserStore extends Store {
212 this.isImportLegacyServicesCompleted = true; 214 this.isImportLegacyServicesCompleted = true;
213 } 215 }
214 216
217 @action async _delete() {
218 this.deleteAccountRequest.execute();
219 }
220
215 // This is a mobx autorun which forces the user to login if not authenticated 221 // This is a mobx autorun which forces the user to login if not authenticated
216 _requireAuthenticatedUser = () => { 222 _requireAuthenticatedUser = () => {
217 if (this.isTokenExpired) { 223 if (this.isTokenExpired) {
diff --git a/src/styles/button.scss b/src/styles/button.scss
index 75d2cb1d4..8d2adbbcc 100644
--- a/src/styles/button.scss
+++ b/src/styles/button.scss
@@ -48,6 +48,18 @@
48 } 48 }
49 } 49 }
50 50
51 &.franz-form__button--warning {
52 background: $theme-brand-warning;
53
54 &:hover {
55 background: darken($theme-brand-warning, 5%);
56 }
57
58 &:active {
59 background: lighten($theme-brand-warning, 5%);
60 }
61 }
62
51 &.franz-form__button--inverted { 63 &.franz-form__button--inverted {
52 background: none; 64 background: none;
53 padding: 10px 20px; 65 padding: 10px 20px;
diff --git a/src/styles/content-tabs.scss b/src/styles/content-tabs.scss
index aa3c8594b..47dfea2c4 100644
--- a/src/styles/content-tabs.scss
+++ b/src/styles/content-tabs.scss
@@ -12,15 +12,17 @@
12 flex: 1; 12 flex: 1;
13 // border: 1px solid $theme-gray-lightest; 13 // border: 1px solid $theme-gray-lightest;
14 color: $theme-gray-dark; 14 color: $theme-gray-dark;
15 background: $theme-gray-lightest; 15 background: linear-gradient($theme-gray-lightest 80%, darken($theme-gray-lightest, 3%));
16 border-bottom: 1px solid $theme-gray-lighter; 16 border-right: 1px solid $theme-gray-lighter;
17 box-shadow: inset 0px -3px 10px rgba(black, 0.05); 17 transition: background $theme-transition-time;
18 transition: all $theme-transition-time; 18
19 &:last-of-type {
20 border-right: 0;
21 }
19 22
20 &.is-active { 23 &.is-active {
21 background: $theme-brand-primary; 24 background: $theme-brand-primary;
22 color: #FFF; 25 color: #FFF;
23 border-bottom: 1px solid $theme-brand-primary;
24 box-shadow: none; 26 box-shadow: none;
25 } 27 }
26 } 28 }
diff --git a/src/styles/image-upload.scss b/src/styles/image-upload.scss
new file mode 100644
index 000000000..06176a7af
--- /dev/null
+++ b/src/styles/image-upload.scss
@@ -0,0 +1,91 @@
1.image-upload {
2 position: absolute;
3 width: 140px;
4 height: 140px;
5 border: 1px solid $theme-gray-lighter;
6 border-radius: $theme-border-radius-small;
7 background: $theme-gray-lightest;
8 overflow: hidden;
9 margin-top: 5px;
10
11 &__preview,
12 &__action {
13 position: absolute;
14 top: 0;
15 left: 0;
16 right: 0;
17 }
18
19 &__preview {
20 z-index: 1;
21 background-size: cover;
22 background-size: 100%;
23 background-repeat: no-repeat;
24 background-position: center center;
25 border-radius: 3px;
26 }
27
28 &__action {
29 position: relative;
30 z-index: 10;
31 opacity: 0;
32 transition: opacity 0.5s;
33 display: flex;
34 justify-content: center;
35
36 &-background {
37 position: absolute;
38 top: 0;
39 left: 0;
40 right: 0;
41 bottom: 0;
42 background: rgba($theme-gray, 0.7);
43 z-index: 10;
44 }
45
46 button {
47 position: relative;
48 z-index: 100;
49 color: #FFF;
50
51 .mdi {
52 color: #FFF;
53 }
54 }
55 }
56
57 &__dropzone {
58 text-align: center;
59 border-radius: 5px;
60 padding: 10px;
61 display: flex;
62 align-items: center;
63 justify-content: center;
64 flex-direction: column;
65 }
66
67 &__dropzone,
68 button {
69 .mdi {
70 margin-bottom: 5px;
71 }
72
73 p {
74 font-size: 10px;
75 line-height: 10px;
76 }
77 }
78
79 &:hover {
80 .image-upload__action {
81 opacity: 1;
82 }
83 }
84}
85
86.image-upload-wrapper {
87 .mdi {
88 font-size: 40px;
89 color: $theme-gray-light;
90 }
91} \ No newline at end of file
diff --git a/src/styles/input.scss b/src/styles/input.scss
index 814dce5f8..7042f56e8 100644
--- a/src/styles/input.scss
+++ b/src/styles/input.scss
@@ -47,6 +47,10 @@
47 padding: 8px; 47 padding: 8px;
48 // font-size: 18px; 48 // font-size: 18px;
49 color: $theme-gray; 49 color: $theme-gray;
50
51 &::placeholder {
52 color: lighten($theme-gray-light, 10%);
53 }
50 } 54 }
51 55
52 .franz-form__input-prefix, 56 .franz-form__input-prefix,
diff --git a/src/styles/main.scss b/src/styles/main.scss
index 0a082729c..261396f6f 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -35,3 +35,4 @@ $mdi-font-path: '../node_modules/mdi/fonts';
35@import './button.scss'; 35@import './button.scss';
36@import './searchInput.scss'; 36@import './searchInput.scss';
37@import './select.scss'; 37@import './select.scss';
38@import './image-upload.scss';
diff --git a/src/styles/searchInput.scss b/src/styles/searchInput.scss
index 28ff09fc4..633a31e09 100644
--- a/src/styles/searchInput.scss
+++ b/src/styles/searchInput.scss
@@ -1,4 +1,20 @@
1.search-input { 1.search-input {
2 width: 100%; 2 width: 100%;
3 height: auto; 3 height: auto;
4 display: flex;
5 align-items: center;
6 padding: 0 10px;
7 border-radius: 30px;
8 background: $theme-gray-lightest;
9 padding: 5px 10px;
10 @extend %headline;
11 color: $theme-gray-light;
12
13 input {
14 padding-left: 10px;
15 background: none;
16 border: 0;
17 flex: 1;
18 color: $theme-gray-light;
19 }
4} 20}
diff --git a/src/styles/services.scss b/src/styles/services.scss
index 282c15121..9f6cfc772 100644
--- a/src/styles/services.scss
+++ b/src/styles/services.scss
@@ -24,6 +24,7 @@
24 display: inline-flex; 24 display: inline-flex;
25 width: 0px; 25 width: 0px;
26 height: 0px; 26 height: 0px;
27 background: $theme-gray-lighter;
27 } 28 }
28 29
29 &.is-active { 30 &.is-active {
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index 6e93094b4..2182c9b5f 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -111,6 +111,26 @@
111 &::-webkit-scrollbar-thumb:window-inactive { 111 &::-webkit-scrollbar-thumb:window-inactive {
112 background: none; 112 background: none;
113 } 113 }
114
115 .service-flex-grid {
116 display: flex;
117 }
118
119 .service-name {
120 flex: 1px;
121 }
122
123 .service-icon {
124 width: 140px;
125 float: right;
126 margin-top: 30px;
127 margin-left: 40px;
128
129 label {
130 font-weight: bold;
131 letter-spacing: -0.1px;
132 }
133 }
114 } 134 }
115 135
116 .settings__close { 136 .settings__close {
@@ -129,30 +149,28 @@
129 } 149 }
130 } 150 }
131 151
132 .settings__search-header { 152 .search-input {
133 display: flex; 153 margin-bottom: 30px;
134 align-items: center; 154 }
135 padding: 0 10px;
136 border-radius: $theme-border-radius;
137 transition: background $theme-transition-time;
138 @extend %headline;
139 font-size: 22px;
140
141 &:hover {
142 background: darken($theme-gray-lighter, 5%);
143 }
144 155
145 input { 156 &__options {
146 padding-left: 10px; 157 margin-top: 20px;
147 background: none; 158 flex: 1;
148 border: 0;
149 flex: 1;
150 @extend %headline;
151 }
152 } 159 }
153 160
154 .settings__options { 161 &__settings-group {
155 margin-top: 30px; 162 margin-top: 10px;
163
164 h3 {
165 font-weight: bold;
166 margin: 25px 0 15px;
167 color: $theme-gray-light;
168 letter-spacing: -0.1px;
169
170 &:first-of-type {
171 margin-top: 0;
172 }
173 }
156 } 174 }
157 175
158 .settings__message { 176 .settings__message {
@@ -173,10 +191,6 @@
173 margin: -10px 0 20px 55px;; 191 margin: -10px 0 20px 55px;;
174 font-size: 12px; 192 font-size: 12px;
175 color: $theme-gray-light; 193 color: $theme-gray-light;
176
177 &:last-of-type {
178 margin-bottom: 30px;
179 }
180 } 194 }
181 195
182 .settings__controls { 196 .settings__controls {
@@ -281,6 +295,10 @@
281 margin-left: auto; 295 margin-left: auto;
282 } 296 }
283 297
298 .franz-form__button {
299 white-space: nowrap;
300 }
301
284 div { 302 div {
285 height: auto; 303 height: auto;
286 } 304 }
@@ -308,12 +326,6 @@
308 } 326 }
309 } 327 }
310 328
311 // @include element(add-service-teaser) {
312 // height: auto;
313 // margin-top: 20px;
314 // display: block;
315 // text-align: center;
316 // }
317 .emoji { 329 .emoji {
318 display: block; 330 display: block;
319 font-size: 40px; 331 font-size: 40px;
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss
index 3ffc53558..ac48aabd6 100644
--- a/src/styles/tabs.scss
+++ b/src/styles/tabs.scss
@@ -78,6 +78,26 @@
78 } 78 }
79 } 79 }
80 80
81 .tab-item__info-badge {
82 width: 17px;
83 height: 17px;
84 background: $theme-gray-light;
85 color: $theme-gray-lighter;
86 border-radius: 20px;
87 padding: 0px 5px;
88 font-size: 11px;
89 position: absolute;
90 right: 8px;
91 bottom: 8px;
92 display: flex;
93 justify-content: center;
94 align-items: center;
95
96 &.is-indirect {
97 padding-top: 0px;
98 }
99 }
100
81 &.is-reordering { 101 &.is-reordering {
82 z-index: 99999; 102 z-index: 99999;
83 } 103 }
diff --git a/src/styles/welcome.scss b/src/styles/welcome.scss
index 5365921fb..46299b966 100644
--- a/src/styles/welcome.scss
+++ b/src/styles/welcome.scss
@@ -58,17 +58,25 @@
58 } 58 }
59 59
60 &__featured-services { 60 &__featured-services {
61 margin-top: 150px;
62 text-align: center; 61 text-align: center;
63 margin-top: 80px; 62 width: 480px;
63 margin: 80px auto 0 auto;
64 display: flex;
65 align-items: center;
66 flex-wrap: wrap;
67 background: #FFF;
68 border-radius: 6px;
69 padding: 20px 20px 5px;
64 } 70 }
65 71
66 &__featured-service { 72 &__featured-service {
67 width: 35px; 73 width: 35px;
68 margin-right: 30px; 74 height: 35px;
75 margin: 0 10px 15px;
76 transition: 0.5s filter, 0.5s opacity;
69 77
70 &:last-of-type { 78 img {
71 margin-right: 0; 79 width: 35px;
72 } 80 }
73 } 81 }
74 } 82 }
diff --git a/src/webview/ime.js b/src/webview/ime.js
deleted file mode 100644
index 43df6267c..000000000
--- a/src/webview/ime.js
+++ /dev/null
@@ -1,10 +0,0 @@
1const { ipcRenderer } = require('electron');
2const { claimDocumentFocus } = require('../helpers/webview-ime-focus-helpers');
3
4ipcRenderer.on('claim-document-focus', claimDocumentFocus);
5
6window.addEventListener('DOMContentLoaded', () => {
7 if (document.querySelector('[autofocus]')) {
8 ipcRenderer.sendToHost('autofocus');
9 }
10});
diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js
index 048beea69..be29142af 100644
--- a/src/webview/lib/RecipeWebview.js
+++ b/src/webview/lib/RecipeWebview.js
@@ -40,8 +40,8 @@ class RecipeWebview {
40 && this.countCache.indirect === indirect) return; 40 && this.countCache.indirect === indirect) return;
41 41
42 const count = { 42 const count = {
43 direct, 43 direct: direct > 0 ? direct : 0,
44 indirect, 44 indirect: indirect > 0 ? indirect : 0,
45 }; 45 };
46 46
47 ipcRenderer.sendToHost('messages', count); 47 ipcRenderer.sendToHost('messages', count);
diff --git a/src/webview/notifications.js b/src/webview/notifications.js
index 4f602bfdb..2020bbdc6 100644
--- a/src/webview/notifications.js
+++ b/src/webview/notifications.js
@@ -16,7 +16,9 @@ class Notification {
16 })); 16 }));
17 17
18 ipcRenderer.once(`notification-onclick:${this.notificationId}`, () => { 18 ipcRenderer.once(`notification-onclick:${this.notificationId}`, () => {
19 this.onclick(); 19 if (typeof this.onclick === 'function') {
20 this.onclick();
21 }
20 }); 22 });
21 } 23 }
22 24
diff --git a/src/webview/plugin.js b/src/webview/plugin.js
index c877132b1..d9e021e6d 100644
--- a/src/webview/plugin.js
+++ b/src/webview/plugin.js
@@ -1,13 +1,12 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker';
2import path from 'path'; 3import path from 'path';
3 4
5import { isDevMode } from '../environment';
4import RecipeWebview from './lib/RecipeWebview'; 6import RecipeWebview from './lib/RecipeWebview';
5 7
6import Spellchecker from './spellchecker.js'; 8import Spellchecker from './spellchecker';
7import './notifications.js'; 9import './notifications';
8import './ime.js';
9
10const spellchecker = new Spellchecker();
11 10
12ipcRenderer.on('initializeRecipe', (e, data) => { 11ipcRenderer.on('initializeRecipe', (e, data) => {
13 const modulePath = path.join(data.recipe.path, 'webview.js'); 12 const modulePath = path.join(data.recipe.path, 'webview.js');
@@ -21,20 +20,34 @@ ipcRenderer.on('initializeRecipe', (e, data) => {
21 } 20 }
22}); 21});
23 22
23const spellchecker = new Spellchecker();
24spellchecker.initialize();
25
26const contextMenuBuilder = new ContextMenuBuilder(spellchecker.handler, null, isDevMode);
27
28new ContextMenuListener((info) => { // eslint-disable-line
29 contextMenuBuilder.showPopupMenu(info);
30});
31
24ipcRenderer.on('settings-update', (e, data) => { 32ipcRenderer.on('settings-update', (e, data) => {
25 if (data.enableSpellchecking) { 33 console.log('settings-update', data);
26 if (!spellchecker.isEnabled) { 34 spellchecker.toggleSpellchecker(data.enableSpellchecking);
27 spellchecker.enable();
28
29 // TODO: this does not work yet, needs more testing
30 // if (data.spellcheckingLanguage !== 'auto') {
31 // console.log('set spellchecking language to', data.spellcheckingLanguage);
32 // spellchecker.switchLanguage(data.spellcheckingLanguage);
33 // }
34 }
35 }
36}); 35});
37 36
37// initSpellche
38
38document.addEventListener('DOMContentLoaded', () => { 39document.addEventListener('DOMContentLoaded', () => {
39 ipcRenderer.sendToHost('hello'); 40 ipcRenderer.sendToHost('hello');
40}, false); 41}, false);
42
43// Patching window.open
44const originalWindowOpen = window.open;
45
46window.open = (url, frameName, features) => {
47 // We need to differentiate if the link should be opened in a popup or in the systems default browser
48 if (!frameName && !features) {
49 return ipcRenderer.sendToHost('new-window', url);
50 }
51
52 return originalWindowOpen(url, frameName, features);
53};
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index 5beb77e03..a504a4039 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -1,30 +1,63 @@
1import { SpellCheckHandler, ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker'; 1import { SpellCheckHandler } from 'electron-spellchecker';
2 2
3import { isMac } from '../environment'; 3import { isMac } from '../environment';
4 4
5export default class Spellchecker { 5export default class Spellchecker {
6 isEnabled = false; 6 isInitialized = false;
7 spellchecker = null; 7 handler = null;
8 initRetries = 0;
9 DOMCheckInterval = null;
10
11 get inputs() {
12 return document.querySelectorAll('input[type="text"], [contenteditable="true"], textarea');
13 }
14
15 initialize() {
16 this.handler = new SpellCheckHandler();
8 17
9 enable() {
10 this.spellchecker = new SpellCheckHandler();
11 if (!isMac) { 18 if (!isMac) {
12 this.spellchecker.attachToInput(); 19 this.attach();
13 this.spellchecker.switchLanguage(navigator.language); 20 } else {
21 this.isInitialized = true;
22 }
23 }
24
25 attach() {
26 let initFailed = false;
27
28 if (this.initRetries > 3) {
29 console.error('Could not initialize spellchecker');
30 return;
14 } 31 }
15 32
16 const contextMenuBuilder = new ContextMenuBuilder(this.spellchecker); 33 try {
34 this.handler.attachToInput();
35 this.handler.switchLanguage(navigator.language);
36 } catch (err) {
37 initFailed = true;
38 this.initRetries = +1;
39 setTimeout(() => { this.attach(); console.warn('Spellchecker init failed, trying again in 5s'); }, 5000);
40 }
17 41
18 new ContextMenuListener((info) => { // eslint-disable-line 42 if (!initFailed) {
19 contextMenuBuilder.showPopupMenu(info); 43 this.isInitialized = true;
44 }
45 }
46
47 toggleSpellchecker(enable = false) {
48 this.inputs.forEach((input) => {
49 input.setAttribute('spellcheck', enable);
20 }); 50 });
51
52 this.intervalHandler(enable);
21 } 53 }
22 54
23 // TODO: this does not work yet, needs more testing 55 intervalHandler(enable) {
24 // switchLanguage(language) { 56 clearInterval(this.DOMCheckInterval);
25 // if (language !== 'auto') { 57
26 // this.spellchecker.switchLanguage(language); 58 if (enable) {
27 // } 59 this.DOMCheckInterval = setInterval(() => this.toggleSpellchecker(enable), 30000);
28 // } 60 }
61 }
29} 62}
30 63
diff --git a/yarn.lock b/yarn.lock
index 6c3f807a4..58befebf1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -39,7 +39,7 @@
39 rimraf "^2.4.0" 39 rimraf "^2.4.0"
40 underscore "^1.6.0" 40 underscore "^1.6.0"
41 41
42"@paulcbetts/spellchecker@^4.0.5": 42"@paulcbetts/spellchecker@^4.0.6":
43 version "4.0.6" 43 version "4.0.6"
44 resolved "https://registry.yarnpkg.com/@paulcbetts/spellchecker/-/spellchecker-4.0.6.tgz#79ef1f9c19c5a3156921ccaa9ffdc3efbbee47e3" 44 resolved "https://registry.yarnpkg.com/@paulcbetts/spellchecker/-/spellchecker-4.0.6.tgz#79ef1f9c19c5a3156921ccaa9ffdc3efbbee47e3"
45 dependencies: 45 dependencies:
@@ -333,10 +333,18 @@ async@^0.9.0:
333 version "0.9.2" 333 version "0.9.2"
334 resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" 334 resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
335 335
336async@~0.1.22:
337 version "0.1.22"
338 resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"
339
336asynckit@^0.4.0: 340asynckit@^0.4.0:
337 version "0.4.0" 341 version "0.4.0"
338 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 342 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
339 343
344attr-accept@^1.0.3:
345 version "1.1.0"
346 resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.0.tgz#b5cd35227f163935a8f1de10ed3eba16941f6be6"
347
340"auto-launch@https://github.com/meetfranz/node-auto-launch.git": 348"auto-launch@https://github.com/meetfranz/node-auto-launch.git":
341 version "5.0.1" 349 version "5.0.1"
342 resolved "https://github.com/meetfranz/node-auto-launch.git#b90a0470467eb84435e6554ae9db1e2c6db79e61" 350 resolved "https://github.com/meetfranz/node-auto-launch.git#b90a0470467eb84435e6554ae9db1e2c6db79e61"
@@ -1303,6 +1311,10 @@ capture-stack-trace@^1.0.0:
1303 version "1.0.0" 1311 version "1.0.0"
1304 resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 1312 resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
1305 1313
1314caseless@~0.11.0:
1315 version "0.11.0"
1316 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
1317
1306caseless@~0.12.0: 1318caseless@~0.12.0:
1307 version "0.12.0" 1319 version "0.12.0"
1308 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 1320 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -1779,6 +1791,12 @@ dotenv@^4.0.0:
1779 version "4.0.0" 1791 version "4.0.0"
1780 resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" 1792 resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
1781 1793
1794du@^0.1.0:
1795 version "0.1.0"
1796 resolved "https://registry.yarnpkg.com/du/-/du-0.1.0.tgz#f26e340a09c7bc5b6fd69af6dbadea60fa8c6f4d"
1797 dependencies:
1798 async "~0.1.22"
1799
1782duplexer2@0.0.2, duplexer2@~0.0.2: 1800duplexer2@0.0.2, duplexer2@~0.0.2:
1783 version "0.0.2" 1801 version "0.0.2"
1784 resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" 1802 resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
@@ -2013,12 +2031,12 @@ electron-remote@^1.1.1:
2013 rxjs "^5.0.0-beta.12" 2031 rxjs "^5.0.0-beta.12"
2014 xmlhttprequest "^1.8.0" 2032 xmlhttprequest "^1.8.0"
2015 2033
2016electron-spellchecker@^1.2.0: 2034electron-spellchecker@^1.1.2:
2017 version "1.2.0" 2035 version "1.1.2"
2018 resolved "https://registry.yarnpkg.com/electron-spellchecker/-/electron-spellchecker-1.2.0.tgz#f6306afd4078244c1e6311370667d95b873fbcbb" 2036 resolved "https://registry.yarnpkg.com/electron-spellchecker/-/electron-spellchecker-1.1.2.tgz#5fbe1e65d246b77e6e7433ee2387d9d26010f7a8"
2019 dependencies: 2037 dependencies:
2020 "@paulcbetts/cld" "^2.4.6" 2038 "@paulcbetts/cld" "^2.4.6"
2021 "@paulcbetts/spellchecker" "^4.0.5" 2039 "@paulcbetts/spellchecker" "^4.0.6"
2022 bcp47 "^1.1.2" 2040 bcp47 "^1.1.2"
2023 debug "^2.6.3" 2041 debug "^2.6.3"
2024 electron-remote "^1.1.1" 2042 electron-remote "^1.1.1"
@@ -2724,6 +2742,16 @@ gaze@^1.0.0:
2724 dependencies: 2742 dependencies:
2725 globule "^1.0.0" 2743 globule "^1.0.0"
2726 2744
2745generate-function@^2.0.0:
2746 version "2.0.0"
2747 resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
2748
2749generate-object-property@^1.1.0:
2750 version "1.2.0"
2751 resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
2752 dependencies:
2753 is-property "^1.0.0"
2754
2727get-caller-file@^1.0.1: 2755get-caller-file@^1.0.1:
2728 version "1.0.2" 2756 version "1.0.2"
2729 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 2757 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
@@ -2974,6 +3002,29 @@ gulp-babel@^6.1.2:
2974 through2 "^2.0.0" 3002 through2 "^2.0.0"
2975 vinyl-sourcemaps-apply "^0.2.0" 3003 vinyl-sourcemaps-apply "^0.2.0"
2976 3004
3005gulp-cli@1.2.2:
3006 version "1.2.2"
3007 resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-1.2.2.tgz#7392def6316c6e7939a4f296f3f540151ae3a275"
3008 dependencies:
3009 archy "^1.0.0"
3010 chalk "^1.1.0"
3011 fancy-log "^1.1.0"
3012 gulplog "^1.0.0"
3013 interpret "^1.0.0"
3014 liftoff "^2.1.0"
3015 lodash.isfunction "^3.0.8"
3016 lodash.isplainobject "^4.0.4"
3017 lodash.isstring "^4.0.1"
3018 lodash.sortby "^4.5.0"
3019 matchdep "^1.0.0"
3020 mute-stdout "^1.0.0"
3021 pretty-hrtime "^1.0.0"
3022 semver-greatest-satisfied-range "^1.0.0"
3023 tildify "^1.0.0"
3024 v8flags "^2.0.9"
3025 wreck "^6.3.0"
3026 yargs "^3.28.0"
3027
2977gulp-cli@^1.0.0: 3028gulp-cli@^1.0.0:
2978 version "1.4.0" 3029 version "1.4.0"
2979 resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-1.4.0.tgz#6f5bbe2cd0bdb4849d12cf9e1246a5861f8b4f88" 3030 resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-1.4.0.tgz#6f5bbe2cd0bdb4849d12cf9e1246a5861f8b4f88"
@@ -3095,6 +3146,15 @@ har-schema@^1.0.5:
3095 version "1.0.5" 3146 version "1.0.5"
3096 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 3147 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
3097 3148
3149har-validator@~2.0.6:
3150 version "2.0.6"
3151 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
3152 dependencies:
3153 chalk "^1.1.1"
3154 commander "^2.9.0"
3155 is-my-json-valid "^2.12.4"
3156 pinkie-promise "^2.0.0"
3157
3098har-validator@~4.2.1: 3158har-validator@~4.2.1:
3099 version "4.2.1" 3159 version "4.2.1"
3100 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 3160 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -3410,6 +3470,15 @@ is-glob@^3.1.0:
3410 dependencies: 3470 dependencies:
3411 is-extglob "^2.1.0" 3471 is-extglob "^2.1.0"
3412 3472
3473is-my-json-valid@^2.12.4:
3474 version "2.17.1"
3475 resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471"
3476 dependencies:
3477 generate-function "^2.0.0"
3478 generate-object-property "^1.1.0"
3479 jsonpointer "^4.0.0"
3480 xtend "^4.0.0"
3481
3413is-npm@^1.0.0: 3482is-npm@^1.0.0:
3414 version "1.0.0" 3483 version "1.0.0"
3415 resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 3484 resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@@ -3468,6 +3537,10 @@ is-promise@^2.1.0:
3468 version "2.1.0" 3537 version "2.1.0"
3469 resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 3538 resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
3470 3539
3540is-property@^1.0.0:
3541 version "1.0.2"
3542 resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
3543
3471is-redirect@^1.0.0: 3544is-redirect@^1.0.0:
3472 version "1.0.0" 3545 version "1.0.0"
3473 resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 3546 resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
@@ -3663,6 +3736,10 @@ jsonify@~0.0.0:
3663 version "0.0.0" 3736 version "0.0.0"
3664 resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 3737 resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
3665 3738
3739jsonpointer@^4.0.0:
3740 version "4.0.1"
3741 resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
3742
3666jsonwebtoken@^7.4.1: 3743jsonwebtoken@^7.4.1:
3667 version "7.4.3" 3744 version "7.4.3"
3668 resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz#77f5021de058b605a1783fa1283e99812e645638" 3745 resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz#77f5021de058b605a1783fa1283e99812e645638"
@@ -3768,7 +3845,7 @@ levn@^0.3.0, levn@~0.3.0:
3768 prelude-ls "~1.1.2" 3845 prelude-ls "~1.1.2"
3769 type-check "~0.3.2" 3846 type-check "~0.3.2"
3770 3847
3771liftoff@^2.3.0: 3848liftoff@^2.1.0, liftoff@^2.3.0:
3772 version "2.3.0" 3849 version "2.3.0"
3773 resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" 3850 resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385"
3774 dependencies: 3851 dependencies:
@@ -4204,9 +4281,9 @@ mksnapshot@^0.3.0:
4204 fs-extra "0.26.7" 4281 fs-extra "0.26.7"
4205 request "^2.79.0" 4282 request "^2.79.0"
4206 4283
4207mobx-react-form@1.24.0: 4284mobx-react-form@^1.32.2:
4208 version "1.24.0" 4285 version "1.32.2"
4209 resolved "https://registry.yarnpkg.com/mobx-react-form/-/mobx-react-form-1.24.0.tgz#bc9fbd652e65fb1f2b51917865d465fcaab7f0d9" 4286 resolved "https://registry.yarnpkg.com/mobx-react-form/-/mobx-react-form-1.32.2.tgz#5610dd0e4fab006acf2daf1becbedecad182a5a0"
4210 dependencies: 4287 dependencies:
4211 lodash "^4.16.2" 4288 lodash "^4.16.2"
4212 4289
@@ -4331,7 +4408,7 @@ node-pre-gyp@^0.6.36:
4331 tar "^2.2.1" 4408 tar "^2.2.1"
4332 tar-pack "^3.4.0" 4409 tar-pack "^3.4.0"
4333 4410
4334node-sass@^4.2.0, node-sass@^4.5.3: 4411node-sass@^4.2.0:
4335 version "4.5.3" 4412 version "4.5.3"
4336 resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" 4413 resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568"
4337 dependencies: 4414 dependencies:
@@ -4354,6 +4431,30 @@ node-sass@^4.2.0, node-sass@^4.5.3:
4354 sass-graph "^2.1.1" 4431 sass-graph "^2.1.1"
4355 stdout-stream "^1.4.0" 4432 stdout-stream "^1.4.0"
4356 4433
4434node-sass@^4.7.2:
4435 version "4.7.2"
4436 resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
4437 dependencies:
4438 async-foreach "^0.1.3"
4439 chalk "^1.1.1"
4440 cross-spawn "^3.0.0"
4441 gaze "^1.0.0"
4442 get-stdin "^4.0.1"
4443 glob "^7.0.3"
4444 in-publish "^2.0.0"
4445 lodash.assign "^4.2.0"
4446 lodash.clonedeep "^4.3.2"
4447 lodash.mergewith "^4.6.0"
4448 meow "^3.7.0"
4449 mkdirp "^0.5.1"
4450 nan "^2.3.2"
4451 node-gyp "^3.3.1"
4452 npmlog "^4.0.0"
4453 request "~2.79.0"
4454 sass-graph "^2.2.4"
4455 stdout-stream "^1.4.0"
4456 "true-case-path" "^1.0.2"
4457
4357node-watch@^0.3.4: 4458node-watch@^0.3.4:
4358 version "0.3.5" 4459 version "0.3.5"
4359 resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.3.5.tgz#a07f253a4f538de9d4ca522dd7f1996eeec0d97e" 4460 resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.3.5.tgz#a07f253a4f538de9d4ca522dd7f1996eeec0d97e"
@@ -4808,6 +4909,10 @@ pretty-bytes@^1.0.2, pretty-bytes@^1.0.4:
4808 get-stdin "^4.0.1" 4909 get-stdin "^4.0.1"
4809 meow "^3.1.0" 4910 meow "^3.1.0"
4810 4911
4912pretty-bytes@^4.0.2:
4913 version "4.0.2"
4914 resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
4915
4811pretty-hrtime@^1.0.0: 4916pretty-hrtime@^1.0.0:
4812 version "1.0.3" 4917 version "1.0.3"
4813 resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" 4918 resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
@@ -4884,6 +4989,10 @@ q@^1.1.2:
4884 version "1.5.0" 4989 version "1.5.0"
4885 resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" 4990 resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
4886 4991
4992qs@~6.3.0:
4993 version "6.3.2"
4994 resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
4995
4887qs@~6.4.0: 4996qs@~6.4.0:
4888 version "6.4.0" 4997 version "6.4.0"
4889 resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 4998 resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
@@ -4940,6 +5049,13 @@ react-dom@^15.4.1:
4940 object-assign "^4.1.0" 5049 object-assign "^4.1.0"
4941 prop-types "^15.5.10" 5050 prop-types "^15.5.10"
4942 5051
5052react-dropzone@^4.2.1:
5053 version "4.2.1"
5054 resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-4.2.1.tgz#695e80bd0b065f1181e69f2d0f6d1d5cc72664c9"
5055 dependencies:
5056 attr-accept "^1.0.3"
5057 prop-types "^15.5.7"
5058
4943react-electron-web-view@^2.0.1: 5059react-electron-web-view@^2.0.1:
4944 version "2.0.1" 5060 version "2.0.1"
4945 resolved "https://registry.yarnpkg.com/react-electron-web-view/-/react-electron-web-view-2.0.1.tgz#984b7bbbeb77e35bcca921dc50120fc8f2b0f27d" 5061 resolved "https://registry.yarnpkg.com/react-electron-web-view/-/react-electron-web-view-2.0.1.tgz#984b7bbbeb77e35bcca921dc50120fc8f2b0f27d"
@@ -5228,6 +5344,31 @@ request@2, request@^2.45.0, request@^2.54.0, request@^2.79.0, request@^2.81.0:
5228 tunnel-agent "^0.6.0" 5344 tunnel-agent "^0.6.0"
5229 uuid "^3.0.0" 5345 uuid "^3.0.0"
5230 5346
5347request@~2.79.0:
5348 version "2.79.0"
5349 resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
5350 dependencies:
5351 aws-sign2 "~0.6.0"
5352 aws4 "^1.2.1"
5353 caseless "~0.11.0"
5354 combined-stream "~1.0.5"
5355 extend "~3.0.0"
5356 forever-agent "~0.6.1"
5357 form-data "~2.1.1"
5358 har-validator "~2.0.6"
5359 hawk "~3.1.3"
5360 http-signature "~1.1.0"
5361 is-typedarray "~1.0.0"
5362 isstream "~0.1.2"
5363 json-stringify-safe "~5.0.1"
5364 mime-types "~2.1.7"
5365 oauth-sign "~0.8.1"
5366 qs "~6.3.0"
5367 stringstream "~0.0.4"
5368 tough-cookie "~2.3.0"
5369 tunnel-agent "~0.4.1"
5370 uuid "^3.0.0"
5371
5231require-directory@^2.1.1: 5372require-directory@^2.1.1:
5232 version "2.1.1" 5373 version "2.1.1"
5233 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 5374 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -5331,7 +5472,7 @@ sanitize-filename@^1.6.0, sanitize-filename@^1.6.1:
5331 dependencies: 5472 dependencies:
5332 truncate-utf8-bytes "^1.0.0" 5473 truncate-utf8-bytes "^1.0.0"
5333 5474
5334sass-graph@^2.1.1: 5475sass-graph@^2.1.1, sass-graph@^2.2.4:
5335 version "2.2.4" 5476 version "2.2.4"
5336 resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" 5477 resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
5337 dependencies: 5478 dependencies:
@@ -5901,6 +6042,12 @@ trim-right@^1.0.1:
5901 version "1.0.1" 6042 version "1.0.1"
5902 resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 6043 resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
5903 6044
6045"true-case-path@^1.0.2":
6046 version "1.0.2"
6047 resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62"
6048 dependencies:
6049 glob "^6.0.4"
6050
5904truncate-utf8-bytes@^1.0.0: 6051truncate-utf8-bytes@^1.0.0:
5905 version "1.0.2" 6052 version "1.0.2"
5906 resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" 6053 resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -5917,6 +6064,10 @@ tunnel-agent@^0.6.0:
5917 dependencies: 6064 dependencies:
5918 safe-buffer "^5.0.1" 6065 safe-buffer "^5.0.1"
5919 6066
6067tunnel-agent@~0.4.1:
6068 version "0.4.3"
6069 resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
6070
5920tweetnacl@^0.14.3, tweetnacl@~0.14.0: 6071tweetnacl@^0.14.3, tweetnacl@~0.14.0:
5921 version "0.14.5" 6072 version "0.14.5"
5922 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 6073 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -6276,7 +6427,7 @@ xmlhttprequest@^1.8.0:
6276 version "1.8.0" 6427 version "1.8.0"
6277 resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" 6428 resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
6278 6429
6279"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: 6430"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
6280 version "4.0.1" 6431 version "4.0.1"
6281 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 6432 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
6282 6433