aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2017-11-23 16:17:34 +0100
committerLibravatar GitHub <noreply@github.com>2017-11-23 16:17:34 +0100
commitabca425e4a7b63be93132067bc335e8b6b39c2b2 (patch)
treee386f3e5d4c1c1caff19e3555e7ed1ce93e625f6
parentreplace typeform (diff)
parentAdd windows notification fix to changelog (diff)
downloadferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.tar.gz
ferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.tar.zst
ferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.zip
Merge pull request #330 from meetfranz/developv5.0.0-beta.14
Beta 14
-rw-r--r--.vscode/launch.json38
-rw-r--r--.vscode/tasks.json18
-rw-r--r--CHANGELOG.md30
-rw-r--r--appveyor.yml10
-rw-r--r--electron-builder.yml2
-rw-r--r--package.json4
-rw-r--r--src/actions/app.js4
-rw-r--r--src/actions/service.js7
-rw-r--r--src/api/server/LocalApi.js4
-rw-r--r--src/api/server/ServerApi.js2
-rw-r--r--src/app.js4
-rw-r--r--src/components/layout/AppLayout.js8
-rw-r--r--src/components/layout/Sidebar.js54
-rw-r--r--src/components/services/content/ServiceDisabled.js48
-rw-r--r--src/components/services/content/ServiceWebview.js59
-rw-r--r--src/components/services/content/Services.js15
-rw-r--r--src/components/services/content/WebviewCrashHandler.js81
-rw-r--r--src/components/services/tabs/TabBarSortableList.js25
-rw-r--r--src/components/services/tabs/TabItem.js26
-rw-r--r--src/components/services/tabs/Tabbar.js21
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js1
-rw-r--r--src/components/settings/recipes/RecipesDashboard.js57
-rw-r--r--src/components/settings/services/EditServiceForm.js14
-rw-r--r--src/components/settings/services/ServiceItem.js22
-rw-r--r--src/components/settings/settings/EditSettingsForm.js46
-rw-r--r--src/components/ui/AppLoader.js2
-rw-r--r--src/components/ui/InfoBar.js7
-rw-r--r--src/components/ui/Loader.js5
-rw-r--r--src/components/ui/Subscription.js19
-rw-r--r--src/config.js11
-rw-r--r--src/containers/layout/AppLayoutContainer.js29
-rw-r--r--src/containers/settings/EditServiceScreen.js15
-rw-r--r--src/containers/settings/EditSettingsScreen.js58
-rw-r--r--src/i18n/languages.js72
-rw-r--r--src/i18n/locales/ca.json192
-rw-r--r--src/i18n/locales/cs.json192
-rw-r--r--src/i18n/locales/de.json358
-rw-r--r--src/i18n/locales/el-GR.json169
-rw-r--r--src/i18n/locales/el.json192
-rw-r--r--src/i18n/locales/en-US.json45
-rw-r--r--src/i18n/locales/es-ES.json168
-rw-r--r--src/i18n/locales/es.json192
-rw-r--r--src/i18n/locales/fr.json358
-rw-r--r--src/i18n/locales/ga.json192
-rw-r--r--src/i18n/locales/hu.json192
-rw-r--r--src/i18n/locales/id.json192
-rw-r--r--src/i18n/locales/it.json358
-rw-r--r--src/i18n/locales/ja.json359
-rw-r--r--src/i18n/locales/ka.json192
-rw-r--r--src/i18n/locales/nl-BE.json358
-rw-r--r--src/i18n/locales/nl.json359
-rw-r--r--src/i18n/locales/pl.json358
-rw-r--r--src/i18n/locales/pt-BR.json359
-rw-r--r--src/i18n/locales/pt.json192
-rw-r--r--src/i18n/locales/ru.json359
-rw-r--r--src/i18n/locales/sk.json192
-rw-r--r--src/i18n/locales/uk.json192
-rw-r--r--src/i18n/translations.js4
-rw-r--r--src/index.js55
-rw-r--r--src/lib/Menu.js42
-rw-r--r--src/lib/Miner.js4
-rw-r--r--src/lib/TouchBar.js18
-rw-r--r--src/models/News.js2
-rw-r--r--src/models/Plan.js2
-rw-r--r--src/models/RecipePreview.js2
-rw-r--r--src/models/Service.js25
-rw-r--r--src/models/Settings.js19
-rw-r--r--src/models/User.js2
-rw-r--r--src/stores/AppStore.js41
-rw-r--r--src/stores/ServicesStore.js83
-rw-r--r--src/stores/SettingsStore.js14
-rw-r--r--src/styles/button.scss108
-rw-r--r--src/styles/info-bar.scss4
-rw-r--r--src/styles/layout.scss33
-rw-r--r--src/styles/recipes.scss4
-rw-r--r--src/styles/services.scss23
-rw-r--r--src/styles/settings.scss15
-rw-r--r--src/styles/subscription.scss5
-rw-r--r--src/styles/tabs.scss18
-rw-r--r--src/styles/type.scss5
-rw-r--r--src/webview/lib/RecipeWebview.js2
-rw-r--r--src/webview/notifications.js4
-rw-r--r--src/webview/plugin.js28
-rw-r--r--src/webview/spellchecker.js40
-rw-r--r--yarn.lock35
85 files changed, 4964 insertions, 2211 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 000000000..a8300f84f
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,38 @@
1{
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "type": "node",
6 "request": "launch",
7 "name": "Franz - Test API",
8 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
9 "program": "${workspaceFolder}/build/index.js",
10 "protocol": "inspector",
11 "env": {
12 "NODE_ENV": "development"
13 }
14 },
15 {
16 "type": "node",
17 "request": "launch",
18 "name": "Franz – Live API",
19 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
20 "program": "${workspaceFolder}/build/index.js",
21 "protocol": "inspector",
22 "env": {
23 "LIVE_API": "1"
24 }
25 },
26 {
27 "type": "node",
28 "request": "launch",
29 "name": "Franz – Local API",
30 "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
31 "program": "${workspaceFolder}/build/index.js",
32 "protocol": "inspector",
33 "env": {
34 "LOCAL_API": "1"
35 }
36 }
37 ]
38} \ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 000000000..a9fb57b06
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,18 @@
1{
2 "version": "2.0.0",
3 "tasks": [
4 {
5 "type": "npm",
6 "script": "dev",
7 "group": {
8 "kind": "build",
9 "isDefault": true
10 }
11 },
12 {
13 "type": "npm",
14 "script": "lint",
15 "group": "test"
16 }
17 ]
18} \ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 024afe93c..ef7e1c586 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,33 @@
1<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)
3
4
5### Features
6
7* **App:** Add link to changelog in app update notification ([2cbd938](https://github.com/meetfranz/franz/commit/2cbd938))
8* **App:** Add option to enable/disable spell checker ([dcab45a](https://github.com/meetfranz/franz/commit/dcab45a))
9* **App:** Add option to mute all services in sidebar ([f5a9aa2](https://github.com/meetfranz/franz/commit/f5a9aa2)), closes [#8](https://github.com/meetfranz/franz/issues/8) [#162](https://github.com/meetfranz/franz/issues/162)
10* **App:** Decrease minimum window size to 600px width ([2521621](https://github.com/meetfranz/franz/commit/2521621)), closes [#239](https://github.com/meetfranz/franz/issues/239)
11* **App:** Respect System DoNotDisturb mode for service audio ([7d41227](https://github.com/meetfranz/franz/commit/7d41227)), closes [#162](https://github.com/meetfranz/franz/issues/162)
12* **Service:** Add option to display disabled services in tabs ([1839eff](https://github.com/meetfranz/franz/commit/1839eff))
13* **Service:** Add option to mute service ([b405ba1](https://github.com/meetfranz/franz/commit/b405ba1))
14* **Service:** Add dialog to reload crashed services ([259d40c](https://github.com/meetfranz/franz/commit/259d40c)) ([dannyqiu](https://github.com/dannyqiu))
15* **Translations:** Added new translations and improved existing ones. **[A million thanks to the amazing community.](http://i18n.meetfranz.com/)**
16
17
18### Bug Fixes
19
20* **Windows:** Fix notifications on Windows 10 (Fall Creators Update) ([eea4801](https://github.com/meetfranz/franz/commit/eea4801)), closes [#173](https://github.com/meetfranz/franz/issues/173)
21* **macOS:** Fix TouchBar related crash on macOS 10.12.1 and lower ([9e9a2ed](https://github.com/meetfranz/franz/commit/9e9a2ed)), closes [#70](https://github.com/meetfranz/franz/issues/70)
22* **App:** Add fallback to service menu when service name is empty ([42ed24d](https://github.com/meetfranz/franz/commit/42ed24d)), closes [#250](https://github.com/meetfranz/franz/issues/250)
23* **App:** Prevent app from redirecting when dropping link ([811a527](https://github.com/meetfranz/franz/commit/811a527)) ([dannyqiu](https://github.com/dannyqiu))
24* **Support with CPU:** Reduce maximum CPU usage ([64ad918](https://github.com/meetfranz/franz/commit/64ad918)), closes [#314](https://github.com/meetfranz/franz/issues/314)
25* **Hosted Services:** Do not strip www from custom service Url ([a764321](https://github.com/meetfranz/franz/commit/a764321)) ([BeneStem](https://github.com/BeneStem))
26* **Services:** Fix onNotify in service API ([b15421b](https://github.com/meetfranz/franz/commit/b15421b)) ([dannyqiu](https://github.com/dannyqiu))
27* **Sidebar:** Fix tabs reordering ([86413ba](https://github.com/meetfranz/franz/commit/86413ba)) ([josescgar](https://github.com/josescgar))
28
29
30
1<a name="5.0.0-beta.13"></a> 31<a name="5.0.0-beta.13"></a>
2# [5.0.0-beta.13](https://github.com/meetfranz/franz/compare/v5.0.0-beta.12...v5.0.0-beta.13) (2017-11-06) 32# [5.0.0-beta.13](https://github.com/meetfranz/franz/compare/v5.0.0-beta.12...v5.0.0-beta.13) (2017-11-06)
3 33
diff --git a/appveyor.yml b/appveyor.yml
index c00198312..a8e55d25f 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -9,19 +9,20 @@ environment:
9version: 5.0.0.{build} 9version: 5.0.0.{build}
10 10
11install: 11install:
12 - ps: Install-Product node 7 12 - ps: Install-Product node 8
13 - yarn cache clean
13 - yarn add global gulp-cli@1.2.2 14 - yarn add global gulp-cli@1.2.2
14 - yarn add global gulpjs/gulp#4.0 15 - yarn add global gulpjs/gulp#4.0
15 - yarn install 16 - yarn install
16 17
17cache: 18# cache:
18 - "%LOCALAPPDATA%\\Yarn" 19# - "%LOCALAPPDATA%\\Yarn"
19 20
20before_build: 21before_build:
21 - yarn lint 22 - yarn lint
22 23
23build_script: 24build_script:
24 - yarn build 25 - yarn build --x64 --ia32
25 26
26notifications: 27notifications:
27 - provider: Slack 28 - provider: Slack
@@ -30,3 +31,4 @@ notifications:
30 31
31artifacts: 32artifacts:
32 - path: out\*.exe 33 - path: out\*.exe
34 - path: out\*.yml
diff --git a/electron-builder.yml b/electron-builder.yml
index 3f7ad1e85..adc8f8ae9 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -2,7 +2,7 @@ directories:
2 app: ./build 2 app: ./build
3 output: ./out 3 output: ./out
4 4
5# forceCodeSigning: true 5appId: "com.meetfranz.franz"
6 6
7compression: maximum 7compression: maximum
8 8
diff --git a/package.json b/package.json
index 9b56cdf27..54df530ca 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
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.13", 5 "version": "5.0.0-beta.14",
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",
@@ -26,6 +26,7 @@
26 "author": "Stefan Malzner <stefan@adlk.io>", 26 "author": "Stefan Malzner <stefan@adlk.io>",
27 "license": "Apache-2.0", 27 "license": "Apache-2.0",
28 "dependencies": { 28 "dependencies": {
29 "@meetfranz/electron-notification-state": "^1.0.0",
29 "@paulcbetts/system-idle-time": "^1.0.4", 30 "@paulcbetts/system-idle-time": "^1.0.4",
30 "address-rfc2822": "^2.0.1", 31 "address-rfc2822": "^2.0.1",
31 "auto-launch": "https://github.com/meetfranz/node-auto-launch.git", 32 "auto-launch": "https://github.com/meetfranz/node-auto-launch.git",
@@ -64,6 +65,7 @@
64 "react-sortable-hoc": "^0.6.7", 65 "react-sortable-hoc": "^0.6.7",
65 "react-tooltip": "^3.2.7", 66 "react-tooltip": "^3.2.7",
66 "route-parser": "^0.0.5", 67 "route-parser": "^0.0.5",
68 "semver": "^5.4.1",
67 "smoothscroll-polyfill": "^0.3.4", 69 "smoothscroll-polyfill": "^0.3.4",
68 "tar": "^4.0.2", 70 "tar": "^4.0.2",
69 "uuid": "^3.0.1" 71 "uuid": "^3.0.1"
diff --git a/src/actions/app.js b/src/actions/app.js
index 5db4b739e..25ff9344d 100644
--- a/src/actions/app.js
+++ b/src/actions/app.js
@@ -20,4 +20,8 @@ export default {
20 resetUpdateStatus: {}, 20 resetUpdateStatus: {},
21 installUpdate: {}, 21 installUpdate: {},
22 healthCheck: {}, 22 healthCheck: {},
23 muteApp: {
24 isMuted: PropTypes.bool.isRequired,
25 },
26 toggleMuteApp: {},
23}; 27};
diff --git a/src/actions/service.js b/src/actions/service.js
index ea6ea5acc..e3100e986 100644
--- a/src/actions/service.js
+++ b/src/actions/service.js
@@ -50,6 +50,10 @@ export default {
50 channel: PropTypes.string.isRequired, 50 channel: PropTypes.string.isRequired,
51 args: PropTypes.object.isRequired, 51 args: PropTypes.object.isRequired,
52 }, 52 },
53 sendIPCMessageToAllServices: {
54 channel: PropTypes.string.isRequired,
55 args: PropTypes.object.isRequired,
56 },
53 openWindow: { 57 openWindow: {
54 event: PropTypes.object.isRequired, 58 event: PropTypes.object.isRequired,
55 }, 59 },
@@ -71,6 +75,9 @@ export default {
71 toggleNotifications: { 75 toggleNotifications: {
72 serviceId: PropTypes.string.isRequired, 76 serviceId: PropTypes.string.isRequired,
73 }, 77 },
78 toggleAudio: {
79 serviceId: PropTypes.string.isRequired,
80 },
74 openDevTools: { 81 openDevTools: {
75 serviceId: PropTypes.string.isRequired, 82 serviceId: PropTypes.string.isRequired,
76 }, 83 },
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js
index 79ac6e12f..eba236f16 100644
--- a/src/api/server/LocalApi.js
+++ b/src/api/server/LocalApi.js
@@ -1,3 +1,5 @@
1import SettingsModel from '../../models/Settings';
2
1export default class LocalApi { 3export default class LocalApi {
2 // App 4 // App
3 async updateAppSettings(data) { 5 async updateAppSettings(data) {
@@ -13,7 +15,7 @@ export default class LocalApi {
13 async getAppSettings() { 15 async getAppSettings() {
14 const settingsString = localStorage.getItem('app'); 16 const settingsString = localStorage.getItem('app');
15 try { 17 try {
16 const settings = JSON.parse(settingsString) || {}; 18 const settings = new SettingsModel(JSON.parse(settingsString) || {});
17 console.debug('LocalApi::getAppSettings resolves', settings); 19 console.debug('LocalApi::getAppSettings resolves', settings);
18 20
19 return settings; 21 return settings;
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 932b70cdc..f25f02eaa 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -374,7 +374,7 @@ export default class ServerApi {
374 // News 374 // News
375 async getLatestNews() { 375 async getLatestNews() {
376 // eslint-disable-next-line 376 // eslint-disable-next-line
377 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/news?platform=${os.platform()}&arch=${os.arch()}version=${app.getVersion()}`, 377 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`,
378 this._prepareAuthRequest({ 378 this._prepareAuthRequest({
379 method: 'GET', 379 method: 'GET',
380 })); 380 }));
diff --git a/src/app.js b/src/app.js
index b539ea494..a0b88611c 100644
--- a/src/app.js
+++ b/src/app.js
@@ -101,3 +101,7 @@ window.addEventListener('load', () => {
101 }; 101 };
102 window.franz.render(); 102 window.franz.render();
103}); 103});
104
105// Prevent drag and drop into window from redirecting
106window.addEventListener('dragover', event => event.preventDefault());
107window.addEventListener('drop', event => event.preventDefault());
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index f60c170a8..20dc2f764 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -23,6 +23,10 @@ const messages = defineMessages({
23 id: 'infobar.buttonReloadServices', 23 id: 'infobar.buttonReloadServices',
24 defaultMessage: '!!!Reload services', 24 defaultMessage: '!!!Reload services',
25 }, 25 },
26 changelog: {
27 id: 'infobar.buttonChangelog',
28 defaultMessage: '!!!Changelog',
29 },
26 buttonInstallUpdate: { 30 buttonInstallUpdate: {
27 id: 'infobar.buttonInstallUpdate', 31 id: 'infobar.buttonInstallUpdate',
28 defaultMessage: '!!!Restart & install update', 32 defaultMessage: '!!!Restart & install update',
@@ -135,7 +139,9 @@ export default class AppLayout extends Component {
135 sticky 139 sticky
136 > 140 >
137 <span className="mdi mdi-information" /> 141 <span className="mdi mdi-information" />
138 {intl.formatMessage(messages.updateAvailable)} 142 {intl.formatMessage(messages.updateAvailable)} <a href="https://meetfranz.com/changelog" target="_blank">
143 <u>{intl.formatMessage(messages.changelog)}</u>
144 </a>
139 </InfoBar> 145 </InfoBar>
140 )} 146 )}
141 {services} 147 {services}
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index 6a5c0f365..cb2ecc8ce 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import ReactTooltip from 'react-tooltip'; 3import ReactTooltip from 'react-tooltip';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import { observer } from 'mobx-react';
5 6
6import Tabbar from '../services/tabs/Tabbar'; 7import Tabbar from '../services/tabs/Tabbar';
7import { ctrlKey } from '../../environment'; 8import { ctrlKey } from '../../environment';
@@ -11,16 +12,26 @@ const messages = defineMessages({
11 id: 'sidebar.settings', 12 id: 'sidebar.settings',
12 defaultMessage: '!!!Settings', 13 defaultMessage: '!!!Settings',
13 }, 14 },
15 addNewService: {
16 id: 'sidebar.addNewService',
17 defaultMessage: '!!!Add new service',
18 },
19 mute: {
20 id: 'sidebar.mute',
21 defaultMessage: '!!!Disable audio',
22 },
23 unmute: {
24 id: 'sidebar.unmute',
25 defaultMessage: '!!!Enable audio',
26 },
14}); 27});
15 28
29@observer
16export default class Sidebar extends Component { 30export default class Sidebar extends Component {
17 static propTypes = { 31 static propTypes = {
18 openSettings: PropTypes.func.isRequired, 32 openSettings: PropTypes.func.isRequired,
19 isPremiumUser: PropTypes.bool, 33 toggleMuteApp: PropTypes.func.isRequired,
20 } 34 isAppMuted: PropTypes.bool.isRequired,
21
22 static defaultProps = {
23 isPremiumUser: false,
24 } 35 }
25 36
26 static contextTypes = { 37 static contextTypes = {
@@ -40,8 +51,9 @@ export default class Sidebar extends Component {
40 } 51 }
41 52
42 render() { 53 render() {
43 const { openSettings, isPremiumUser } = this.props; 54 const { openSettings, toggleMuteApp, isAppMuted } = this.props;
44 const { intl } = this.context; 55 const { intl } = this.context;
56
45 return ( 57 return (
46 <div className="sidebar"> 58 <div className="sidebar">
47 <Tabbar 59 <Tabbar
@@ -50,21 +62,25 @@ export default class Sidebar extends Component {
50 disableToolTip={() => this.disableToolTip()} 62 disableToolTip={() => this.disableToolTip()}
51 /> 63 />
52 <button 64 <button
53 onClick={openSettings} 65 onClick={toggleMuteApp}
54 className="sidebar__settings-button" 66 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
67 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`}
68 >
69 <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} />
70 </button>
71 <button
72 onClick={() => openSettings({ path: 'recipes' })}
73 className="sidebar__button sidebar__button--new-service"
74 data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`}
75 >
76 <i className="mdi mdi-plus-box" />
77 </button>
78 <button
79 onClick={() => openSettings({ path: 'app' })}
80 className="sidebar__button sidebar__button--settings"
55 data-tip={`${intl.formatMessage(messages.settings)} (${ctrlKey}+,)`} 81 data-tip={`${intl.formatMessage(messages.settings)} (${ctrlKey}+,)`}
56 > 82 >
57 {isPremiumUser && ( 83 <i className="mdi mdi-settings" />
58 <span className="emoji">
59 <img src="./assets/images/emoji/star.png" alt="" />
60 </span>
61 )}
62 <img
63 src="./assets/images/logo.svg"
64 className="sidebar__logo"
65 alt=""
66 />
67 {intl.formatMessage(messages.settings)}
68 </button> 84 </button>
69 {this.state.tooltipEnabled && ( 85 {this.state.tooltipEnabled && (
70 <ReactTooltip place="right" type="dark" effect="solid" /> 86 <ReactTooltip place="right" type="dark" effect="solid" />
diff --git a/src/components/services/content/ServiceDisabled.js b/src/components/services/content/ServiceDisabled.js
new file mode 100644
index 000000000..b5af3743d
--- /dev/null
+++ b/src/components/services/content/ServiceDisabled.js
@@ -0,0 +1,48 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5
6import Button from '../../ui/Button';
7
8const messages = defineMessages({
9 headline: {
10 id: 'service.disabledHandler.headline',
11 defaultMessage: '!!!{name} is disabled',
12 },
13 action: {
14 id: 'service.disabledHandler.action',
15 defaultMessage: '!!!Enable {name}',
16 },
17});
18
19@observer
20export default class ServiceDisabled extends Component {
21 static propTypes = {
22 name: PropTypes.string.isRequired,
23 enable: PropTypes.func.isRequired,
24 };
25
26 static contextTypes = {
27 intl: intlShape,
28 };
29
30 countdownInterval = null;
31 countdownIntervalTimeout = 1000;
32
33 render() {
34 const { name, enable } = this.props;
35 const { intl } = this.context;
36
37 return (
38 <div className="services__info-layer">
39 <h1>{intl.formatMessage(messages.headline, { name })}</h1>
40 <Button
41 label={intl.formatMessage(messages.action, { name })}
42 buttonType="inverted"
43 onClick={() => enable()}
44 />
45 </div>
46 );
47 }
48}
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index 3ee3155be..faa356d3d 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -7,12 +7,17 @@ import classnames from 'classnames';
7 7
8import ServiceModel from '../../../models/Service'; 8import ServiceModel from '../../../models/Service';
9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; 9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
10import WebviewCrashHandler from './WebviewCrashHandler';
11import ServiceDisabled from './ServiceDisabled';
10 12
11@observer 13@observer
12export default class ServiceWebview extends Component { 14export default class ServiceWebview extends Component {
13 static propTypes = { 15 static propTypes = {
14 service: PropTypes.instanceOf(ServiceModel).isRequired, 16 service: PropTypes.instanceOf(ServiceModel).isRequired,
15 setWebviewReference: PropTypes.func.isRequired, 17 setWebviewReference: PropTypes.func.isRequired,
18 reload: PropTypes.func.isRequired,
19 isAppMuted: PropTypes.bool.isRequired,
20 enable: PropTypes.func.isRequired,
16 }; 21 };
17 22
18 static defaultProps = { 23 static defaultProps = {
@@ -53,6 +58,9 @@ export default class ServiceWebview extends Component {
53 const { 58 const {
54 service, 59 service,
55 setWebviewReference, 60 setWebviewReference,
61 reload,
62 isAppMuted,
63 enable,
56 } = this.props; 64 } = this.props;
57 65
58 const webviewClasses = classnames({ 66 const webviewClasses = classnames({
@@ -70,26 +78,37 @@ export default class ServiceWebview extends Component {
70 78
71 return ( 79 return (
72 <div className={webviewClasses}> 80 <div className={webviewClasses}>
73 <Webview 81 {service.hasCrashed && (
74 ref={(element) => { this.webview = element; }} 82 <WebviewCrashHandler
75 83 name={service.recipe.name}
76 autosize 84 webview={service.webview}
77 src={service.url} 85 reload={reload}
78 preload="./webview/plugin.js" 86 />
79 partition={`persist:service-${service.id}`} 87 )}
80 88 {!service.isEnabled ? (
81 onDidAttach={() => setWebviewReference({ 89 <ServiceDisabled
82 serviceId: service.id, 90 name={service.recipe.name}
83 webview: this.webview.view, 91 webview={service.webview}
84 })} 92 enable={enable}
85 93 />
86 onUpdateTargetUrl={this.updateTargetUrl} 94 ) : (
87 95 <Webview
88 useragent={service.userAgent} 96 ref={(element) => { this.webview = element; }}
89 97 autosize
90 disablewebsecurity 98 src={service.url}
91 allowpopups 99 preload="./webview/plugin.js"
92 /> 100 partition={`persist:service-${service.id}`}
101 onDidAttach={() => setWebviewReference({
102 serviceId: service.id,
103 webview: this.webview.view,
104 })}
105 onUpdateTargetUrl={this.updateTargetUrl}
106 useragent={service.userAgent}
107 muted={isAppMuted || service.isMuted}
108 disablewebsecurity
109 allowpopups
110 />
111 )}
93 {statusBar} 112 {statusBar}
94 </div> 113 </div>
95 ); 114 );
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index 03c68b06f..b1322afc2 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -25,6 +25,9 @@ export default class Services extends Component {
25 setWebviewReference: PropTypes.func.isRequired, 25 setWebviewReference: PropTypes.func.isRequired,
26 handleIPCMessage: PropTypes.func.isRequired, 26 handleIPCMessage: PropTypes.func.isRequired,
27 openWindow: PropTypes.func.isRequired, 27 openWindow: PropTypes.func.isRequired,
28 reload: PropTypes.func.isRequired,
29 isAppMuted: PropTypes.bool.isRequired,
30 update: PropTypes.func.isRequired,
28 }; 31 };
29 32
30 static defaultProps = { 33 static defaultProps = {
@@ -42,6 +45,9 @@ export default class Services extends Component {
42 handleIPCMessage, 45 handleIPCMessage,
43 setWebviewReference, 46 setWebviewReference,
44 openWindow, 47 openWindow,
48 reload,
49 isAppMuted,
50 update,
45 } = this.props; 51 } = this.props;
46 const { intl } = this.context; 52 const { intl } = this.context;
47 53
@@ -73,6 +79,15 @@ export default class Services extends Component {
73 handleIPCMessage={handleIPCMessage} 79 handleIPCMessage={handleIPCMessage}
74 setWebviewReference={setWebviewReference} 80 setWebviewReference={setWebviewReference}
75 openWindow={openWindow} 81 openWindow={openWindow}
82 reload={() => reload({ serviceId: service.id })}
83 isAppMuted={isAppMuted}
84 enable={() => update({
85 serviceId: service.id,
86 serviceData: {
87 isEnabled: true,
88 },
89 redirect: false,
90 })}
76 /> 91 />
77 ))} 92 ))}
78 </div> 93 </div>
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js
new file mode 100644
index 000000000..d3e6951f3
--- /dev/null
+++ b/src/components/services/content/WebviewCrashHandler.js
@@ -0,0 +1,81 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5
6import Button from '../../ui/Button';
7
8const messages = defineMessages({
9 headline: {
10 id: 'service.crashHandler.headline',
11 defaultMessage: '!!!Oh no!',
12 },
13 text: {
14 id: 'service.crashHandler.text',
15 defaultMessage: '!!!{name} has caused an error.',
16 },
17 action: {
18 id: 'service.crashHandler.action',
19 defaultMessage: '!!!Reload {name}',
20 },
21 autoReload: {
22 id: 'service.crashHandler.autoReload',
23 defaultMessage: '!!!Trying to automatically restore {name} in {seconds} seconds',
24 },
25});
26
27@observer
28export default class WebviewCrashHandler extends Component {
29 static propTypes = {
30 name: PropTypes.string.isRequired,
31 reload: PropTypes.func.isRequired,
32 };
33
34 static contextTypes = {
35 intl: intlShape,
36 };
37
38 state = {
39 countdown: 10000,
40 }
41
42 componentDidMount() {
43 const { reload } = this.props;
44
45 this.countdownInterval = setInterval(() => {
46 this.setState({
47 countdown: this.state.countdown - this.countdownIntervalTimeout,
48 });
49
50 if (this.state.countdown <= 0) {
51 reload();
52 clearInterval(this.countdownInterval);
53 }
54 }, this.countdownIntervalTimeout);
55 }
56
57 countdownInterval = null;
58 countdownIntervalTimeout = 1000;
59
60 render() {
61 const { name, reload } = this.props;
62 const { intl } = this.context;
63
64 return (
65 <div className="services__info-layer">
66 <h1>{intl.formatMessage(messages.headline)}</h1>
67 <p>{intl.formatMessage(messages.text, { name })}</p>
68 <Button
69 // label={`Reload ${name}`}
70 label={intl.formatMessage(messages.action, { name })}
71 buttonType="inverted"
72 onClick={() => reload()}
73 />
74 <p className="footnote">{intl.formatMessage(messages.autoReload, {
75 name,
76 seconds: this.state.countdown / 1000,
77 })}</p>
78 </div>
79 );
80 }
81}
diff --git a/src/components/services/tabs/TabBarSortableList.js b/src/components/services/tabs/TabBarSortableList.js
index e5ae36419..2daf55676 100644
--- a/src/components/services/tabs/TabBarSortableList.js
+++ b/src/components/services/tabs/TabBarSortableList.js
@@ -2,17 +2,8 @@ import React, { Component } from 'react';
2import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 2import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import { SortableContainer } from 'react-sortable-hoc'; 4import { SortableContainer } from 'react-sortable-hoc';
5import { defineMessages, intlShape } from 'react-intl';
6 5
7import TabItem from './TabItem'; 6import TabItem from './TabItem';
8import { ctrlKey } from '../../../environment';
9
10const messages = defineMessages({
11 addNewService: {
12 id: 'sidebar.addNewService',
13 defaultMessage: '!!!Add new service',
14 },
15});
16 7
17@observer 8@observer
18class TabBarSortableList extends Component { 9class TabBarSortableList extends Component {
@@ -22,27 +13,25 @@ class TabBarSortableList extends Component {
22 openSettings: PropTypes.func.isRequired, 13 openSettings: PropTypes.func.isRequired,
23 reload: PropTypes.func.isRequired, 14 reload: PropTypes.func.isRequired,
24 toggleNotifications: PropTypes.func.isRequired, 15 toggleNotifications: PropTypes.func.isRequired,
16 toggleAudio: PropTypes.func.isRequired,
25 deleteService: PropTypes.func.isRequired, 17 deleteService: PropTypes.func.isRequired,
26 disableService: PropTypes.func.isRequired, 18 disableService: PropTypes.func.isRequired,
19 enableService: PropTypes.func.isRequired,
27 } 20 }
28 21
29 static contextTypes = {
30 intl: intlShape,
31 };
32
33 render() { 22 render() {
34 const { 23 const {
35 services, 24 services,
36 setActive, 25 setActive,
37 reload, 26 reload,
38 toggleNotifications, 27 toggleNotifications,
28 toggleAudio,
39 deleteService, 29 deleteService,
40 disableService, 30 disableService,
31 enableService,
41 openSettings, 32 openSettings,
42 } = this.props; 33 } = this.props;
43 34
44 const { intl } = this.context;
45
46 return ( 35 return (
47 <ul 36 <ul
48 className="tabs" 37 className="tabs"
@@ -56,12 +45,14 @@ class TabBarSortableList extends Component {
56 shortcutIndex={index + 1} 45 shortcutIndex={index + 1}
57 reload={() => reload({ serviceId: service.id })} 46 reload={() => reload({ serviceId: service.id })}
58 toggleNotifications={() => toggleNotifications({ serviceId: service.id })} 47 toggleNotifications={() => toggleNotifications({ serviceId: service.id })}
48 toggleAudio={() => toggleAudio({ serviceId: service.id })}
59 deleteService={() => deleteService({ serviceId: service.id })} 49 deleteService={() => deleteService({ serviceId: service.id })}
60 disableService={() => disableService({ serviceId: service.id })} 50 disableService={() => disableService({ serviceId: service.id })}
51 enableService={() => enableService({ serviceId: service.id })}
61 openSettings={openSettings} 52 openSettings={openSettings}
62 /> 53 />
63 ))} 54 ))}
64 <li> 55 {/* <li>
65 <button 56 <button
66 className="sidebar__add-service" 57 className="sidebar__add-service"
67 onClick={() => openSettings({ path: 'recipes' })} 58 onClick={() => openSettings({ path: 'recipes' })}
@@ -69,7 +60,7 @@ class TabBarSortableList extends Component {
69 > 60 >
70 <span className="mdi mdi-plus" /> 61 <span className="mdi mdi-plus" />
71 </button> 62 </button>
72 </li> 63 </li> */}
73 </ul> 64 </ul>
74 ); 65 );
75 } 66 }
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index 9e03d2e21..a7136c43f 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -28,10 +28,22 @@ const messages = defineMessages({
28 id: 'tabs.item.enableNotification', 28 id: 'tabs.item.enableNotification',
29 defaultMessage: '!!!Enable notifications', 29 defaultMessage: '!!!Enable notifications',
30 }, 30 },
31 disableAudio: {
32 id: 'tabs.item.disableAudio',
33 defaultMessage: '!!!Disable audio',
34 },
35 enableAudio: {
36 id: 'tabs.item.enableAudio',
37 defaultMessage: '!!!Enable audio',
38 },
31 disableService: { 39 disableService: {
32 id: 'tabs.item.disableService', 40 id: 'tabs.item.disableService',
33 defaultMessage: '!!!Disable Service', 41 defaultMessage: '!!!Disable Service',
34 }, 42 },
43 enableService: {
44 id: 'tabs.item.enableService',
45 defaultMessage: '!!!Enable Service',
46 },
35 deleteService: { 47 deleteService: {
36 id: 'tabs.item.deleteService', 48 id: 'tabs.item.deleteService',
37 defaultMessage: '!!!Delete Service', 49 defaultMessage: '!!!Delete Service',
@@ -46,9 +58,11 @@ class TabItem extends Component {
46 shortcutIndex: PropTypes.number.isRequired, 58 shortcutIndex: PropTypes.number.isRequired,
47 reload: PropTypes.func.isRequired, 59 reload: PropTypes.func.isRequired,
48 toggleNotifications: PropTypes.func.isRequired, 60 toggleNotifications: PropTypes.func.isRequired,
61 toggleAudio: PropTypes.func.isRequired,
49 openSettings: PropTypes.func.isRequired, 62 openSettings: PropTypes.func.isRequired,
50 deleteService: PropTypes.func.isRequired, 63 deleteService: PropTypes.func.isRequired,
51 disableService: PropTypes.func.isRequired, 64 disableService: PropTypes.func.isRequired,
65 enableService: PropTypes.func.isRequired,
52 }; 66 };
53 67
54 static contextTypes = { 68 static contextTypes = {
@@ -62,8 +76,10 @@ class TabItem extends Component {
62 shortcutIndex, 76 shortcutIndex,
63 reload, 77 reload,
64 toggleNotifications, 78 toggleNotifications,
79 toggleAudio,
65 deleteService, 80 deleteService,
66 disableService, 81 disableService,
82 enableService,
67 openSettings, 83 openSettings,
68 } = this.props; 84 } = this.props;
69 const { intl } = this.context; 85 const { intl } = this.context;
@@ -90,8 +106,13 @@ class TabItem extends Component {
90 : intl.formatMessage(messages.enableNotifications), 106 : intl.formatMessage(messages.enableNotifications),
91 click: () => toggleNotifications(), 107 click: () => toggleNotifications(),
92 }, { 108 }, {
93 label: intl.formatMessage(messages.disableService), 109 label: service.isMuted
94 click: () => disableService(), 110 ? intl.formatMessage(messages.enableAudio)
111 : intl.formatMessage(messages.disableAudio),
112 click: () => toggleAudio(),
113 }, {
114 label: intl.formatMessage(service.isEnabled ? messages.disableService : messages.enableService),
115 click: () => (service.isEnabled ? disableService() : enableService()),
95 }, { 116 }, {
96 type: 'separator', 117 type: 'separator',
97 }, { 118 }, {
@@ -106,6 +127,7 @@ class TabItem extends Component {
106 'tab-item': true, 127 'tab-item': true,
107 'is-active': service.isActive, 128 'is-active': service.isActive,
108 'has-custom-icon': service.hasCustomIcon, 129 'has-custom-icon': service.hasCustomIcon,
130 'is-disabled': !service.isEnabled,
109 })} 131 })}
110 onClick={clickHandler} 132 onClick={clickHandler}
111 onContextMenu={() => menu.popup(remote.getCurrentWindow())} 133 onContextMenu={() => menu.popup(remote.getCurrentWindow())}
diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js
index fdb2c0a59..9da1090b7 100644
--- a/src/components/services/tabs/Tabbar.js
+++ b/src/components/services/tabs/Tabbar.js
@@ -15,6 +15,7 @@ export default class TabBar extends Component {
15 reorder: PropTypes.func.isRequired, 15 reorder: PropTypes.func.isRequired,
16 reload: PropTypes.func.isRequired, 16 reload: PropTypes.func.isRequired,
17 toggleNotifications: PropTypes.func.isRequired, 17 toggleNotifications: PropTypes.func.isRequired,
18 toggleAudio: PropTypes.func.isRequired,
18 deleteService: PropTypes.func.isRequired, 19 deleteService: PropTypes.func.isRequired,
19 updateService: PropTypes.func.isRequired, 20 updateService: PropTypes.func.isRequired,
20 } 21 }
@@ -29,20 +30,30 @@ export default class TabBar extends Component {
29 reorder({ oldIndex, newIndex }); 30 reorder({ oldIndex, newIndex });
30 }; 31 };
31 32
32 disableService = ({ serviceId }) => { 33 shouldPreventSorting = event => event.target.tagName !== 'LI';
34
35 toggleService = ({ serviceId, isEnabled }) => {
33 const { updateService } = this.props; 36 const { updateService } = this.props;
34 37
35 if (serviceId) { 38 if (serviceId) {
36 updateService({ 39 updateService({
37 serviceId, 40 serviceId,
38 serviceData: { 41 serviceData: {
39 isEnabled: false, 42 isEnabled,
40 }, 43 },
41 redirect: false, 44 redirect: false,
42 }); 45 });
43 } 46 }
44 } 47 }
45 48
49 disableService({ serviceId }) {
50 this.toggleService({ serviceId, isEnabled: false });
51 }
52
53 enableService({ serviceId }) {
54 this.toggleService({ serviceId, isEnabled: true });
55 }
56
46 render() { 57 render() {
47 const { 58 const {
48 services, 59 services,
@@ -51,6 +62,7 @@ export default class TabBar extends Component {
51 disableToolTip, 62 disableToolTip,
52 reload, 63 reload,
53 toggleNotifications, 64 toggleNotifications,
65 toggleAudio,
54 deleteService, 66 deleteService,
55 } = this.props; 67 } = this.props;
56 68
@@ -61,10 +73,13 @@ export default class TabBar extends Component {
61 setActive={setActive} 73 setActive={setActive}
62 onSortEnd={this.onSortEnd} 74 onSortEnd={this.onSortEnd}
63 onSortStart={disableToolTip} 75 onSortStart={disableToolTip}
76 shouldCancelStart={this.shouldPreventSorting}
64 reload={reload} 77 reload={reload}
65 toggleNotifications={toggleNotifications} 78 toggleNotifications={toggleNotifications}
79 toggleAudio={toggleAudio}
66 deleteService={deleteService} 80 deleteService={deleteService}
67 disableService={this.disableService} 81 disableService={args => this.disableService(args)}
82 enableService={args => this.enableService(args)}
68 openSettings={openSettings} 83 openSettings={openSettings}
69 distance={20} 84 distance={20}
70 axis="y" 85 axis="y"
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 3b21a7765..fea8d682d 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -74,7 +74,6 @@ export default class SettingsNavigation extends Component {
74 <Link 74 <Link
75 to="/auth/logout" 75 to="/auth/logout"
76 className="settings-navigation__link" 76 className="settings-navigation__link"
77 activeClassName="is-active"
78 > 77 >
79 {intl.formatMessage(messages.logout)} 78 {intl.formatMessage(messages.logout)}
80 </Link> 79 </Link>
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js
index 02ea04e35..b6ade5da4 100644
--- a/src/components/settings/recipes/RecipesDashboard.js
+++ b/src/components/settings/recipes/RecipesDashboard.js
@@ -9,6 +9,7 @@ import Infobox from '../../ui/Infobox';
9import RecipeItem from './RecipeItem'; 9import RecipeItem from './RecipeItem';
10import Loader from '../../ui/Loader'; 10import Loader from '../../ui/Loader';
11import Appear from '../../ui/effects/Appear'; 11import Appear from '../../ui/effects/Appear';
12import { FRANZ_SERVICE_REQUEST } from '../../../config';
12 13
13const messages = defineMessages({ 14const messages = defineMessages({
14 headline: { 15 headline: {
@@ -35,6 +36,10 @@ const messages = defineMessages({
35 id: 'settings.recipes.servicesSuccessfulAddedInfo', 36 id: 'settings.recipes.servicesSuccessfulAddedInfo',
36 defaultMessage: '!!!Service successfully added', 37 defaultMessage: '!!!Service successfully added',
37 }, 38 },
39 missingService: {
40 id: 'settings.recipes.missingService',
41 defaultMessage: '!!!Missing a service?',
42 },
38}); 43});
39 44
40@observer 45@observer
@@ -96,33 +101,39 @@ export default class RecipesDashboard extends Component {
96 </Infobox> 101 </Infobox>
97 </Appear> 102 </Appear>
98 )} 103 )}
99 {!searchNeedle && ( 104 {/* {!searchNeedle && ( */}
100 <div className="recipes__navigation"> 105 <div className="recipes__navigation">
101 <Link 106 <Link
102 to="/settings/recipes" 107 to="/settings/recipes"
103 className="badge" 108 className="badge"
104 activeClassName="badge--primary" 109 activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`}
105 > 110 onClick={() => resetSearch()}
106 {intl.formatMessage(messages.mostPopularRecipes)} 111 >
107 </Link> 112 {intl.formatMessage(messages.mostPopularRecipes)}
113 </Link>
114 <Link
115 to="/settings/recipes/all"
116 className="badge"
117 activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`}
118 onClick={() => resetSearch()}
119 >
120 {intl.formatMessage(messages.allRecipes)}
121 </Link>
122 {devRecipesCount > 0 && (
108 <Link 123 <Link
109 to="/settings/recipes/all" 124 to="/settings/recipes/dev"
110 className="badge" 125 className="badge"
111 activeClassName="badge--primary" 126 activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`}
127 onClick={() => resetSearch()}
112 > 128 >
113 {intl.formatMessage(messages.allRecipes)} 129 {intl.formatMessage(messages.devRecipes)} ({devRecipesCount})
114 </Link> 130 </Link>
115 {devRecipesCount > 0 && ( 131 )}
116 <Link 132 <a href={FRANZ_SERVICE_REQUEST} target="_blank" className="link recipes__service-request">
117 to="/settings/recipes/dev" 133 {intl.formatMessage(messages.missingService)} <i className="mdi mdi-open-in-new" />
118 className="badge" 134 </a>
119 activeClassName="badge--primary" 135 </div>
120 > 136 {/* )} */}
121 {intl.formatMessage(messages.devRecipes)} ({devRecipesCount})
122 </Link>
123 )}
124 </div>
125 )}
126 {isLoading ? ( 137 {isLoading ? (
127 <Loader /> 138 <Loader />
128 ) : ( 139 ) : (
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 9b359a78e..36cefe87c 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -61,7 +61,11 @@ const messages = defineMessages({
61 }, 61 },
62 indirectMessageInfo: { 62 indirectMessageInfo: {
63 id: 'settings.service.form.indirectMessageInfo', 63 id: 'settings.service.form.indirectMessageInfo',
64 defaultMessage: '!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...', // eslint-disable-line 64 defaultMessage: '!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...',
65 },
66 isMutedInfo: {
67 id: 'settings.service.form.isMutedInfo',
68 defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted',
65 }, 69 },
66}); 70});
67 71
@@ -110,7 +114,7 @@ export default class EditServiceForm extends Component {
110 if (recipe.validateUrl && values.customUrl) { 114 if (recipe.validateUrl && values.customUrl) {
111 this.setState({ isValidatingCustomUrl: true }); 115 this.setState({ isValidatingCustomUrl: true });
112 try { 116 try {
113 values.customUrl = normalizeUrl(values.customUrl); 117 values.customUrl = normalizeUrl(values.customUrl, { stripWWW: false });
114 isValid = await recipe.validateUrl(values.customUrl); 118 isValid = await recipe.validateUrl(values.customUrl);
115 } catch (err) { 119 } catch (err) {
116 console.warn('ValidateURL', err); 120 console.warn('ValidateURL', err);
@@ -231,11 +235,15 @@ export default class EditServiceForm extends Component {
231 {recipe.hasIndirectMessages && ( 235 {recipe.hasIndirectMessages && (
232 <div> 236 <div>
233 <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> 237 <Toggle field={form.$('isIndirectMessageBadgeEnabled')} />
234 <p className="settings__indirect-message-help"> 238 <p className="settings__help">
235 {intl.formatMessage(messages.indirectMessageInfo)} 239 {intl.formatMessage(messages.indirectMessageInfo)}
236 </p> 240 </p>
237 </div> 241 </div>
238 )} 242 )}
243 <Toggle field={form.$('isMuted')} />
244 <p className="settings__help">
245 {intl.formatMessage(messages.isMutedInfo)}
246 </p>
239 <Toggle field={form.$('isEnabled')} /> 247 <Toggle field={form.$('isEnabled')} />
240 </div> 248 </div>
241 {recipe.message && ( 249 {recipe.message && (
diff --git a/src/components/settings/services/ServiceItem.js b/src/components/settings/services/ServiceItem.js
index 20d8581d0..9743315b0 100644
--- a/src/components/settings/services/ServiceItem.js
+++ b/src/components/settings/services/ServiceItem.js
@@ -16,6 +16,10 @@ const messages = defineMessages({
16 id: 'settings.services.tooltip.notificationsDisabled', 16 id: 'settings.services.tooltip.notificationsDisabled',
17 defaultMessage: '!!!Notifications are disabled', 17 defaultMessage: '!!!Notifications are disabled',
18 }, 18 },
19 tooltipIsMuted: {
20 id: 'settings.services.tooltip.isMuted',
21 defaultMessage: '!!!All sounds are muted',
22 },
19}); 23});
20 24
21@observer 25@observer
@@ -66,6 +70,17 @@ export default class ServiceItem extends Component {
66 className="service-table__column-info" 70 className="service-table__column-info"
67 onClick={goToServiceForm} 71 onClick={goToServiceForm}
68 > 72 >
73 {service.isMuted && (
74 <span
75 className="mdi mdi-bell-off"
76 data-tip={intl.formatMessage(messages.tooltipIsMuted)}
77 />
78 )}
79 </td>
80 <td
81 className="service-table__column-info"
82 onClick={goToServiceForm}
83 >
69 {!service.isEnabled && ( 84 {!service.isEnabled && (
70 <span 85 <span
71 className="mdi mdi-power" 86 className="mdi mdi-power"
@@ -85,13 +100,6 @@ export default class ServiceItem extends Component {
85 )} 100 )}
86 <ReactTooltip place="top" type="dark" effect="solid" /> 101 <ReactTooltip place="top" type="dark" effect="solid" />
87 </td> 102 </td>
88 {/* <td className="service-table__column-action">
89 <input
90 type="checkbox"
91 onChange={toggleAction}
92 checked={service.isEnabled}
93 />
94 </td> */}
95 </tr> 103 </tr>
96 ); 104 );
97 } 105 }
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 5675fecf4..4ce9b7ab2 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -9,6 +9,8 @@ import Button from '../../ui/Button';
9import Toggle from '../../ui/Toggle'; 9import Toggle from '../../ui/Toggle';
10import Select from '../../ui/Select'; 10import Select from '../../ui/Select';
11 11
12import { FRANZ_TRANSLATION } from '../../../config';
13
12const messages = defineMessages({ 14const messages = defineMessages({
13 headline: { 15 headline: {
14 id: 'settings.app.headline', 16 id: 'settings.app.headline',
@@ -26,6 +28,18 @@ const messages = defineMessages({
26 id: 'settings.app.headlineUpdates', 28 id: 'settings.app.headlineUpdates',
27 defaultMessage: '!!!Updates', 29 defaultMessage: '!!!Updates',
28 }, 30 },
31 headlineAppearance: {
32 id: 'settings.app.headlineAppearance',
33 defaultMessage: '!!!Appearance',
34 },
35 headlineAdvanced: {
36 id: 'settings.app.headlineAdvanced',
37 defaultMessage: '!!!Advanced',
38 },
39 translationHelp: {
40 id: 'settings.app.translationHelp',
41 defaultMessage: '!!!Help us to translate Franz into your language.',
42 },
29 buttonSearchForUpdate: { 43 buttonSearchForUpdate: {
30 id: 'settings.app.buttonSearchForUpdate', 44 id: 'settings.app.buttonSearchForUpdate',
31 defaultMessage: '!!!Check for updates', 45 defaultMessage: '!!!Check for updates',
@@ -50,6 +64,10 @@ const messages = defineMessages({
50 id: 'settings.app.currentVersion', 64 id: 'settings.app.currentVersion',
51 defaultMessage: '!!!Current version:', 65 defaultMessage: '!!!Current version:',
52 }, 66 },
67 restartRequired: {
68 id: 'settings.app.restartRequired',
69 defaultMessage: '!!!Changes require restart',
70 },
53}); 71});
54 72
55@observer 73@observer
@@ -112,16 +130,38 @@ export default class EditSettingsForm extends Component {
112 onChange={e => this.submit(e)} 130 onChange={e => this.submit(e)}
113 id="form" 131 id="form"
114 > 132 >
115 <h2>{intl.formatMessage(messages.headlineGeneral)}</h2> 133 {/* General */}
134 <h2 id="general">{intl.formatMessage(messages.headlineGeneral)}</h2>
116 <Toggle field={form.$('autoLaunchOnStart')} /> 135 <Toggle field={form.$('autoLaunchOnStart')} />
117 <Toggle field={form.$('runInBackground')} /> 136 <Toggle field={form.$('runInBackground')} />
118 <Toggle field={form.$('enableSystemTray')} /> 137 <Toggle field={form.$('enableSystemTray')} />
119 {process.platform === 'win32' && ( 138 {process.platform === 'win32' && (
120 <Toggle field={form.$('minimizeToSystemTray')} /> 139 <Toggle field={form.$('minimizeToSystemTray')} />
121 )} 140 )}
122 <h2>{intl.formatMessage(messages.headlineLanguage)}</h2> 141
142 {/* Appearance */}
143 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2>
144 <Toggle field={form.$('showDisabledServices')} />
145
146 {/* Language */}
147 <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2>
123 <Select field={form.$('locale')} showLabel={false} /> 148 <Select field={form.$('locale')} showLabel={false} />
124 <h2>{intl.formatMessage(messages.headlineUpdates)}</h2> 149 <a
150 href={FRANZ_TRANSLATION}
151 target="_blank"
152 className="link"
153 >
154 {intl.formatMessage(messages.translationHelp)} <i className="mdi mdi-open-in-new" />
155 </a>
156
157 {/* Advanced */}
158 <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2>
159 <Toggle field={form.$('enableSpellchecking')} />
160 <p className="settings__help">{intl.formatMessage(messages.restartRequired)}</p>
161 {/* <Select field={form.$('spellcheckingLanguage')} /> */}
162
163 {/* Updates */}
164 <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2>
125 {updateIsReadyToInstall ? ( 165 {updateIsReadyToInstall ? (
126 <Button 166 <Button
127 label={intl.formatMessage(messages.buttonInstallUpdate)} 167 label={intl.formatMessage(messages.buttonInstallUpdate)}
diff --git a/src/components/ui/AppLoader.js b/src/components/ui/AppLoader.js
index 64a212969..ac3cdcb05 100644
--- a/src/components/ui/AppLoader.js
+++ b/src/components/ui/AppLoader.js
@@ -8,7 +8,7 @@ export default function () {
8 <div className="app-loader"> 8 <div className="app-loader">
9 <Appear> 9 <Appear>
10 <h1 className="app-loader__title">Franz</h1> 10 <h1 className="app-loader__title">Franz</h1>
11 <Loader /> 11 <Loader color="#FFF" />
12 </Appear> 12 </Appear>
13 </div> 13 </div>
14 ); 14 );
diff --git a/src/components/ui/InfoBar.js b/src/components/ui/InfoBar.js
index aea2bd888..84a5f1446 100644
--- a/src/components/ui/InfoBar.js
+++ b/src/components/ui/InfoBar.js
@@ -61,10 +61,13 @@ export default class InfoBar extends Component {
61 [`${className}`]: true, 61 [`${className}`]: true,
62 })} 62 })}
63 > 63 >
64 <div onClick={onClick} className="info-bar__content"> 64 <div className="info-bar__content">
65 {children} 65 {children}
66 {ctaLabel && ( 66 {ctaLabel && (
67 <button className="info-bar__cta"> 67 <button
68 className="info-bar__cta"
69 onClick={onClick}
70 >
68 <Loader 71 <Loader
69 loaded={!ctaLoading} 72 loaded={!ctaLoading}
70 lines={10} 73 lines={10}
diff --git a/src/components/ui/Loader.js b/src/components/ui/Loader.js
index e4fbd96a2..f73296bb6 100644
--- a/src/components/ui/Loader.js
+++ b/src/components/ui/Loader.js
@@ -9,12 +9,14 @@ export default class LoaderComponent extends Component {
9 children: oneOrManyChildElements, 9 children: oneOrManyChildElements,
10 loaded: PropTypes.bool, 10 loaded: PropTypes.bool,
11 className: PropTypes.string, 11 className: PropTypes.string,
12 color: PropTypes.string,
12 }; 13 };
13 14
14 static defaultProps = { 15 static defaultProps = {
15 children: null, 16 children: null,
16 loaded: false, 17 loaded: false,
17 className: '', 18 className: '',
19 color: '#373a3c',
18 }; 20 };
19 21
20 render() { 22 render() {
@@ -22,6 +24,7 @@ export default class LoaderComponent extends Component {
22 children, 24 children,
23 loaded, 25 loaded,
24 className, 26 className,
27 color,
25 } = this.props; 28 } = this.props;
26 29
27 return ( 30 return (
@@ -30,7 +33,7 @@ export default class LoaderComponent extends Component {
30 // lines={10} 33 // lines={10}
31 width={4} 34 width={4}
32 scale={0.6} 35 scale={0.6}
33 color="#373a3c" 36 color={color}
34 component="span" 37 component="span"
35 className={className} 38 className={className}
36 > 39 >
diff --git a/src/components/ui/Subscription.js b/src/components/ui/Subscription.js
index fe0925a26..8bff72095 100644
--- a/src/components/ui/Subscription.js
+++ b/src/components/ui/Subscription.js
@@ -93,6 +93,10 @@ const messages = defineMessages({
93 id: 'subscription.mining.moreInformation', 93 id: 'subscription.mining.moreInformation',
94 defaultMessage: '!!!Get more information about this plan', 94 defaultMessage: '!!!Get more information about this plan',
95 }, 95 },
96 euTaxInfo: {
97 id: 'subscription.euTaxInfo',
98 defaultMessage: '!!!EU residents: local sales tax may apply',
99 },
96}); 100});
97 101
98@observer 102@observer
@@ -144,14 +148,18 @@ export default class SubscriptionForm extends Component {
144 label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'year') 148 label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'year')
145 ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}` 149 ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}`
146 : 'yearly'}`, 150 : 'yearly'}`,
147 }, {
148 value: 'mining',
149 label: intl.formatMessage(messages.typeMining),
150 }], 151 }],
151 }, 152 },
152 }, 153 },
153 }; 154 };
154 155
156 if (this.props.plan.miner) {
157 form.fields.paymentTier.options.push({
158 value: 'mining',
159 label: intl.formatMessage(messages.typeMining),
160 });
161 }
162
155 if (this.props.showSkipOption) { 163 if (this.props.showSkipOption) {
156 form.fields.paymentTier.options.unshift({ 164 form.fields.paymentTier.options.unshift({
157 value: 'skip', 165 value: 'skip',
@@ -259,6 +267,11 @@ export default class SubscriptionForm extends Component {
259 onClick={() => handlePayment(this.form.$('paymentTier').value)} 267 onClick={() => handlePayment(this.form.$('paymentTier').value)}
260 /> 268 />
261 )} 269 )}
270 {this.form.$('paymentTier').value !== 'skip' && this.form.$('paymentTier').value !== 'mining' && (
271 <p className="legal">
272 {intl.formatMessage(messages.euTaxInfo)}
273 </p>
274 )}
262 </Loader> 275 </Loader>
263 ); 276 );
264 } 277 }
diff --git a/src/config.js b/src/config.js
index 0a4856ece..b3e00c92c 100644
--- a/src/config.js
+++ b/src/config.js
@@ -7,9 +7,16 @@ export const GA_ID = 'UA-74126766-6';
7export const DEFAULT_APP_SETTINGS = { 7export const DEFAULT_APP_SETTINGS = {
8 autoLaunchOnStart: true, 8 autoLaunchOnStart: true,
9 autoLaunchInBackground: false, 9 autoLaunchInBackground: false,
10 runInBackground: false, 10 runInBackground: true,
11 enableSystemTray: true, 11 enableSystemTray: true,
12 minimizeToSystemTray: false, 12 minimizeToSystemTray: false,
13 locale: 'en-us', // TODO: Replace with proper solution once translations are in 13 showDisabledServices: true,
14 enableSpellchecking: true,
15 // spellcheckingLanguage: 'auto',
16 locale: 'en-US',
14 beta: false, 17 beta: false,
18 isAppMuted: false,
15}; 19};
20
21export const FRANZ_SERVICE_REQUEST = 'http://bit.ly/franz-service-request';
22export const FRANZ_TRANSLATION = 'http://bit.ly/franz-translate';
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index aa7f7952a..7c6ceccd6 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -7,7 +7,7 @@ import RecipesStore from '../../stores/RecipesStore';
7import ServicesStore from '../../stores/ServicesStore'; 7import ServicesStore from '../../stores/ServicesStore';
8import UIStore from '../../stores/UIStore'; 8import UIStore from '../../stores/UIStore';
9import NewsStore from '../../stores/NewsStore'; 9import NewsStore from '../../stores/NewsStore';
10import UserStore from '../../stores/UserStore'; 10import SettingsStore from '../../stores/SettingsStore';
11import RequestStore from '../../stores/RequestStore'; 11import RequestStore from '../../stores/RequestStore';
12import GlobalErrorStore from '../../stores/GlobalErrorStore'; 12import GlobalErrorStore from '../../stores/GlobalErrorStore';
13 13
@@ -29,8 +29,8 @@ export default class AppLayoutContainer extends Component {
29 services, 29 services,
30 ui, 30 ui,
31 news, 31 news,
32 settings,
32 globalError, 33 globalError,
33 user,
34 requests, 34 requests,
35 } = this.props.stores; 35 } = this.props.stores;
36 36
@@ -43,6 +43,7 @@ export default class AppLayoutContainer extends Component {
43 reorder, 43 reorder,
44 reload, 44 reload,
45 toggleNotifications, 45 toggleNotifications,
46 toggleAudio,
46 deleteService, 47 deleteService,
47 updateService, 48 updateService,
48 } = this.props.actions.service; 49 } = this.props.actions.service;
@@ -53,6 +54,7 @@ export default class AppLayoutContainer extends Component {
53 54
54 const { 55 const {
55 installUpdate, 56 installUpdate,
57 toggleMuteApp,
56 } = this.props.actions.app; 58 } = this.props.actions.app;
57 59
58 const { 60 const {
@@ -61,42 +63,44 @@ export default class AppLayoutContainer extends Component {
61 } = this.props.actions.ui; 63 } = this.props.actions.ui;
62 64
63 const { children } = this.props; 65 const { children } = this.props;
64 const allServices = services.enabled;
65 66
66 const isLoadingServices = services.allServicesRequest.isExecuting 67 const isLoadingServices = services.allServicesRequest.isExecuting
67 && services.allServicesRequest.isExecutingFirstTime; 68 && services.allServicesRequest.isExecutingFirstTime;
68 69
69 // const isLoadingRecipes = recipes.allRecipesRequest.isExecuting
70 // && recipes.allRecipesRequest.isExecutingFirstTime;
71
72 if (isLoadingServices) { 70 if (isLoadingServices) {
73 return ( 71 return (
74 <AppLoader /> 72 <AppLoader />
75 ); 73 );
76 } 74 }
77 75
76 const isMuted = settings.all.isAppMuted || app.isSystemMuted;
77
78 const sidebar = ( 78 const sidebar = (
79 <Sidebar 79 <Sidebar
80 services={allServices} 80 services={services.allDisplayed}
81 setActive={setActive} 81 setActive={setActive}
82 isAppMuted={isMuted}
82 openSettings={openSettings} 83 openSettings={openSettings}
83 closeSettings={closeSettings} 84 closeSettings={closeSettings}
84 reorder={reorder} 85 reorder={reorder}
85 reload={reload} 86 reload={reload}
86 toggleNotifications={toggleNotifications} 87 toggleNotifications={toggleNotifications}
88 toggleAudio={toggleAudio}
87 deleteService={deleteService} 89 deleteService={deleteService}
88 updateService={updateService} 90 updateService={updateService}
89 isPremiumUser={user.data.isPremium} 91 toggleMuteApp={toggleMuteApp}
90 /> 92 />
91 ); 93 );
92 94
93 const servicesContainer = ( 95 const servicesContainer = (
94 <Services 96 <Services
95 // settings={allSettings} 97 services={services.allDisplayed}
96 services={allServices}
97 handleIPCMessage={handleIPCMessage} 98 handleIPCMessage={handleIPCMessage}
98 setWebviewReference={setWebviewReference} 99 setWebviewReference={setWebviewReference}
99 openWindow={openWindow} 100 openWindow={openWindow}
101 reload={reload}
102 isAppMuted={isMuted}
103 update={updateService}
100 /> 104 />
101 ); 105 );
102 106
@@ -130,7 +134,7 @@ AppLayoutContainer.wrappedComponent.propTypes = {
130 app: PropTypes.instanceOf(AppStore).isRequired, 134 app: PropTypes.instanceOf(AppStore).isRequired,
131 ui: PropTypes.instanceOf(UIStore).isRequired, 135 ui: PropTypes.instanceOf(UIStore).isRequired,
132 news: PropTypes.instanceOf(NewsStore).isRequired, 136 news: PropTypes.instanceOf(NewsStore).isRequired,
133 user: PropTypes.instanceOf(UserStore).isRequired, 137 settings: PropTypes.instanceOf(SettingsStore).isRequired,
134 requests: PropTypes.instanceOf(RequestStore).isRequired, 138 requests: PropTypes.instanceOf(RequestStore).isRequired,
135 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, 139 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired,
136 }).isRequired, 140 }).isRequired,
@@ -139,6 +143,7 @@ AppLayoutContainer.wrappedComponent.propTypes = {
139 setActive: PropTypes.func.isRequired, 143 setActive: PropTypes.func.isRequired,
140 reload: PropTypes.func.isRequired, 144 reload: PropTypes.func.isRequired,
141 toggleNotifications: PropTypes.func.isRequired, 145 toggleNotifications: PropTypes.func.isRequired,
146 toggleAudio: PropTypes.func.isRequired,
142 handleIPCMessage: PropTypes.func.isRequired, 147 handleIPCMessage: PropTypes.func.isRequired,
143 setWebviewReference: PropTypes.func.isRequired, 148 setWebviewReference: PropTypes.func.isRequired,
144 openWindow: PropTypes.func.isRequired, 149 openWindow: PropTypes.func.isRequired,
@@ -156,7 +161,7 @@ AppLayoutContainer.wrappedComponent.propTypes = {
156 }).isRequired, 161 }).isRequired,
157 app: PropTypes.shape({ 162 app: PropTypes.shape({
158 installUpdate: PropTypes.func.isRequired, 163 installUpdate: PropTypes.func.isRequired,
159 healthCheck: PropTypes.func.isRequired, 164 toggleMuteApp: PropTypes.func.isRequired,
160 }).isRequired, 165 }).isRequired,
161 requests: PropTypes.shape({ 166 requests: PropTypes.shape({
162 retryRequiredRequests: PropTypes.func.isRequired, 167 retryRequiredRequests: PropTypes.func.isRequired,
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index 6c614b941..191ef447b 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -9,7 +9,6 @@ import ServicesStore from '../../stores/ServicesStore';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import { gaPage } from '../../lib/analytics'; 10import { gaPage } from '../../lib/analytics';
11 11
12
13import ServiceError from '../../components/settings/services/ServiceError'; 12import ServiceError from '../../components/settings/services/ServiceError';
14import EditServiceForm from '../../components/settings/services/EditServiceForm'; 13import EditServiceForm from '../../components/settings/services/EditServiceForm';
15import { required, url, oneRequired } from '../../helpers/validation-helpers'; 14import { required, url, oneRequired } from '../../helpers/validation-helpers';
@@ -27,6 +26,10 @@ const messages = defineMessages({
27 id: 'settings.service.form.enableNotification', 26 id: 'settings.service.form.enableNotification',
28 defaultMessage: '!!!Enable Notifications', 27 defaultMessage: '!!!Enable Notifications',
29 }, 28 },
29 enableAudio: {
30 id: 'settings.service.form.enableAudio',
31 defaultMessage: '!!!Enable audio',
32 },
30 team: { 33 team: {
31 id: 'settings.service.form.team', 34 id: 'settings.service.form.team',
32 defaultMessage: '!!!Team', 35 defaultMessage: '!!!Team',
@@ -51,11 +54,14 @@ export default class EditServiceScreen extends Component {
51 gaPage('Settings/Service/Edit'); 54 gaPage('Settings/Service/Edit');
52 } 55 }
53 56
54 onSubmit(serviceData) { 57 onSubmit(data) {
55 const { action } = this.props.router.params; 58 const { action } = this.props.router.params;
56 const { recipes, services } = this.props.stores; 59 const { recipes, services } = this.props.stores;
57 const { createService, updateService } = this.props.actions.service; 60 const { createService, updateService } = this.props.actions.service;
58 61
62 const serviceData = data;
63 serviceData.isMuted = !serviceData.isMuted;
64
59 if (action === 'edit') { 65 if (action === 'edit') {
60 updateService({ serviceId: services.activeSettings.id, serviceData }); 66 updateService({ serviceId: services.activeSettings.id, serviceData });
61 } else { 67 } else {
@@ -82,6 +88,11 @@ export default class EditServiceScreen extends Component {
82 value: service.isNotificationEnabled, 88 value: service.isNotificationEnabled,
83 default: true, 89 default: true,
84 }, 90 },
91 isMuted: {
92 label: intl.formatMessage(messages.enableAudio),
93 value: !service.isMuted,
94 default: true,
95 },
85 }, 96 },
86 }; 97 };
87 98
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 6dc2175e1..62e255dab 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -7,7 +7,7 @@ import AppStore from '../../stores/AppStore';
7import SettingsStore from '../../stores/SettingsStore'; 7import SettingsStore from '../../stores/SettingsStore';
8import UserStore from '../../stores/UserStore'; 8import UserStore from '../../stores/UserStore';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import languages from '../../i18n/languages'; 10import { APP_LOCALES } from '../../i18n/languages';
11import { gaPage } from '../../lib/analytics'; 11import { gaPage } from '../../lib/analytics';
12import { DEFAULT_APP_SETTINGS } from '../../config'; 12import { DEFAULT_APP_SETTINGS } from '../../config';
13 13
@@ -39,6 +39,22 @@ const messages = defineMessages({
39 id: 'settings.app.form.language', 39 id: 'settings.app.form.language',
40 defaultMessage: '!!!Language', 40 defaultMessage: '!!!Language',
41 }, 41 },
42 showDisabledServices: {
43 id: 'settings.app.form.showDisabledServices',
44 defaultMessage: '!!!Display disabled services tabs',
45 },
46 enableSpellchecking: {
47 id: 'settings.app.form.enableSpellchecking',
48 defaultMessage: '!!!Enable spell checking',
49 },
50 spellcheckingLanguage: {
51 id: 'settings.app.form.spellcheckingLanguage',
52 defaultMessage: '!!!Language for spell checking',
53 },
54 // spellcheckingAutomaticDetection: {
55 // id: 'settings.app.form.spellcheckingAutomaticDetection',
56 // defaultMessage: '!!!Detect language automatically',
57 // },
42 beta: { 58 beta: {
43 id: 'settings.app.form.beta', 59 id: 'settings.app.form.beta',
44 defaultMessage: '!!!Include beta versions', 60 defaultMessage: '!!!Include beta versions',
@@ -68,6 +84,9 @@ export default class EditSettingsScreen extends Component {
68 runInBackground: settingsData.runInBackground, 84 runInBackground: settingsData.runInBackground,
69 enableSystemTray: settingsData.enableSystemTray, 85 enableSystemTray: settingsData.enableSystemTray,
70 minimizeToSystemTray: settingsData.minimizeToSystemTray, 86 minimizeToSystemTray: settingsData.minimizeToSystemTray,
87 showDisabledServices: settingsData.showDisabledServices,
88 enableSpellchecking: settingsData.enableSpellchecking,
89 // spellcheckingLanguage: settingsData.spellcheckingLanguage,
71 locale: settingsData.locale, 90 locale: settingsData.locale,
72 beta: settingsData.beta, 91 beta: settingsData.beta,
73 }, 92 },
@@ -84,14 +103,25 @@ export default class EditSettingsScreen extends Component {
84 const { app, settings, user } = this.props.stores; 103 const { app, settings, user } = this.props.stores;
85 const { intl } = this.context; 104 const { intl } = this.context;
86 105
87 const options = []; 106 const locales = [];
88 Object.keys(languages).forEach((key) => { 107 Object.keys(APP_LOCALES).forEach((key) => {
89 options.push({ 108 locales.push({
90 value: key, 109 value: key,
91 label: languages[key], 110 label: APP_LOCALES[key],
92 }); 111 });
93 }); 112 });
94 113
114 // const spellcheckerLocales = [{
115 // value: 'auto',
116 // label: intl.formatMessage(messages.spellcheckingAutomaticDetection),
117 // }];
118 // Object.keys(SPELLCHECKER_LOCALES).forEach((key) => {
119 // spellcheckerLocales.push({
120 // value: key,
121 // label: SPELLCHECKER_LOCALES[key],
122 // });
123 // });
124
95 const config = { 125 const config = {
96 fields: { 126 fields: {
97 autoLaunchOnStart: { 127 autoLaunchOnStart: {
@@ -119,10 +149,26 @@ export default class EditSettingsScreen extends Component {
119 value: settings.all.minimizeToSystemTray, 149 value: settings.all.minimizeToSystemTray,
120 default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, 150 default: DEFAULT_APP_SETTINGS.minimizeToSystemTray,
121 }, 151 },
152 showDisabledServices: {
153 label: intl.formatMessage(messages.showDisabledServices),
154 value: settings.all.showDisabledServices,
155 default: DEFAULT_APP_SETTINGS.showDisabledServices,
156 },
157 enableSpellchecking: {
158 label: intl.formatMessage(messages.enableSpellchecking),
159 value: settings.all.enableSpellchecking,
160 default: DEFAULT_APP_SETTINGS.enableSpellchecking,
161 },
162 // spellcheckingLanguage: {
163 // label: intl.formatMessage(messages.spellcheckingLanguage),
164 // value: settings.all.spellcheckingLanguage,
165 // options: spellcheckerLocales,
166 // default: DEFAULT_APP_SETTINGS.spellcheckingLanguage,
167 // },
122 locale: { 168 locale: {
123 label: intl.formatMessage(messages.language), 169 label: intl.formatMessage(messages.language),
124 value: app.locale, 170 value: app.locale,
125 options, 171 options: locales,
126 default: DEFAULT_APP_SETTINGS.locale, 172 default: DEFAULT_APP_SETTINGS.locale,
127 }, 173 },
128 beta: { 174 beta: {
diff --git a/src/i18n/languages.js b/src/i18n/languages.js
index 72d7b26c1..677b09405 100644
--- a/src/i18n/languages.js
+++ b/src/i18n/languages.js
@@ -1,17 +1,65 @@
1module.exports = { 1export const APP_LOCALES = {
2 'en-US': 'English', 2 'en-US': 'English',
3 'pt-BR': 'Portuguese (Brazil)', 3 ca: 'Catalan',
4 'el-GR': 'Ελληνικά (Greece)', 4 'zh-HANT': 'Chinese (Traditional)',
5 nl: 'Nederlands', 5 cs: 'Czech',
6 'nl-BE': 'Vlaams', 6 nl: 'Dutch',
7 de: 'Deutsch',
8 fr: 'French', 7 fr: 'French',
8 ka: 'Georgian',
9 de: 'German',
10 hu: 'Hungarian',
11 id: 'Indonesian',
12 ga: 'Irish',
13 it: 'Italian',
9 ja: 'Japanese', 14 ja: 'Japanese',
10 pl: 'Polish', 15 pl: 'Polish',
11 ru: 'Русский', 16 pt: 'Portuguese',
12 ua: 'Українська', 17 'pt-BR': 'Portuguese (Brazil)',
13 it: 'Italian', 18 ru: 'Russian',
14 'es-ES': 'Español - España', 19 sk: 'Slovak',
15 'zh-Hant': 'Chinese (Traditional)', 20 uk: 'Ukrainian',
16 'nb-NO': 'Norsk', 21 'nl-BE': 'Vlaams',
17}; 22};
23
24export default APP_LOCALES;
25
26// export const SPELLCHECKER_LOCALES = {
27// af: 'Afrikaans',
28// sq: 'Albanian',
29// ar: 'Arabic',
30// bg: 'Bulgarian',
31// zh: 'Chinese',
32// hr: 'Croatian',
33// cs: 'Czech',
34// da: 'Danish',
35// nl: 'Dutch',
36// en: 'English',
37// 'en-AU': 'English (AU)',
38// 'en-CA': 'English (CA)',
39// 'en-GB': 'English (GB)',
40// fi: 'Finnish',
41// fr: 'French',
42// ka: 'Georgian',
43// de: 'German',
44// el: 'Greek, Modern',
45// hi: 'Hindi',
46// hu: 'Hungarian',
47// id: 'Indonesian',
48// it: 'Italian',
49// ja: 'Japanese',
50// jv: 'Javanese',
51// ko: 'Korean',
52// lt: 'Lithuanian',
53// lv: 'Latvian',
54// ms: 'Malay',
55// no: 'Norwegian',
56// pl: 'Polish',
57// pt: 'Portuguese',
58// ro: 'Romanian, Moldavian, Moldovan',
59// ru: 'Russian',
60// sk: 'Slovak',
61// es: 'Spanish',
62// sv: 'Swedish',
63// uk: 'Ukrainian',
64// vi: 'Vietnamese',
65// };
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
new file mode 100644
index 000000000..6019d8023
--- /dev/null
+++ b/src/i18n/locales/ca.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "No es pot connectar amb els serveis en línia de Franz",
3 "global.notConnectedToTheInternet" : "No esteu connectat a Internet.",
4 "import.headline" : "Importa els teus serveis Franz 4",
5 "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5",
6 "import.skip.label" : "Vull afegir serveis manualment",
7 "import.submit.label" : "Importar serveis",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Reinicia i instal·la l'actualització",
10 "infobar.buttonReloadServices" : "Recarrega serveis",
11 "infobar.requiredRequestsFailed" : "No s'han pogut carregar els serveis i la informació de l'usuari",
12 "infobar.servicesUpdated" : "Els vostres serveis s'han actualitzat.",
13 "infobar.updateAvailable" : "Hi ha disponible una nova actualització per a Franz.",
14 "invite.email.label" : "Correu electrònic",
15 "invite.headline.friends" : "Convida 3 dels teus amics o companys",
16 "invite.name.label" : "Nom",
17 "invite.skip.label" : "Vull fer-ho més tard",
18 "invite.submit.label" : "Enviar invitacions",
19 "login.email.label" : "Correu electrònic",
20 "login.headline" : "Accedir",
21 "login.invalidCredentials" : "El correu electrònic o la contrasenya no són vàlids",
22 "login.link.password" : "Restablir contrasenya",
23 "login.link.signup" : "Crea un compte gratuït",
24 "login.password.label" : "Contrasenya",
25 "login.serverLogout" : "La teva sessió ha caducat, torna a iniciar la sessió.",
26 "login.submit.label" : "Accedir",
27 "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.",
28 "password.email.label" : "Correu electrònic",
29 "password.headline" : "Restablir contrasenya",
30 "password.link.login" : "Inicia la sessió al teu compte",
31 "password.link.signup" : "Crea un compte gratuït",
32 "password.noUser" : "No s'ha trobat cap usuari amb aquesta adreça de correu electrònic",
33 "password.submit.label" : "Enviar",
34 "password.successInfo" : "Comproveu el vostre correu electrònic",
35 "pricing.headline" : "Donar suport a Franz",
36 "pricing.link.skipPayment" : "No vull donar suport al desenvolupament de Franz.",
37 "pricing.submit.label" : "Vull donar suport al desenvolupament de Franz",
38 "pricing.support.label" : "Seleccioneu el vostre pla de suport",
39 "service.crashHandler.action" : "Recarrega {name}",
40 "service.crashHandler.autoReload" : "Intentant restablir automàticament {name} en {seconds} segons",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} ha causat un error.",
43 "service.disabledHandler.action" : "Activar {name}",
44 "service.disabledHandler.headline" : "{name} està desactivat",
45 "services.getStarted" : "Introducció",
46 "services.welcome" : "Benvingut a Franz",
47 "settings.account.account.editButton" : "Editar Compte",
48 "settings.account.accountType.basic" : "Compte bàsic",
49 "settings.account.accountType.premium" : "Compte de Suport Premium",
50 "settings.account.buttonSave" : "Actualitzar el perfil",
51 "settings.account.headline" : "Compte",
52 "settings.account.headlineAccount" : "Informació del compte",
53 "settings.account.headlineInvoices" : "Factures",
54 "settings.account.headlinePassword" : "Canvia la contrasenya",
55 "settings.account.headlineProfile" : "Actualitza el perfil",
56 "settings.account.headlineSubscription" : "La vostra subscripció",
57 "settings.account.headlineUpgrade" : "Actualitzeu el vostre compte i doneu suport a Franz",
58 "settings.account.invoiceDownload" : "Descarregar",
59 "settings.account.manageSubscription.label" : "Gestioneu la vostra subscripció",
60 "settings.account.mining.active" : "Ara realitzeu {hashes} càlculs per segon.",
61 "settings.account.mining.cancel" : "Cancel·la la mineria",
62 "settings.account.mining.moreInformation" : "Obenir més informació",
63 "settings.account.mining.thankyou" : "Gràcies per donar suport a Franz amb el vostre poder de processament.",
64 "settings.account.successInfo" : "S'han desat els canvis",
65 "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho",
66 "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informació de l'usuari",
67 "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització",
68 "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions",
69 "settings.app.currentVersion" : "Versió actual:",
70 "settings.app.form.autoLaunchInBackground" : "Obrir en segon plà",
71 "settings.app.form.autoLaunchOnStart" : "Iniciar Franz a l'inici",
72 "settings.app.form.beta" : "Inclou versions beta",
73 "settings.app.form.enableSpellchecking" : "Habilita la comprobació ortogràfica",
74 "settings.app.form.enableSystemTray" : "Mostra Franz a la safata del sistema",
75 "settings.app.form.language" : "Idioma",
76 "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",
78 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats",
79 "settings.app.headline" : "Configuració",
80 "settings.app.headlineAdvanced" : "Avançat",
81 "settings.app.headlineAppearance" : "Aparença",
82 "settings.app.headlineGeneral" : "General",
83 "settings.app.headlineLanguage" : "Idioma",
84 "settings.app.headlineUpdates" : "Actualitzacions",
85 "settings.app.restartRequired" : "Els canvis requereixen reiniciar",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...",
88 "settings.app.updateStatusSearching" : "Està buscant actualitzacions",
89 "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Franz",
90 "settings.navigation.account" : "Compte",
91 "settings.navigation.availableServices" : "Serveis disponibles",
92 "settings.navigation.logout" : "Sortir",
93 "settings.navigation.settings" : "Configuració",
94 "settings.navigation.yourServices" : "Els vostres serveis",
95 "settings.recipes.all" : "Tots els serveis",
96 "settings.recipes.dev" : "Desenvolupament",
97 "settings.recipes.headline" : "Serveis disponibles",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Els més populars",
100 "settings.recipes.nothingFound" : "Ho sentim, però cap servei coincideix amb el terme cercat.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "El servei s'ha afegit correctament",
102 "settings.service.error.goBack" : "Tornar als serveis",
103 "settings.service.error.headline" : "Error",
104 "settings.service.error.message" : "No s'ha pogut carregar la recepta del servei.",
105 "settings.service.form.addServiceHeadline" : "Afegir {name}",
106 "settings.service.form.availableServices" : "Serveis disponibles",
107 "settings.service.form.customUrl" : "Servidor personalitzat",
108 "settings.service.form.customUrlPremiumInfo" : "Per afegir serveis allotjats per vosaltres mateixos, necessiteu un Compte Franz Premium Supporter.",
109 "settings.service.form.customUrlUpgradeAccount" : "Actualitzeu el vostre compte",
110 "settings.service.form.customUrlValidationError" : "No s'ha pogut validar el servidor {name} personalitzat.",
111 "settings.service.form.deleteButton" : "Suprimeix el servei",
112 "settings.service.form.editServiceHeadline" : "Edita {name}",
113 "settings.service.form.enableAudio" : "Activa l'àudio",
114 "settings.service.form.enableNotification" : "Activa les notificacions",
115 "settings.service.form.enableService" : "Activa el servei",
116 "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",
118 "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificació i reproducció d'àudio es silenciaran",
119 "settings.service.form.name" : "Nom",
120 "settings.service.form.saveButton" : "Desa el servei",
121 "settings.service.form.tabHosted" : "Allotjat",
122 "settings.service.form.tabOnPremise" : "Allotjat per si mateix ⭐️",
123 "settings.service.form.team" : "Equip",
124 "settings.service.form.yourServices" : "Els vostres serveis",
125 "settings.services.deletedInfo" : "S'ha eliminat el servei",
126 "settings.services.discoverServices" : "Descobrir serveis",
127 "settings.services.headline" : "Els vostres serveis",
128 "settings.services.noServicesAdded" : "Encara no heu afegit cap servei.",
129 "settings.services.tooltip.isDisabled" : "El servei està desactivat",
130 "settings.services.tooltip.isMuted" : "Tots els sons estan desactivats",
131 "settings.services.tooltip.notificationsDisabled" : "Les notificacions estan desactivades",
132 "settings.services.updatedInfo" : "S'han desat els canvis",
133 "settings.user.form.accountType.company" : "Empresa",
134 "settings.user.form.accountType.individual" : "Individual",
135 "settings.user.form.accountType.label" : "Tipus de compte",
136 "settings.user.form.accountType.non-profit" : "Sense ànim de lucre",
137 "settings.user.form.currentPassword" : "Contrasenya actual",
138 "settings.user.form.email" : "Correu electrònic",
139 "settings.user.form.firstname" : "Nom",
140 "settings.user.form.lastname" : "Cognoms",
141 "settings.user.form.newPassword" : "Nova contrasenya",
142 "sidebar.addNewService" : "Afegeix nou servei",
143 "sidebar.mute" : "Desactiva l'àudio",
144 "sidebar.settings" : "Configuració",
145 "sidebar.unmute" : "Activa l'àudio",
146 "signup.company.label" : "Empresa",
147 "signup.email.label" : "Correu electrònic",
148 "signup.emailDuplicate" : "Ja existeix un usuari amb aquesta adreça de correu electrònic",
149 "signup.firstname.label" : "Nom",
150 "signup.headline" : "Donar-se d'alta",
151 "signup.lastname.label" : "Cognoms",
152 "signup.legal.info" : "En crear un compte de Franz, accepteu",
153 "signup.legal.privacy" : "Declaració de privacitat",
154 "signup.legal.terms" : "Termes del Servei",
155 "signup.link.login" : "Ja teniu un compte, iniciar la sessió?",
156 "signup.password.label" : "Contrasenya",
157 "signup.submit.label" : "Crea un compte",
158 "subscription.euTaxInfo" : "Residents d'EU: es poden aplicar impostos locals",
159 "subscription.features.ads" : "Sense anuncis, mai!",
160 "subscription.features.comingSoon" : "properament",
161 "subscription.features.customServices" : "Serveis privats per a vostè i el seu equip",
162 "subscription.features.encryptedSync" : "Sincronització de sessió xifrada",
163 "subscription.features.onpremise" : "Afegiu serveis en premissa\/allotjats com HipChat",
164 "subscription.features.vpn" : "Compatibilitat amb proxy i VPN",
165 "subscription.includedFeatures" : "El compte de pagament Franz Premium Supporter inclou",
166 "subscription.mining.experimental" : "experimental",
167 "subscription.mining.headline" : "Com funciona?",
168 "subscription.mining.line1" : "Activant el \"Suport amb poder de processament\", Franz utilitzarà entre un 20-50% de la teva CPU de la mineria de la criptomoneda Monero que equival aproximadament a 5$\/l'any.",
169 "subscription.mining.line2" : "Adaptarem l'ús de la CPU basant-nos en els teus habits de treball per no consumir la teva bateria ni relentir el teu ordinador.",
170 "subscription.mining.line3" : "Durant el periode que mantinguis la mineria activa, tindrás accés ilimitat a totes les carectarístiques ilimitades de Franz Premium Supporter.",
171 "subscription.mining.moreInformation" : "Obtenir més informació sobre aquest pla.",
172 "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament",
173 "subscription.submit.label" : "Vull donar suport al desenvolupament de Franz",
174 "subscription.type.free" : "gratuït",
175 "subscription.type.mining" : "Donar suport a Franz amb el poder de processament",
176 "subscription.type.month" : "mes",
177 "subscription.type.year" : "any",
178 "subscriptionPopup.buttonCancel" : "Cancel·la",
179 "subscriptionPopup.buttonDone" : "Fet",
180 "tabs.item.deleteService" : "Suprimeix el servei",
181 "tabs.item.disableAudio" : "Desactiva l'àudio",
182 "tabs.item.disableNotifications" : "Desactiva les notificacions",
183 "tabs.item.disableService" : "Desactiva el servei",
184 "tabs.item.edit" : "Edita",
185 "tabs.item.enableAudio" : "Activa l'àudio",
186 "tabs.item.enableNotification" : "Activa les notificacions",
187 "tabs.item.enableService" : "Activa el servei",
188 "tabs.item.reload" : "Recarrega",
189 "welcome.loginButton" : "Inicia sessió al teu compte",
190 "welcome.signupButton" : "Crea un compte gratuït",
191 "welcome.slogan" : "Crea un compte gratuït"
192}
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
new file mode 100644
index 000000000..122fc9b53
--- /dev/null
+++ b/src/i18n/locales/cs.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Nemůžeme Franz připojit k online službám",
3 "global.notConnectedToTheInternet" : "Nejste připojen k internetu.",
4 "import.headline" : "Importovat služby z Franz 4",
5 "import.notSupportedHeadline" : "Služby nejsou podporovány v verzi Franz 5",
6 "import.skip.label" : "Chci přidat služby manuálně",
7 "import.submit.label" : "Importovat služby",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Restartovat a instalovat aktualizaci",
10 "infobar.buttonReloadServices" : "Obnovit služby",
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",
13 "infobar.updateAvailable" : "Nová aktualizace Franz je k dispozici",
14 "invite.email.label" : "E-mailová adresa",
15 "invite.headline.friends" : "Pozvěte 3 přátele nebo kolegy",
16 "invite.name.label" : "Jméno",
17 "invite.skip.label" : "Udělám to později",
18 "invite.submit.label" : "Poslat pozvánky",
19 "login.email.label" : "E-mailová adresa",
20 "login.headline" : "Přihlásit se",
21 "login.invalidCredentials" : "E-mail nebo heslo nesouhlasí",
22 "login.link.password" : "Obnovit heslo",
23 "login.link.signup" : "Vytvořit uživatelský účet zdarma",
24 "login.password.label" : "Heslo",
25 "login.serverLogout" : "Sezení vypršelo, prosím přihlaste se znovu.",
26 "login.submit.label" : "Přihlásit se",
27 "login.tokenExpired" : "Sezení vypršelo, prosím přihlaste se znovu",
28 "password.email.label" : "E-mailová adresa",
29 "password.headline" : "Obnovit heslo",
30 "password.link.login" : "Přihlášení do vašeho účtu",
31 "password.link.signup" : "Vytvořit uživatelský účet zdarma",
32 "password.noUser" : "Uživatel s touto e-mailovou adresou nebyl nalezen",
33 "password.submit.label" : "Odeslat",
34 "password.successInfo" : "Prosím, zkontrolujte svůj e-mail",
35 "pricing.headline" : "Podpořte Franz",
36 "pricing.link.skipPayment" : "Nechci podpořit vývoj skvělé aplikace Franz.",
37 "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz",
38 "pricing.support.label" : "Vyberte váš plán podpory",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Začněme",
46 "services.welcome" : "Vítejte v programu Franz",
47 "settings.account.account.editButton" : "Upravit účet",
48 "settings.account.accountType.basic" : "Základní účet",
49 "settings.account.accountType.premium" : "Prémiový účet podporovatele",
50 "settings.account.buttonSave" : "Aktualizovat profil",
51 "settings.account.headline" : "Účet",
52 "settings.account.headlineAccount" : "Informace o účtu",
53 "settings.account.headlineInvoices" : "Faktury",
54 "settings.account.headlinePassword" : "Změnit heslo",
55 "settings.account.headlineProfile" : "Aktualizovat profil",
56 "settings.account.headlineSubscription" : "Vaše předplatné",
57 "settings.account.headlineUpgrade" : "Aktualizujte svůj účet a podpořte Franz",
58 "settings.account.invoiceDownload" : "Stáhnout",
59 "settings.account.manageSubscription.label" : "Spravovat vaše předplatné",
60 "settings.account.mining.active" : "Právě nyní provádíte {hashes} výpočtů za sekundu.",
61 "settings.account.mining.cancel" : "Zrušit dolování",
62 "settings.account.mining.moreInformation" : "Získat další informace",
63 "settings.account.mining.thankyou" : "Děkujeme, že jste podpořili Franz vašim výpočetním výkonem.",
64 "settings.account.successInfo" : "Vaše změny byly uloženy",
65 "settings.account.tryReloadUserInfoRequest" : "Zkusit opět",
66 "settings.account.userInfoRequestFailed" : "Nelze načíst informace o uživateli.",
67 "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace",
68 "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace",
69 "settings.app.currentVersion" : "Aktuální verze:",
70 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadí",
71 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu",
72 "settings.app.form.beta" : "Zahrnout beta verze",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Zobrazit Franz v systémové liště",
75 "settings.app.form.language" : "Jazyk",
76 "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",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Nastavení",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "Obecné",
83 "settings.app.headlineLanguage" : "Jazyk",
84 "settings.app.headlineUpdates" : "Aktualizace",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahování...",
88 "settings.app.updateStatusSearching" : "Hledá aktualizace",
89 "settings.app.updateStatusUpToDate" : "Používáte nejnovější verzi programu Franz",
90 "settings.navigation.account" : "Účet",
91 "settings.navigation.availableServices" : "Dostupné služby",
92 "settings.navigation.logout" : "Odhlásit",
93 "settings.navigation.settings" : "Nastavení",
94 "settings.navigation.yourServices" : "Vaše služby",
95 "settings.recipes.all" : "Všechny služby",
96 "settings.recipes.dev" : "Vývoj",
97 "settings.recipes.headline" : "Dostupné služby",
98 "settings.recipes.missingService" : "Missing a service?",
99 "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.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba byla úspěšně přidána",
102 "settings.service.error.goBack" : "Zpět na služby",
103 "settings.service.error.headline" : "Chyba",
104 "settings.service.error.message" : "Nelze načíst službu.",
105 "settings.service.form.addServiceHeadline" : "Přidat {name}",
106 "settings.service.form.availableServices" : "Dostupné služby",
107 "settings.service.form.customUrl" : "Vlastní server",
108 "settings.service.form.customUrlPremiumInfo" : "Chcete-li přidat vlastní hostované služby, potřebujete účet Franz Premium Supporter.",
109 "settings.service.form.customUrlUpgradeAccount" : "Aktualizujte svůj účet",
110 "settings.service.form.customUrlValidationError" : "Nepodařilo se ověřit vlastní server {name}.",
111 "settings.service.form.deleteButton" : "Odstranit službu",
112 "settings.service.form.editServiceHeadline" : "Upravit {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Povolit upozornění",
115 "settings.service.form.enableService" : "Povolit službu",
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, ...",
117 "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",
119 "settings.service.form.name" : "Jméno",
120 "settings.service.form.saveButton" : "Uložit službu",
121 "settings.service.form.tabHosted" : "Hostováno",
122 "settings.service.form.tabOnPremise" : "Samostatně hostované ⭐️",
123 "settings.service.form.team" : "Tým",
124 "settings.service.form.yourServices" : "Vaše služby",
125 "settings.services.deletedInfo" : "Služba byla odstraněna",
126 "settings.services.discoverServices" : "Objevte služby",
127 "settings.services.headline" : "Vaše služby",
128 "settings.services.noServicesAdded" : "Doposud jste nepřidali žádné služby.",
129 "settings.services.tooltip.isDisabled" : "Služba je zakázána",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Oznámení jsou zakázána",
132 "settings.services.updatedInfo" : "Vaše změny byly uloženy",
133 "settings.user.form.accountType.company" : "Společnost",
134 "settings.user.form.accountType.individual" : "Jednotlivec",
135 "settings.user.form.accountType.label" : "Druh účtu",
136 "settings.user.form.accountType.non-profit" : "Nezisková organizace",
137 "settings.user.form.currentPassword" : "Aktuální heslo",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "Nové heslo",
142 "sidebar.addNewService" : "Přidat novou službu",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Nastavení",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Společnost",
147 "signup.email.label" : "Emailová adresa",
148 "signup.emailDuplicate" : "Uživatel s touto emailovou adresou již existuje",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Přihlásit se",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "Vytvořením účtu Franz souhlasíte s",
153 "signup.legal.privacy" : "Prohlášení o ochraně soukromí",
154 "signup.legal.terms" : "Podmínky služby",
155 "signup.link.login" : "Již máte účet, přihlásit se?",
156 "signup.password.label" : "Heslo",
157 "signup.submit.label" : "Vytvořit účet",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "Žádné reklamy, nikdy!",
160 "subscription.features.comingSoon" : "již brzy",
161 "subscription.features.customServices" : "Privátní služby pro vás a váš tým",
162 "subscription.features.encryptedSync" : "Šifrovaná synchronizace relací",
163 "subscription.features.onpremise" : "Přidat hostované služby jako HipChat",
164 "subscription.features.vpn" : "Proxy & VPN podpora",
165 "subscription.includedFeatures" : "Placený účet Premium Supporter Franz zahrnuje",
166 "subscription.mining.experimental" : "experimentální",
167 "subscription.mining.headline" : "Jak to funguje?",
168 "subscription.mining.line1" : "Povolením funkce \"Podpora se zpracováním výkonu\" použije Franz zhruba 20-50% vašeho procesoru, aby doloval kryptografickou měnu Monero, která se rovná přibližně 5 dolarům za rok.",
169 "subscription.mining.line2" : "Přizpůsobíme spotřebu CPU na základě vašeho pracovního chování, abychom nevyčerpali baterii a zpomalili vás a váš stroj.",
170 "subscription.mining.line3" : "Dokud je horník aktivní, budete mít neomezený přístup ke všem funkcím Franz Premium Supporter.",
171 "subscription.mining.moreInformation" : "Získejte více informací o tomto plánu.",
172 "subscription.paymentSessionError" : "Nebylo možné inicializovat platbu od",
173 "subscription.submit.label" : "Chci podpořit vývoj aplikace Franz",
174 "subscription.type.free" : "zdarma",
175 "subscription.type.mining" : "Podpořte Franz výpočetním výkonem",
176 "subscription.type.month" : "měsíc",
177 "subscription.type.year" : "rok",
178 "subscriptionPopup.buttonCancel" : "Zrušit",
179 "subscriptionPopup.buttonDone" : "Dokončit",
180 "tabs.item.deleteService" : "Odstranit službu",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Zakázat upozornění",
183 "tabs.item.disableService" : "Zakázat službu",
184 "tabs.item.edit" : "Upravit",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Povolit oznamování",
187 "tabs.item.enableService" : "Povolit službu",
188 "tabs.item.reload" : "Obnovit",
189 "welcome.loginButton" : "Přihlášení do vašeho účtu",
190 "welcome.signupButton" : "Vytvořit účet zdarma",
191 "welcome.slogan" : "Zprávy, které pracují pro vás"
192}
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 80b66db08..cdfce9d55 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -1,168 +1,192 @@
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 "welcome.signupButton": "Kostenloses Konto erstellen", 4 "import.headline" : "Importiere deine Franz 4 Dienste",
5 "welcome.loginButton": "Anmelden", 5 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden",
6 "welcome.slogan": "Kommunikation, die für Dich funktioniert", 6 "import.skip.label" : "Ich möchte meine Dienste manuell hinzufügen",
7 "login.headline": "Anmelden", 7 "import.submit.label" : "Dienste importieren",
8 "login.email.label": "E-Mail-Adresse", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Passwort", 9 "infobar.buttonInstallUpdate" : "Neustarten & Update installieren",
10 "login.submit.label": "Anmelden", 10 "infobar.buttonReloadServices" : "Dienste neu laden",
11 "login.invalidCredentials": "E-Mail-Adresse oder Passwort ungültig", 11 "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden",
12 "login.tokenExpired": "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", 12 "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.",
13 "login.serverLogout": "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", 13 "infobar.updateAvailable" : "Eine neue Version von Franz ist verfügbar.",
14 "login.link.signup": "Kostenloses Konto erstellen", 14 "invite.email.label" : "E-Mail Adresse",
15 "login.link.password": "Passwort zurücksetzen", 15 "invite.headline.friends" : "Lade 3 Freunde oder Kollegen ein",
16 "password.headline": "Passwort zurücksetzen", 16 "invite.name.label" : "Name",
17 "password.email.label": "E-Mail-Adresse", 17 "invite.skip.label" : "Ich möchte das später tun",
18 "password.submit.label": "Absenden", 18 "invite.submit.label" : "Einladungen senden",
19 "password.noUser": "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden", 19 "login.email.label" : "E-Mail Adresse",
20 "password.successInfo": "Bitte überprüfe Deine E-Mail-Adresse", 20 "login.headline" : "Anmelden",
21 "password.link.signup": "Kostenloses Konto erstellen", 21 "login.invalidCredentials" : "E-Mail Adresse oder Passwort ungültig",
22 "password.link.login": "Anmelden", 22 "login.link.password" : "Passwort zurücksetzen",
23 "signup.headline": "Registrierung", 23 "login.link.signup" : "Kostenloses Konto erstellen",
24 "signup.firstname.label": "Vorname", 24 "login.password.label" : "Passwort",
25 "signup.lastname.label": "Nachname", 25 "login.serverLogout" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.",
26 "signup.email.label": "E-Mail-Adresse", 26 "login.submit.label" : "Anmelden",
27 "signup.company.label": "Unternehmen", 27 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.",
28 "signup.password.label": "Passwort", 28 "password.email.label" : "E-Mail Adresse",
29 "signup.submit.label": "Konto erstellen", 29 "password.headline" : "Passwort zurücksetzen",
30 "signup.link.login": "Du hast bereits ein Konto? Melde Dich an.", 30 "password.link.login" : "Anmelden",
31 "signup.emailDuplicate": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.", 31 "password.link.signup" : "Kostenloses Konto erstellen",
32 "signup.legal.info": "Mit der Erstellung eines Franz Kontos, akzeptierst Du die", 32 "password.noUser" : "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
33 "signup.legal.terms": "Nutzungsbedingungen", 33 "password.submit.label" : "Absenden",
34 "signup.legal.privacy": "Datenschutzerklärung", 34 "password.successInfo" : "Wir haben dir ein E-Mail mit weiteren Anweisungen geschickt.",
35 "pricing.headline": "Unterstütze Franz", 35 "pricing.headline" : "Unterstütze Franz",
36 "pricing.support.label": "Wie möchtest Du Franz 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.link.skipPayment": "Ich möchte die Entwicklung von Franz nicht unterstützen.", 38 "pricing.support.label" : "Wie möchtest du Franz unterstützen?",
39 "import.headline": "Importiere Deine Franz 4 Dienste", 39 "service.crashHandler.action" : "Neu laden",
40 "import.notSupportedHeadline": "Dienste, die noch nicht von Franz 5 unterstützt werden", 40 "service.crashHandler.autoReload" : "{name} wird automatisch wiederhergestellt in {seconds} sekunden",
41 "import.submit.label": "Dienste importieren", 41 "service.crashHandler.headline" : "Oh nein!",
42 "import.skip.label": "Ich möchte einen Dienst manuell hinzufügen", 42 "service.crashHandler.text" : "{name} hat einen Fehler verursacht.",
43 "invite.submit.label": "Einladungen senden", 43 "service.disabledHandler.action" : "{name} aktivieren",
44 "invite.headline.friends": "Lade 3 Deiner Freund oder Kollegen ein", 44 "service.disabledHandler.headline" : "{name} ist deaktiviert",
45 "invite.name.label": "Name", 45 "services.getStarted" : "Loslegen",
46 "invite.email.label": "E-Mail-Adresse", 46 "services.welcome" : "Willkommen bei Franz.",
47 "invite.skip.label": "Ich möchte das später tun", 47 "settings.account.account.editButton" : "Konto bearbeiten",
48 "subscription.submit.label": "Ich möchte die Entwicklung von Franz unterstützen", 48 "settings.account.accountType.basic" : "Basis Konto",
49 "subscription.paymentSessionError": "Das Zahlungs-Formular konnte nicht geladen werden.", 49 "settings.account.accountType.premium" : "Premium-Supporter Konto",
50 "subscription.includedFeatures": "Bezahlte Franz Premium Support Konten beinhalten", 50 "settings.account.buttonSave" : "Profil aktualisieren",
51 "subscription.features.onpremise": "Integration von gehosteten Diensten, wie HipChat", 51 "settings.account.headline" : "Konto",
52 "subscription.features.customServices": "Private Dienste für Dich und Dein Team", 52 "settings.account.headlineAccount" : "Konto Informationen",
53 "subscription.features.encryptedSync": "Verschlüsselte Sitzungs-Synchronisation", 53 "settings.account.headlineInvoices" : "Rechnungen",
54 "subscription.features.vpn": "Proxy & VPN Unterstützung", 54 "settings.account.headlinePassword" : "Passwort ändern",
55 "subscription.features.ads": "Nie mehr Werbung!", 55 "settings.account.headlineProfile" : "Profil aktualisieren",
56 "subscription.features.comingSoon": "folgt bald", 56 "settings.account.headlineSubscription" : "Dein Abonnement",
57 "infobar.servicesUpdated": "Deine Dienste wurden aktualisiert.", 57 "settings.account.headlineUpgrade" : "Upgrade dein Konto & unterstütze Franz",
58 "infobar.updateAvailable": "Eine neue Version von Franz ist verfügbar.", 58 "settings.account.invoiceDownload" : "Download",
59 "infobar.buttonReloadServices": "Dienste neuladen", 59 "settings.account.manageSubscription.label" : "Verwalte Dein Abonnement",
60 "infobar.buttonInstallUpdate": "Neustarten & Aktualisierung installieren", 60 "settings.account.mining.active" : "Du führst gerade {hashes} Berechnungen pro Sekunde aus.",
61 "infobar.requiredRequestsFailed": "Dienste und Benutzerinformationen konnten nicht geladen werden", 61 "settings.account.mining.cancel" : "Mining abbrechen",
62 "sidebar.settings": "Einstellungen", 62 "settings.account.mining.moreInformation" : "Weitere Informationen",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "Vielen Dank, dass du Franz mit deiner Rechenleistung unterstützt.",
64 "services.welcome": "Willkommen bei Franz", 64 "settings.account.successInfo" : "Deine Änderungen wurden gespeichert.",
65 "services.getStarted": "Loslegen", 65 "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen",
66 "settings.account.headline": "Konto", 66 "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden",
67 "settings.account.headlineSubscription": "Dein Abonnement", 67 "settings.app.buttonInstallUpdate" : "Neustarten & Update installieren",
68 "settings.account.headlineUpgrade": "Erweitere Dein Konto & unterstütze Franz", 68 "settings.app.buttonSearchForUpdate" : "Nach Updates suchen",
69 "settings.account.headlineInvoices": "Rechnungen", 69 "settings.app.currentVersion" : "Aktuelle Version:",
70 "settings.account.manageSubscription.label": "Verwalte Dein Abonnement", 70 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen",
71 "settings.account.accountType.basic": "Basis Konto", 71 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausführen",
72 "settings.account.accountType.premium": "Premium-Supporter Konto", 72 "settings.app.form.beta" : "Beta-Versionen einbeziehen",
73 "settings.account.account.editButton": "Konto bearbeiten", 73 "settings.app.form.enableSpellchecking" : "Rechtschreibprüfung aktivieren",
74 "settings.account.invoiceDownload": "Herunterladen", 74 "settings.app.form.enableSystemTray" : "Franz in der Systemleiste anzeigen",
75 "settings.account.userInfoRequestFailed": "Benutzerinformationen konnten nicht geladen werden", 75 "settings.app.form.language" : "Sprache",
76 "settings.account.tryReloadUserInfoRequest": "Erneut versuchen", 76 "settings.app.form.minimizeToSystemTray" : "Franz in die Systemleiste minimieren",
77 "settings.account.headlineProfile": "Profil aktualisieren", 77 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird",
78 "settings.account.headlineAccount": "Kontoinformationen", 78 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen",
79 "settings.account.headlinePassword": "Passwort ändern", 79 "settings.app.headline" : "Einstellungen",
80 "settings.account.successInfo": "Deine Änderungen wurden gespeichert.", 80 "settings.app.headlineAdvanced" : "Erweitert",
81 "settings.account.buttonSave": "Profil aktualisieren", 81 "settings.app.headlineAppearance" : "Darstellung",
82 "settings.account.mining.thankyou": "Vielen Dank, dass Du Franz mit Deiner Rechenleistung unterstützt.", 82 "settings.app.headlineGeneral" : "Allgemein",
83 "settings.account.mining.active": "Du führst gerade {hashes} Berechnungen pro Sekunde aus.", 83 "settings.app.headlineLanguage" : "Sprache",
84 "settings.account.mining.moreInformation": "Weitere Informationen", 84 "settings.app.headlineUpdates" : "Updates",
85 "settings.account.mining.cancel": "Mining abbrechen", 85 "settings.app.restartRequired" : "Änderungen werden erst nach einem Neustart wirksam. ",
86 "settings.navigation.availableServices": "Verfügbare Dienste", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Deine Dienste", 87 "settings.app.updateStatusAvailable" : "Update verfügbar, herunterladen...",
88 "settings.navigation.account": "Konto", 88 "settings.app.updateStatusSearching" : "Suche nach Updates",
89 "settings.navigation.settings": "Einstellungen", 89 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz",
90 "settings.navigation.logout": "Abmelden", 90 "settings.navigation.account" : "Konto",
91 "settings.recipes.headline": "Verfügbare Dienste", 91 "settings.navigation.availableServices" : "Verfügbare Dienste",
92 "settings.recipes.mostPopular": "Am beliebtesten", 92 "settings.navigation.logout" : "Abmelden",
93 "settings.recipes.all": "Alle Dienste", 93 "settings.navigation.settings" : "Einstellungen",
94 "settings.recipes.dev": "Entwicklung", 94 "settings.navigation.yourServices" : "Deine Dienste",
95 "settings.recipes.nothingFound": "Entschuldigung, aber kein Dienst entspricht Deiner Suchanfrage.", 95 "settings.recipes.all" : "Alle Dienste",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Dienst erfolgreich hinzugefügt", 96 "settings.recipes.dev" : "Entwicklung",
97 "settings.service.form.saveButton": "Dienst speichern", 97 "settings.recipes.headline" : "Verfügbare Dienste",
98 "settings.service.form.deleteButton": "Dienst entfernen", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Verfügbare Dienste", 99 "settings.recipes.mostPopular" : "Am beliebtesten",
100 "settings.service.form.yourServices": "Deine Dienste", 100 "settings.recipes.nothingFound" : "Entschuldigung, aber kein Dienst entspricht deiner Suchanfrage.",
101 "settings.service.form.addServiceHeadline": "{name} hinzufügen", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Dienst erfolgreich hinzugefügt",
102 "settings.service.form.editServiceHeadline": "{name} bearbeiten", 102 "settings.service.error.goBack" : "Zurück zu den Diensten",
103 "settings.service.form.tabHosted": "Gehostet", 103 "settings.service.error.headline" : "Fehler",
104 "settings.service.form.tabOnPremise": "Selbst gehostet ⭐️", 104 "settings.service.error.message" : "Das Dienst-Rezept konnte nicht geladen werden.",
105 "settings.service.form.customUrlValidationError": "Dein eigener {name} server konnte nicht verifiziert werden.", 105 "settings.service.form.addServiceHeadline" : "{name} hinzufügen",
106 "settings.service.form.customUrlPremiumInfo": "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst Du ein Franz Premium-Supporter Konto.", 106 "settings.service.form.availableServices" : "Verfügbare Dienste",
107 "settings.service.form.customUrlUpgradeAccount": "Erweitere Dein Konto", 107 "settings.service.form.customUrl" : "Eigener Server",
108 "settings.service.form.indirectMessageInfo": "Du wirst über alle neuen Nachrichten in einem Kanal informiert, nicht nur @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst du ein Franz Premium-Supporter Konto.",
109 "settings.service.error.headline": "Fehler", 109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade dein Konto",
110 "settings.service.error.goBack": "Zurück zu den Diensten", 110 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.\",",
111 "settings.service.error.message": "Das Dienst-Rezept konnte nicht geladen werden.", 111 "settings.service.form.deleteButton" : "Dienst entfernen",
112 "settings.services.tooltip.isDisabled": "Dienst deaktiviert", 112 "settings.service.form.editServiceHeadline" : "{name} bearbeiten",
113 "settings.services.tooltip.notificationsDisabled": "Benachrichtigungen deaktiviert", 113 "settings.service.form.enableAudio" : "Audio aktivieren",
114 "settings.services.headline": "Deine Dienste", 114 "settings.service.form.enableNotification" : "Benachrichtigungen aktivieren",
115 "settings.services.noServicesAdded": "Du hast noch keine Dienste hinzugefügt.", 115 "settings.service.form.enableService" : "Dienst aktivieren",
116 "settings.services.discoverServices": "Dienste entdecken", 116 "settings.service.form.indirectMessageInfo" : "Du wirst über alle neuen Nachrichten in einem Kanal informiert, nicht nur @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Deine Änderungen wurden gespeichert.", 117 "settings.service.form.indirectMessages" : "Nachrichten-Badge für alle neuen Nachrichten anzeigen",
118 "settings.services.deletedInfo": "Dienst wurde entfernt", 118 "settings.service.form.isMutedInfo" : "Sämtliche Wiedergabe von Tönen wird deaktiviert",
119 "settings.app.headline": "Einstellungen", 119 "settings.service.form.name" : "Name",
120 "settings.app.headlineGeneral": "Allgemein", 120 "settings.service.form.saveButton" : "Dienst speichern",
121 "settings.app.headlineLanguage": "Sprache", 121 "settings.service.form.tabHosted" : "Gehostet",
122 "settings.app.headlineUpdates": "Aktualisierungen", 122 "settings.service.form.tabOnPremise" : "Selbst gehostet ⭐️",
123 "settings.app.buttonSearchForUpdate": "Auf Aktualisierungen prüfen", 123 "settings.service.form.team" : "Team",
124 "settings.app.buttonInstallUpdate": "Neustarten & Aktualisierung installieren", 124 "settings.service.form.yourServices" : "Deine Dienste",
125 "settings.app.updateStatusSearching": "Suche nach Aktualisierungen", 125 "settings.services.deletedInfo" : "Dienst wurde entfernt",
126 "settings.app.updateStatusAvailable": "Aktualisierung verfügbar, herunterladen...", 126 "settings.services.discoverServices" : "Dienste entdecken",
127 "settings.app.updateStatusUpToDate": "Du nutzt die aktuellste Version von Franz", 127 "settings.services.headline" : "Deine Dienste",
128 "settings.app.form.autoLaunchOnStart": "Franz beim Systemstart ausführen", 128 "settings.services.noServicesAdded" : "Du hast noch keine Dienste hinzugefügt.",
129 "settings.app.form.autoLaunchInBackground": "Im Hintergrund öffnen", 129 "settings.services.tooltip.isDisabled" : "Dienst deaktiviert",
130 "settings.app.form.minimizeToSystemTray": "Franz in die Systemleiste minimieren", 130 "settings.services.tooltip.isMuted" : "Audio ist deaktiviert",
131 "settings.app.form.runInBackground": "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", 131 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert",
132 "settings.app.form.language": "Sprache", 132 "settings.services.updatedInfo" : "Deine Änderungen wurden gespeichert",
133 "settings.app.form.beta": "Beta-Versionen einbeziehen", 133 "settings.user.form.accountType.company" : "Unternehmen",
134 "settings.app.currentVersion": "Aktuelle Version:", 134 "settings.user.form.accountType.individual" : "Einzelperson",
135 "settings.service.form.name": "Name", 135 "settings.user.form.accountType.label" : "Konto-Typ",
136 "settings.service.form.enableService": "Dienst aktivieren", 136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.service.form.enableNotification": "Benachrichtigungen aktivieren", 137 "settings.user.form.currentPassword" : "Aktuelles Passwort",
138 "settings.service.form.team": "Team", 138 "settings.user.form.email" : "E-Mail",
139 "settings.service.form.customUrl": "Eigener Server", 139 "settings.user.form.firstname" : "Vorname",
140 "settings.service.form.indirectMessages": "Nachrichten-Badge für alle neuen Nachrichten anzeigen", 140 "settings.user.form.lastname" : "Nachname",
141 "settings.user.form.firstname": "Vorname", 141 "settings.user.form.newPassword" : "Neues Passwort",
142 "settings.user.form.lastname": "Nachname", 142 "sidebar.addNewService" : "!!!Add new service",
143 "settings.user.form.email": "E-Mail-Adresse", 143 "sidebar.mute" : "Audio deaktivieren",
144 "settings.user.form.currentPassword": "Aktuelles Passwort", 144 "sidebar.settings" : "Einstellungen",
145 "settings.user.form.newPassword": "Neues Passwort", 145 "sidebar.unmute" : "Audio aktivieren",
146 "settings.user.form.accountType.label": "Konto-Typ", 146 "signup.company.label" : "Unternehmen",
147 "settings.user.form.accountType.individual": "Einzelperson", 147 "signup.email.label" : "E-Mail Adresse",
148 "settings.user.form.accountType.non-profit": "Gemeinnützig", 148 "signup.emailDuplicate" : "Ein Benutzer mit dieser E-Mail Adresse existiert bereits.",
149 "settings.user.form.accountType.company": "Unternehmen", 149 "signup.firstname.label" : "Vorname",
150 "subscription.type.free": "kostenlos", 150 "signup.headline" : "Registrierung",
151 "subscription.type.month": "Monat", 151 "signup.lastname.label" : "Nachname",
152 "subscription.type.year": "Jahr", 152 "signup.legal.info" : "Mit der Erstellung eines Franz Kontos akzeptierst du die",
153 "subscription.type.mining": "Unterstütze Franz mit Rechenleistung", 153 "signup.legal.privacy" : "Datenschutzerklärung",
154 "subscription.mining.headline": "Wie funktioniert das?", 154 "signup.legal.terms" : "Nutzungsbedingungen",
155 "subscription.mining.experimental": "experimentell", 155 "signup.link.login" : "Du hast bereits ein Konto? Melde dich an.",
156 "subscription.mining.line1": "Durch das Aktivieren von \"Unterstützung mit Rechenleistung\", wird Franz circa 20-50% deines Prozessors nutzen, um die Crypto-Währung Monero zu minen, was ungefähr 5$/Jahr entspricht.", 156 "signup.password.label" : "Passwort",
157 "subscription.mining.line2": "Wir passen die Prozessor-Nutzung an Dein Arbeitsverhalten an, um Deinen Akku nicht unnötig zu belasten oder Dein System zu verlangsamen.", 157 "signup.submit.label" : "Konto erstellen",
158 "subscription.mining.line3": "So lange der Miner aktiv ist, hast Du unbegrenzten Zugang auf alle Franz Premium-Supporter Funktionen.", 158 "subscription.euTaxInfo" : "Preise sind exklusive Steuern. ",
159 "subscription.mining.moreInformation": "Erhalte mehr Informationen über diesen Plan.", 159 "subscription.features.ads" : "Nie mehr Werbung!",
160 "subscriptionPopup.buttonCancel": "Abbrechen", 160 "subscription.features.comingSoon" : "folgt bald",
161 "subscriptionPopup.buttonDone": "Fertig", 161 "subscription.features.customServices" : "Private Dienste für dich und dein Team",
162 "tabs.item.reload": "Neuladen", 162 "subscription.features.encryptedSync" : "Verschlüsselte Sitzungs-Synchronisation",
163 "tabs.item.edit": "Bearbeiten", 163 "subscription.features.onpremise" : "Integration von gehosteten Diensten, wie HipChat",
164 "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren", 164 "subscription.features.vpn" : "Proxy & VPN Unterstützung",
165 "tabs.item.enableNotification": "Benachrichtigungen aktivieren", 165 "subscription.includedFeatures" : "Bezahlte Franz Premium Support Konten beinhalten",
166 "tabs.item.disableService": "Dienst deaktivieren", 166 "subscription.mining.experimental" : "experimentell",
167 "tabs.item.deleteService": "Dienst entfernen" 167 "subscription.mining.headline" : "Wie funktioniert das?",
168 "subscription.mining.line1" : "Durch das Aktivieren von \"Unterstützung mit Rechenleistung\", wird Franz circa 20-50% deines Prozessors nutzen, um die Crypto-Währung Monero zu minen, was ungefähr 5$\/Jahr entspricht.",
169 "subscription.mining.line2" : "Wir passen die Prozessor-Nutzung an dein Arbeitsverhalten an, um deinen Akku nicht unnötig zu belasten oder dein System zu verlangsamen.",
170 "subscription.mining.line3" : "So lange der Miner aktiv ist, hast du unbegrenzten Zugang auf alle Franz Premium-Supporter Funktionen.",
171 "subscription.mining.moreInformation" : "Erhalte mehr Informationen über diesen Plan.",
172 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.",
173 "subscription.submit.label" : "Ich möchte die Entwicklung von Franz unterstützen",
174 "subscription.type.free" : "kostenlos",
175 "subscription.type.mining" : "Unterstütze Franz mit Rechenleistung",
176 "subscription.type.month" : "Monat",
177 "subscription.type.year" : "Jahr",
178 "subscriptionPopup.buttonCancel" : "Abbrechen",
179 "subscriptionPopup.buttonDone" : "Fertig",
180 "tabs.item.deleteService" : "Dienst entfernen",
181 "tabs.item.disableAudio" : "Audio deaktivieren",
182 "tabs.item.disableNotifications" : "Benachrichtigungen deaktivieren",
183 "tabs.item.disableService" : "Dienst deaktivieren",
184 "tabs.item.edit" : "Bearbeiten",
185 "tabs.item.enableAudio" : "Audio aktivieren",
186 "tabs.item.enableNotification" : "Benachrichtigungen aktivieren",
187 "tabs.item.enableService" : "Dienst aktivieren",
188 "tabs.item.reload" : "Neu laden",
189 "welcome.loginButton" : "Anmelden",
190 "welcome.signupButton" : "Kostenloses Konto erstellen",
191 "welcome.slogan" : "Kommunikation, die für Dich funktioniert"
168} 192}
diff --git a/src/i18n/locales/el-GR.json b/src/i18n/locales/el-GR.json
deleted file mode 100644
index 3710bc9a2..000000000
--- a/src/i18n/locales/el-GR.json
+++ /dev/null
@@ -1,169 +0,0 @@
1{
2 "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις online υπηρεσίες του Franz",
3 "global.notConnectedToTheInternet": "Δεν είστε συνδεδεμένοι στο διαδίκτυο.",
4 "welcome.signupButton": "Δημιουργία δωρεάν λογαριασμού",
5 "welcome.loginButton": "Σύνδεση στο λογαριασμό σας",
6 "welcome.slogan": "Μηνύματα που λειτουργούν για εσάς",
7 "login.headline": "Σύνδεση",
8 "login.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
9 "login.password.label": "Κωδικός πρόσβασης",
10 "login.submit.label": "Σύνδεση",
11 "login.invalidCredentials": "Το email ή ο κωδικός πρόσβασης δεν είναι έγκυρος",
12 "login.tokenExpired": "Η συνεδρία σας έληξε, συνδεθείτε ξανά.",
13 "login.serverLogout": "Η συνεδρία σας έληξε, συνδεθείτε ξανά.",
14 "login.link.signup": "Δημιουργία δωρεάν λογαριασμού",
15 "login.link.password": "Επαναφορά κωδικού πρόσβασης",
16 "password.headline": "Επαναφορά κωδικού πρόσβασης",
17 "password.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
18 "password.submit.label": "Υποβολή",
19 "password.noUser": "Δεν βρέθηκε χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου",
20 "password.successInfo": "Ελέγξτε το email σας",
21 "password.link.signup": "Δημιουργία δωρεάν λογαριασμού",
22 "password.link.login": "Σύνδεση στο λογαριασμό σας",
23 "signup.headline": "Εγγραφή",
24 "signup.firstname.label": "Όνομα",
25 "signup.lastname.label": "Επίθετο",
26 "signup.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
27 "signup.company.label": "Εταιρεία",
28 "signup.password.label": "Κωδικός πρόσβασης",
29 "signup.submit.label": "Δημιουργία λογαριασμού",
30 "signup.link.login": "Έχετε ήδη λογαριασμό, συνδεθείτε ?",
31 "signup.emailDuplicate": "Ένας χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη",
32 "signup.legal.info": "Δημιουργώντας έναν λογαριασμό Franz αποδέχεστε τους",
33 "signup.legal.terms": "Όροι υπηρεσίας",
34 "signup.legal.privacy": "Δήλωση απορρήτου",
35 "pricing.headline": "Υποστήριξη Franz",
36 "pricing.support.label": "Επιλέξτε το πακέτο υποστήριξης",
37 "pricing.submit.label": "Θέλω να βοηθήσω στήν ανάπτυξη του Franz",
38 "pricing.link.skipPayment": "Δεν θέλω να βοηθήσω στήν ανάπτυξη του Franz.",
39 "import.headline": "Εισαγάγετε τις Franz 4 υπηρεσίες σας",
40 "import.notSupportedHeadline": "Υπηρεσίες που δεν υποστηρίζονται ακόμα στο Franz 5",
41 "import.submit.label": "Υπηρεσίες εισαγωγής",
42 "import.skip.label": "Θέλω να προσθέσω υπηρεσίες χειροκίνητα",
43 "invite.submit.label": "Αποστολή προσκλήσεων",
44 "invite.headline.friends": "Προσκαλέστε 3 από τους φίλους ή τους συναδέλφους σας",
45 "invite.name.label": "Όνομα",
46 "invite.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
47 "invite.skip.label": "Θέλω να το κάνω αργότερα",
48 "subscription.submit.label": "Θέλω να βοηθήσω στήν ανάπτυξη του Franz",
49 "subscription.paymentSessionError": "Δεν ήταν δυνατή η προετοιμασία της φόρμας πληρωμής",
50 "subscription.includedFeatures": "Ο Premium λογαριασμός υποστήριξης Franz περιλαμβάνει",
51 "subscription.features.onpremise": "Add on-premise / hosted services όπως το HipChat",
52 "subscription.features.customServices": "Ιδιωτικές υπηρεσίες για εσάς και την ομάδα σας",
53 "subscription.features.encryptedSync": "Κρυπτογραφημένος συγχρονισμός περιόδου σύνδεσης",
54 "subscription.features.vpn": "Υποστήριξη μεσολαβητή (Proxy) και VPN",
55 "subscription.features.ads": "Τέλος στις διαφημίσεις, :-D",
56 "subscription.features.comingSoon": "σύντομα",
57 "infobar.servicesUpdated": "Οι υπηρεσίες σας έχουν ενημερωθεί.",
58 "infobar.updateAvailable": "Υπάρχει διαθέσιμη μια νέα ενημέρωση για τον Franz.",
59 "infobar.buttonReloadServices": "Υπηρεσίες ανανέωσης",
60 "infobar.buttonInstallUpdate": "Επανεκκίνηση & εγκατάσταση ενημερώσεων",
61 "infobar.requiredRequestsFailed": "Δεν ήταν δυνατή η φόρτωση υπηρεσιών και πληροφοριών χρηστών",
62 "sidebar.settings": "Ρυθμίσεις",
63 "sidebar.addNewService": "!!!Add new service",
64 "services.welcome": "Καλώς ορίσατε στον Franz",
65 "services.getStarted": "Ξεκινήστε",
66 "settings.account.headline": "Λογαριασμός",
67 "settings.account.headlineSubscription": "Η συνδρομή σας",
68 "settings.account.headlineUpgrade": "Αναβάθμιση του λογαριασμού σας και υποστήριξη Franz",
69 "settings.account.headlineInvoices": "Τιμολόγια",
70 "settings.account.manageSubscription.label": "Διαχείριση της συνδρομής σας",
71 "settings.account.accountType.basic": "Βασικός λογαριασμός",
72 "settings.account.accountType.premium": "Υποστηριζόμενος λογαριασμός Premium",
73 "settings.account.account.editButton": "Επεξεργασία λογαριασμού",
74 "settings.account.invoiceDownload": "Λήψη",
75 "settings.account.userInfoRequestFailed": "Δεν ήταν δυνατή η φόρτωση πληροφοριών χρήστη",
76 "settings.account.tryReloadUserInfoRequest": "Δοκιμάστε ξανά",
77 "settings.account.headlineProfile": "Ενημέρωση προφίλ",
78 "settings.account.headlineAccount": "Πληροφορίες λογαριασμού",
79 "settings.account.headlinePassword": "Αλλαγή κωδικού πρόσβασης",
80 "settings.account.successInfo": "Οι αλλαγές σας έχουν αποθηκευτεί",
81 "settings.account.buttonSave": "Ενημέρωση προφίλ",
82 "settings.account.mining.thankyou": "Σας ευχαριστούμε για την υποστήριξη του Franz με την ισχύ επεξεργασίας σας",
83 "settings.account.mining.active": "Τώρα πραγματοποιείτε υπολογισμούς {hashes} ανά δευτερόλεπτο.",
84 "settings.account.mining.moreInformation": "Λάβετε περισσότερες πληροφορίες",
85 "settings.account.mining.cancel": "Άκυρο εξόρυξη",
86 "settings.navigation.availableServices": "Διαθέσιμες υπηρεσίες",
87 "settings.navigation.yourServices": "Οι υπηρεσίες σας",
88 "settings.navigation.account": "Λογαριασμός",
89 "settings.navigation.settings": "Ρυθμίσεις",
90 "settings.navigation.logout": "Αποσύνδεση",
91 "settings.recipes.headline": "Διαθέσιμες υπηρεσίες",
92 "settings.recipes.mostPopular": "Τα πιο δημοφιλή",
93 "settings.recipes.all": "Όλες οι υπηρεσίες",
94 "settings.recipes.dev": "Ανάπτυξη",
95 "settings.recipes.nothingFound": "Λυπούμαστε αλλά καμία υπηρεσία δεν ταιριάζει με τον όρο αναζήτησης.",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Υπηρεσία προστέθηκε με επιτυχία",
97 "settings.service.form.saveButton": "Αποθήκευση υπηρεσίας",
98 "settings.service.form.deleteButton": "Διαγραφή υπηρεσίας",
99 "settings.service.form.availableServices": "Διαθέσιμες υπηρεσίες",
100 "settings.service.form.yourServices": "Οι υπηρεσίες σας",
101 "settings.service.form.addServiceHeadline": "Προσθήκη {όνομα}",
102 "settings.service.form.editServiceHeadline": "Επεξεργασία {όνομα}",
103 "settings.service.form.tabHosted": "Φιλοξενείται",
104 "settings.service.form.tabOnPremise": "Αυτο-φιλοξενείται ⭐️",
105 "settings.service.form.customUrlValidationError": "Δεν ήταν δυνατή η επικύρωση του προσαρμοσμένου διακομιστή {name}.",
106 "settings.service.form.customUrlPremiumInfo": "Για να προσθέσετε υπηρεσίες που φιλοξενούνται μόνος σας, χρειάζεστε έναν λογαριασμό υποστήριξης Premium Franz.",
107 "settings.service.form.customUrlUpgradeAccount": "Αναβάθμιση του λογαριασμού σας",
108 "settings.service.form.indirectMessageInfo": "Θα ειδοποιηθείτε για όλα τα νέα μηνύματα σε ένα κανάλι, όχι μόνο @username, @channel, @here, ...",
109 "settings.service.error.headline": "Σφάλμα",
110 "settings.service.error.goBack": "Επιστροφή στις υπηρεσίες",
111 "settings.service.error.message": "Δεν ήταν δυνατή η φόρτωση της συνταγής υπηρεσίας.",
112 "settings.services.tooltip.isDisabled": "Η υπηρεσία είναι απενεργοποιημένη",
113 "settings.services.tooltip.notificationsDisabled": "Οι ειδοποιήσεις είναι απενεργοποιημένες",
114 "settings.services.headline": "Οι υπηρεσίες σας",
115 "settings.services.noServicesAdded": "Δεν έχετε προσθέσει ακόμα υπηρεσίες.",
116 "settings.services.discoverServices": "Ανακαλύψτε τις υπηρεσίες",
117 "settings.services.updatedInfo": "Οι αλλαγές σας έχουν αποθηκευτεί",
118 "settings.services.deletedInfo": "Η υπηρεσία έχει διαγραφεί",
119 "settings.app.headline": "Ρυθμίσεις",
120 "settings.app.headlineΓενικά": "Γενικά",
121 "settings.app.headlineLanguage": "Γλώσσα",
122 "settings.app.headlineUpdates": "Ενημερώσεις",
123 "settings.app.buttonSearchForUpdate": "Έλεγχος για ενημερώσεις",
124 "settings.app.buttonInstallUpdate": "Επανεκκίνηση & εγκατάσταση ενημερώσεων",
125 "settings.app.updateStatusSearching": "Ψάχνει για ενημέρωση",
126 "settings.app.updateStatusAvailable": "Διαθέσιμη ενημέρωση, λήψη ...",
127 "settings.app.updateStatusUpToDate": "Χρησιμοποιείτε την τελευταία έκδοση του Franz",
128 "settings.app.form.autoLaunchOnStart": "Εκκίνηση του Franz στην αρχή",
129 "settings.app.form.autoLaunchInBackground": "Άνοιγμα στο παρασκήνιο",
130 "settings.app.form.enableSystemTray": "Εμφάνιση του Franz στο δίσκο συστήματος",
131 "settings.app.form.minimizeToSystemTray": "Ελαχιστοποίηση του Franz στο δίσκο συστήματος",
132 "settings.app.form.runInBackground": "Κρατήστε Franz στο παρασκήνιο κατά το κλείσιμο του παραθύρου",
133 "settings.app.form.language": "Γλώσσα",
134 "settings.app.form.beta": "Συμπεριλάβετε εκδόσεις beta",
135 "settings.app.currentVersion": "Τρέχουσα έκδοση:",
136 "settings.service.form.name": "Όνομα",
137 "settings.service.form.enableService": "Ενεργοποίηση υπηρεσίας",
138 "settings.service.form.enableNotification": "Ενεργοποίηση ειδοποιήσεων",
139 "settings.service.form.team": "Ομάδα",
140 "settings.service.form.customUrl": "Προσαρμοσμένος διακομιστής",
141 "settings.service.form.indirectMessages": "Εμφάνιση ειδοποίησης μηνύματος για όλα τα νέα μηνύματα",
142 "settings.user.form.firstname": "Όνομα",
143 "settings.user.form.lastname": "Επίθετο",
144 "settings.user.form.email": "Email",
145 "settings.user.form.currentPassword": "Τρέχων κωδικός πρόσβασης",
146 "settings.user.form.newPassword": "Νέος κωδικός πρόσβασης",
147 "settings.user.form.accountType.label": "Τύπος λογαριασμού",
148 "settings.user.form.accountType.individual": "Ατομική",
149 "settings.user.form.accountType.non-profit": "Μη κερδοσκοπικό",
150 "settings.user.form.accountType.company": "Εταιρεία",
151 "subscription.type.free": "δωρεάν",
152 "subscription.type.month": "μήνας",
153 "subscription.type.year": "έτος",
154 "subscription.type.mining": "Υποστήριξη Franz με ισχύ CPU",
155 "subscription.mining.headline": "Πώς λειτουργεί αυτό;",
156 "subscription.mining.experimental": "πειραματική",
157 "subscription.mining.line1": "Franz χρησιμοποιεί περίπου το 20-50% της CPU σας για να εξορύξει την κρυπτογράφηση Monero που ισούται περίπου με $ 5 / έτος.",
158 "subscription.mining.line2": "Θα προσαρμόσουμε τη χρήση της CPU με βάση τη συμπεριφορά εργασίας σας ώστε να μην αποστραγγίσουμε την μπαταρία σας και να επιβραδύνουμε εσάς και το μηχάνημά σας.",
159 "subscription.mining.line3": "Εφόσον ο Miner είναι ενεργός, θα έχετε απεριόριστη πρόσβαση σε όλα τα χαρακτηριστικά του Franz Premium Supporter.",
160 "subscription.mining.moreInformation": "Λάβετε περισσότερες πληροφορίες σχετικά με αυτό το πακέτο.",
161 "subscriptionPopup.buttonCancel": "Ακύρωση",
162 "subscriptionPopup.buttonDone": "Έγινε",
163 "tabs.item.reload": "Επαναφόρτωση",
164 "tabs.item.edit": "Επεξεργασία",
165 "tabs.item.disableNotifications": "Απενεργοποίηση ειδοποιήσεων",
166 "tabs.item.enableNotification": "Ενεργοποίηση ειδοποιήσεων",
167 "tabs.item.disableService": "Απενεργοποίηση υπηρεσίας",
168 "tabs.item.deleteService": "Διαγραφή υπηρεσίας"
169}
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
new file mode 100644
index 000000000..5717a18b1
--- /dev/null
+++ b/src/i18n/locales/el.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Can't connect to Franz online services",
3 "global.notConnectedToTheInternet" : "You are not connected to the internet.",
4 "import.headline" : "Import your Franz 4 services",
5 "import.notSupportedHeadline" : "Services not yet supported in Franz 5",
6 "import.skip.label" : "I want add services manually",
7 "import.submit.label" : "Import services",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Restart & install update",
10 "infobar.buttonReloadServices" : "Reload services",
11 "infobar.requiredRequestsFailed" : "Could not load services and user information",
12 "infobar.servicesUpdated" : "Your services have been updated.",
13 "infobar.updateAvailable" : "A new update for Franz is available.",
14 "invite.email.label" : "Email address",
15 "invite.headline.friends" : "Invite 3 of your friends or colleagues",
16 "invite.name.label" : "Name",
17 "invite.skip.label" : "I want to do this later",
18 "invite.submit.label" : "Send invites",
19 "login.email.label" : "Email address",
20 "login.headline" : "Sign in",
21 "login.invalidCredentials" : "Email or password not valid",
22 "login.link.password" : "Reset password",
23 "login.link.signup" : "Create a free account",
24 "login.password.label" : "Password",
25 "login.serverLogout" : "Your session expired, please login again.",
26 "login.submit.label" : "Sign in",
27 "login.tokenExpired" : "Your session expired, please login again.",
28 "password.email.label" : "Email address",
29 "password.headline" : "Reset password",
30 "password.link.login" : "Sign in to your account",
31 "password.link.signup" : "Create a free account",
32 "password.noUser" : "No user with that email address was found",
33 "password.submit.label" : "Submit",
34 "password.successInfo" : "Please check your email",
35 "pricing.headline" : "Support Franz",
36 "pricing.link.skipPayment" : "I don't want to support the development of Franz.",
37 "pricing.submit.label" : "I want to support the development of Franz",
38 "pricing.support.label" : "Select your support plan",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Get started",
46 "services.welcome" : "Welcome to Franz",
47 "settings.account.account.editButton" : "Edit account",
48 "settings.account.accountType.basic" : "Basic Account",
49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Update profile",
51 "settings.account.headline" : "Account",
52 "settings.account.headlineAccount" : "Account information",
53 "settings.account.headlineInvoices" : "Invoices",
54 "settings.account.headlinePassword" : "Change password",
55 "settings.account.headlineProfile" : "Update profile",
56 "settings.account.headlineSubscription" : "Your subscription",
57 "settings.account.headlineUpgrade" : "Upgrade your account & support Franz",
58 "settings.account.invoiceDownload" : "Download",
59 "settings.account.manageSubscription.label" : "Manage your subscription",
60 "settings.account.mining.active" : "You are right now performing {hashes} calculations per second.",
61 "settings.account.mining.cancel" : "Cancel mining",
62 "settings.account.mining.moreInformation" : "Get more information",
63 "settings.account.mining.thankyou" : "Thank you for supporting Franz with your processing power.",
64 "settings.account.successInfo" : "Your changes have been saved",
65 "settings.account.tryReloadUserInfoRequest" : "Try again",
66 "settings.account.userInfoRequestFailed" : "Could not load user information",
67 "settings.app.buttonInstallUpdate" : "Restart & install update",
68 "settings.app.buttonSearchForUpdate" : "Check for updates",
69 "settings.app.currentVersion" : "Current version:",
70 "settings.app.form.autoLaunchInBackground" : "Open in background",
71 "settings.app.form.autoLaunchOnStart" : "Launch Franz on start",
72 "settings.app.form.beta" : "Include beta versions",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray",
75 "settings.app.form.language" : "Language",
76 "settings.app.form.minimizeToSystemTray" : "Minimize Franz to system tray",
77 "settings.app.form.runInBackground" : "Keep Franz in background when closing the window",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Settings",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "General",
83 "settings.app.headlineLanguage" : "Language",
84 "settings.app.headlineUpdates" : "Updates",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Update available, downloading...",
88 "settings.app.updateStatusSearching" : "Is searching for update",
89 "settings.app.updateStatusUpToDate" : "You are using the latest version of Franz",
90 "settings.navigation.account" : "Account",
91 "settings.navigation.availableServices" : "Available services",
92 "settings.navigation.logout" : "Logout",
93 "settings.navigation.settings" : "Settings",
94 "settings.navigation.yourServices" : "Your services",
95 "settings.recipes.all" : "All services",
96 "settings.recipes.dev" : "Development",
97 "settings.recipes.headline" : "Available services",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Most popular",
100 "settings.recipes.nothingFound" : "Sorry, but no service matched your search term.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service successfully added",
102 "settings.service.error.goBack" : "Back to services",
103 "settings.service.error.headline" : "Error",
104 "settings.service.error.message" : "Could not load service recipe.",
105 "settings.service.form.addServiceHeadline" : "Add {name}",
106 "settings.service.form.availableServices" : "Available services",
107 "settings.service.form.customUrl" : "Custom server",
108 "settings.service.form.customUrlPremiumInfo" : "To add self hosted services, you need a Franz Premium Supporter Account.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade your account",
110 "settings.service.form.customUrlValidationError" : "Could not validate custom {name} server.",
111 "settings.service.form.deleteButton" : "Delete service",
112 "settings.service.form.editServiceHeadline" : "Edit {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Enable notifications",
115 "settings.service.form.enableService" : "Enable service",
116 "settings.service.form.indirectMessageInfo" : "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Show message badge for all new messages",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "Name",
120 "settings.service.form.saveButton" : "Save service",
121 "settings.service.form.tabHosted" : "Hosted",
122 "settings.service.form.tabOnPremise" : "Self hosted ⭐️",
123 "settings.service.form.team" : "Team",
124 "settings.service.form.yourServices" : "Your services",
125 "settings.services.deletedInfo" : "Service has been deleted",
126 "settings.services.discoverServices" : "Discover services",
127 "settings.services.headline" : "Your services",
128 "settings.services.noServicesAdded" : "You haven't added any services yet.",
129 "settings.services.tooltip.isDisabled" : "Service is disabled",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Notifications are disabled",
132 "settings.services.updatedInfo" : "Your changes have been saved",
133 "settings.user.form.accountType.company" : "Company",
134 "settings.user.form.accountType.individual" : "Individual",
135 "settings.user.form.accountType.label" : "Account type",
136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Current password",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "New password",
142 "sidebar.addNewService" : "Add new service",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Settings",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Company",
147 "signup.email.label" : "Email address",
148 "signup.emailDuplicate" : "A user with that email address already exists",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Sign up",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "By creating a Franz account you accept the",
153 "signup.legal.privacy" : "Privacy Statement",
154 "signup.legal.terms" : "Terms of service",
155 "signup.link.login" : "Already have an account, sign in?",
156 "signup.password.label" : "Password",
157 "signup.submit.label" : "Create account",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "No ads, ever!",
160 "subscription.features.comingSoon" : "coming soon",
161 "subscription.features.customServices" : "Private services for you and your team",
162 "subscription.features.encryptedSync" : "Encrypted session synchronization",
163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat",
164 "subscription.features.vpn" : "Proxy & VPN support",
165 "subscription.includedFeatures" : "Paid Franz Premium Supporter Account includes",
166 "subscription.mining.experimental" : "experimental",
167 "subscription.mining.headline" : "How does this work?",
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.",
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.",
170 "subscription.mining.line3" : "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.",
171 "subscription.mining.moreInformation" : "Get more information about this plan.",
172 "subscription.paymentSessionError" : "Could not initialize payment form",
173 "subscription.submit.label" : "I want to support the development of Franz",
174 "subscription.type.free" : "free",
175 "subscription.type.mining" : "Support Franz with processing power",
176 "subscription.type.month" : "month",
177 "subscription.type.year" : "year",
178 "subscriptionPopup.buttonCancel" : "Cancel",
179 "subscriptionPopup.buttonDone" : "Done",
180 "tabs.item.deleteService" : "Delete service",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Disable notifications",
183 "tabs.item.disableService" : "Disable service",
184 "tabs.item.edit" : "Edit",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Enable notifications",
187 "tabs.item.enableService" : "Enable service",
188 "tabs.item.reload" : "Reload",
189 "welcome.loginButton" : "Login to your account",
190 "welcome.signupButton" : "Create a free account",
191 "welcome.slogan" : "Messaging that works for you"
192}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index b1d260f0a..8de5e5e02 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -21,8 +21,8 @@
21 "password.link.signup": "Create a free account", 21 "password.link.signup": "Create a free account",
22 "password.link.login": "Sign in to your account", 22 "password.link.login": "Sign in to your account",
23 "signup.headline": "Sign up", 23 "signup.headline": "Sign up",
24 "signup.firstname.label": "Firstname", 24 "signup.firstname.label": "First Name",
25 "signup.lastname.label": "Lastname", 25 "signup.lastname.label": "Last Name",
26 "signup.email.label": "Email address", 26 "signup.email.label": "Email address",
27 "signup.company.label": "Company", 27 "signup.company.label": "Company",
28 "signup.password.label": "Password", 28 "signup.password.label": "Password",
@@ -58,9 +58,12 @@
58 "infobar.updateAvailable": "A new update for Franz is available.", 58 "infobar.updateAvailable": "A new update for Franz is available.",
59 "infobar.buttonReloadServices": "Reload services", 59 "infobar.buttonReloadServices": "Reload services",
60 "infobar.buttonInstallUpdate": "Restart & install update", 60 "infobar.buttonInstallUpdate": "Restart & install update",
61 "infobar.buttonChangelog": "What is new?",
61 "infobar.requiredRequestsFailed": "Could not load services and user information", 62 "infobar.requiredRequestsFailed": "Could not load services and user information",
62 "sidebar.settings": "Settings", 63 "sidebar.settings": "Settings",
63 "sidebar.addNewService": "Add new service", 64 "sidebar.addNewService": "Add new service",
65 "sidebar.mute": "Disable audio",
66 "sidebar.unmute": "Enable audio",
64 "services.welcome": "Welcome to Franz", 67 "services.welcome": "Welcome to Franz",
65 "services.getStarted": "Get started", 68 "services.getStarted": "Get started",
66 "settings.account.headline": "Account", 69 "settings.account.headline": "Account",
@@ -94,6 +97,7 @@
94 "settings.recipes.dev": "Development", 97 "settings.recipes.dev": "Development",
95 "settings.recipes.nothingFound": "Sorry, but no service matched your search term.", 98 "settings.recipes.nothingFound": "Sorry, but no service matched your search term.",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added", 99 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
100 "settings.recipes.missingService": "Missing a service?",
97 "settings.service.form.saveButton": "Save service", 101 "settings.service.form.saveButton": "Save service",
98 "settings.service.form.deleteButton": "Delete service", 102 "settings.service.form.deleteButton": "Delete service",
99 "settings.service.form.availableServices": "Available services", 103 "settings.service.form.availableServices": "Available services",
@@ -106,11 +110,20 @@
106 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", 110 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.",
107 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", 111 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account",
108 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", 112 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
113 "settings.service.form.name": "Name",
114 "settings.service.form.enableService": "Enable service",
115 "settings.service.form.enableNotification": "Enable notifications",
116 "settings.service.form.team": "Team",
117 "settings.service.form.customUrl": "Custom server",
118 "settings.service.form.indirectMessages": "Show message badge for all new messages",
119 "settings.service.form.enableAudio": "Enable audio",
120 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
109 "settings.service.error.headline": "Error", 121 "settings.service.error.headline": "Error",
110 "settings.service.error.goBack": "Back to services", 122 "settings.service.error.goBack": "Back to services",
111 "settings.service.error.message": "Could not load service recipe.", 123 "settings.service.error.message": "Could not load service recipe.",
112 "settings.services.tooltip.isDisabled": "Service is disabled", 124 "settings.services.tooltip.isDisabled": "Service is disabled",
113 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 125 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
126 "settings.services.tooltip.isMuted": "All sounds are muted",
114 "settings.services.headline": "Your services", 127 "settings.services.headline": "Your services",
115 "settings.services.noServicesAdded": "You haven't added any services yet.", 128 "settings.services.noServicesAdded": "You haven't added any services yet.",
116 "settings.services.discoverServices": "Discover services", 129 "settings.services.discoverServices": "Discover services",
@@ -120,6 +133,8 @@
120 "settings.app.headlineGeneral": "General", 133 "settings.app.headlineGeneral": "General",
121 "settings.app.headlineLanguage": "Language", 134 "settings.app.headlineLanguage": "Language",
122 "settings.app.headlineUpdates": "Updates", 135 "settings.app.headlineUpdates": "Updates",
136 "settings.app.headlineAppearance": "Appearance",
137 "settings.app.headlineAdvanced": "Advanced",
123 "settings.app.buttonSearchForUpdate": "Check for updates", 138 "settings.app.buttonSearchForUpdate": "Check for updates",
124 "settings.app.buttonInstallUpdate": "Restart & install update", 139 "settings.app.buttonInstallUpdate": "Restart & install update",
125 "settings.app.updateStatusSearching": "Is searching for update", 140 "settings.app.updateStatusSearching": "Is searching for update",
@@ -131,16 +146,14 @@
131 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", 146 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray",
132 "settings.app.form.runInBackground": "Keep Franz in background when closing the window", 147 "settings.app.form.runInBackground": "Keep Franz in background when closing the window",
133 "settings.app.form.language": "Language", 148 "settings.app.form.language": "Language",
149 "settings.app.form.enableSpellchecking": "Enable spell checking",
150 "settings.app.form.showDisabledServices": "Display disabled services tabs",
134 "settings.app.form.beta": "Include beta versions", 151 "settings.app.form.beta": "Include beta versions",
152 "settings.app.translationHelp": "Help us to translate Franz into your language.",
135 "settings.app.currentVersion": "Current version:", 153 "settings.app.currentVersion": "Current version:",
136 "settings.service.form.name": "Name", 154 "settings.app.restartRequired": "Changes require restart",
137 "settings.service.form.enableService": "Enable service", 155 "settings.user.form.firstname": "First Name",
138 "settings.service.form.enableNotification": "Enable notifications", 156 "settings.user.form.lastname": "Last Name",
139 "settings.service.form.team": "Team",
140 "settings.service.form.customUrl": "Custom server",
141 "settings.service.form.indirectMessages": "Show message badge for all new messages",
142 "settings.user.form.firstname": "Firstname",
143 "settings.user.form.lastname": "Lastname",
144 "settings.user.form.email": "Email", 157 "settings.user.form.email": "Email",
145 "settings.user.form.currentPassword": "Current password", 158 "settings.user.form.currentPassword": "Current password",
146 "settings.user.form.newPassword": "New password", 159 "settings.user.form.newPassword": "New password",
@@ -158,12 +171,22 @@
158 "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.", 171 "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.",
159 "subscription.mining.line3": "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.", 172 "subscription.mining.line3": "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.",
160 "subscription.mining.moreInformation": "Get more information about this plan.", 173 "subscription.mining.moreInformation": "Get more information about this plan.",
174 "subscription.euTaxInfo": "EU residents: local sales tax may apply",
161 "subscriptionPopup.buttonCancel": "Cancel", 175 "subscriptionPopup.buttonCancel": "Cancel",
162 "subscriptionPopup.buttonDone": "Done", 176 "subscriptionPopup.buttonDone": "Done",
163 "tabs.item.reload": "Reload", 177 "tabs.item.reload": "Reload",
164 "tabs.item.edit": "Edit", 178 "tabs.item.edit": "Edit",
165 "tabs.item.disableNotifications": "Disable notifications", 179 "tabs.item.disableNotifications": "Disable notifications",
166 "tabs.item.enableNotification": "Enable notifications", 180 "tabs.item.enableNotification": "Enable notifications",
181 "tabs.item.disableAudio": "Disable audio",
182 "tabs.item.enableAudio": "Enable audio",
167 "tabs.item.disableService": "Disable service", 183 "tabs.item.disableService": "Disable service",
168 "tabs.item.deleteService": "Delete service" 184 "tabs.item.enableService": "Enable service",
185 "tabs.item.deleteService": "Delete service",
186 "service.crashHandler.headline": "Oh no!",
187 "service.crashHandler.text": "{name} has caused an error.",
188 "service.crashHandler.action": "Reload {name}",
189 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
190 "service.disabledHandler.headline": "{name} is disabled",
191 "service.disabledHandler.action": "Enable {name}"
169} 192}
diff --git a/src/i18n/locales/es-ES.json b/src/i18n/locales/es-ES.json
deleted file mode 100644
index f71b07b2d..000000000
--- a/src/i18n/locales/es-ES.json
+++ /dev/null
@@ -1,168 +0,0 @@
1{
2 "global.api.unhealthy": "No se pudo conectar con los servicios online de Franz",
3 "global.notConnectedToTheInternet": "No estás conectado a internet.",
4 "welcome.signupButton": "Crea una cuenta gratuita",
5 "welcome.loginButton": "Accede a tu cuenta",
6 "welcome.slogan": "Mensajería hecha para ti",
7 "login.headline": "Acceder",
8 "login.email.label": "Dirección de Email",
9 "login.password.label": "Contraseña",
10 "login.submit.label": "Acceder",
11 "login.invalidCredentials": "Email o contraseña no válidos",
12 "login.tokenExpired": "Tu sesión ha expirado. Por favor, accede de nuevo.",
13 "login.serverLogout": "Tu sesión ha expirado. Por favor, accede de nuevo.",
14 "login.link.signup": "Crea una cuenta gratuita",
15 "login.link.password": "Restablecer contraseña",
16 "password.headline": "Restablecer contraseña",
17 "password.email.label": "Dirección de Email",
18 "password.submit.label": "Enviar",
19 "password.noUser": "No hemos encontrado un usuario con ese email",
20 "password.successInfo": "Por favor, comprueba tu email",
21 "password.link.signup": "Crea una cuenta gratuita",
22 "password.link.login": "Accede a tu cuenta",
23 "signup.headline": "Crea tu cuenta",
24 "signup.firstname.label": "Nombre",
25 "signup.lastname.label": "Apellidos",
26 "signup.email.label": "Dirección de Email",
27 "signup.company.label": "Empresa",
28 "signup.password.label": "Contraseña",
29 "signup.submit.label": "Crear cuenta",
30 "signup.link.login": "¿Tienes ya una cuenta? Accede",
31 "signup.emailDuplicate": "Ya existe un usuario con esa dirección de email",
32 "signup.legal.info": "Al crear una cuenta de Franz aceptas los",
33 "signup.legal.terms": "Términos de servicio",
34 "signup.legal.privacy": "Política de privacidad",
35 "pricing.headline": "Ayuda a Franz",
36 "pricing.support.label": "Selecciona tu plan de ayuda",
37 "pricing.submit.label": "Quiero ayudar al desarrollo de Franz",
38 "pricing.link.skipPayment": "No quiero ayudar al desarrollo de Franz.",
39 "import.headline": "Importa tus servicios de Franz 4",
40 "import.notSupportedHeadline": "Servicios aún no disponibles en Franz 5",
41 "import.submit.label": "Importar servicios",
42 "import.skip.label": "Quiero añadir los servicios manualmente",
43 "invite.submit.label": "Enviar invitaciones",
44 "invite.headline.friends": "Invita a 3 de tus amigos o compañeros",
45 "invite.name.label": "Nombre",
46 "invite.email.label": "Dirección de Email",
47 "invite.skip.label": "Prefiero hacer esto luego",
48 "subscription.submit.label": "Quiero ayudar al desarrollo de Franz",
49 "subscription.paymentSessionError": "No se ha podido inicializar el formulario de pago",
50 "subscription.includedFeatures": "La cuenta de Franz Premium Supporter incluye",
51 "subscription.features.onpremise": "Añadir servicios in-situ/alojados como HipChat",
52 "subscription.features.customServices": "Servicios privados para ti y tu equipo",
53 "subscription.features.encryptedSync": "Sincronización de sesión encriptada",
54 "subscription.features.vpn": "Soporte para Proxy y VPN",
55 "subscription.features.ads": "¡Sin anuncios, para siempre!",
56 "subscription.features.comingSoon": "próximamente",
57 "infobar.servicesUpdated": "Tus servicios han sido actualizados.",
58 "infobar.updateAvailable": "Una nueva actualización para Franz está disponible.",
59 "infobar.buttonReloadServices": "Volver a cargar servicios",
60 "infobar.buttonInstallUpdate": "Reiniciar e instalar actualizaciones",
61 "infobar.requiredRequestsFailed": "No se han podido cargar los servicios y la información de usuario",
62 "sidebar.settings": "Ajustes",
63 "services.welcome": "Bienvenido a Franz",
64 "services.getStarted": "Comienza",
65 "settings.account.headline": "Mi cuenta",
66 "settings.account.headlineSubscription": "Tu suscripción",
67 "settings.account.headlineUpgrade": "Mejora tu cuenta y ayuda a Franz",
68 "settings.account.headlineInvoices": "Recibos",
69 "settings.account.manageSubscription.label": "Administra tu suscripción",
70 "settings.account.accountType.basic": "Cuenta Básica",
71 "settings.account.accountType.premium": "Cuenta Premium Supporter",
72 "settings.account.account.editButton": "Editar cuenta",
73 "settings.account.invoiceDownload": "Descargar",
74 "settings.account.userInfoRequestFailed": "No se ha podido cargar la información de usuario",
75 "settings.account.tryReloadUserInfoRequest": "TPrueba otra vez",
76 "settings.account.headlineProfile": "Actualizar perfil",
77 "settings.account.headlineAccount": "Información de la cuenta",
78 "settings.account.headlinePassword": "Cambiar contraseña",
79 "settings.account.successInfo": "Tus cambios han sido guardados",
80 "settings.account.buttonSave": "Actualizar perfil",
81 "settings.account.mining.thankyou": "Gracias por ayudar a Franz con tu procesador.",
82 "settings.account.mining.active": "Ahora mismo estás haciendo {hashes} cálculos por segundo.",
83 "settings.account.mining.moreInformation": "Obtén más información",
84 "settings.account.mining.cancel": "Cancelar minado",
85 "settings.navigation.availableServices": "Servicios disponibles",
86 "settings.navigation.yourServices": "Tus servicios",
87 "settings.navigation.account": "Cuenta",
88 "settings.navigation.settings": "Ajustes",
89 "settings.navigation.logout": "Desconectar",
90 "settings.recipes.headline": "Servicios disponibles",
91 "settings.recipes.mostPopular": "Más populares",
92 "settings.recipes.all": "Todos los servicios",
93 "settings.recipes.dev": "Desarrollo",
94 "settings.recipes.nothingFound": "Lo sentimos, no hemos encontrado nada.",
95 "settings.recipes.servicesSuccessfulAddedInfo": "Servicio añadido con éxito",
96 "settings.service.form.saveButton": "Guardar servicio",
97 "settings.service.form.deleteButton": "Eliminar servicio",
98 "settings.service.form.availableServices": "Servicios disponibles",
99 "settings.service.form.yourServices": "Tus servicios",
100 "settings.service.form.addServiceHeadline": "Añadir {name}",
101 "settings.service.form.editServiceHeadline": "Editar {name}",
102 "settings.service.form.tabHosted": "Alojados",
103 "settings.service.form.tabOnPremise": "Autoalojados ⭐️",
104 "settings.service.form.customUrlValidationError": "No se ha podido validar el servidor personalizado {name}.",
105 "settings.service.form.customUrlPremiumInfo": "Para añadir servicios autoalojados necesitas una cuenta de Franz Premium Supporter.",
106 "settings.service.form.customUrlUpgradeAccount": "Mejora tu cuenta",
107 "settings.service.form.indirectMessageInfo": "Serás notificado sobre todos los nuevos mensajes en un canal, no solo @username, @channel, @here, ...",
108 "settings.service.error.headline": "Error",
109 "settings.service.error.goBack": "Volver a los servicios",
110 "settings.service.error.message": "No se ha podido cargar el servicio.",
111 "settings.services.tooltip.isDisabled": "Servicio deshabilitado",
112 "settings.services.tooltip.notificationsDisabled": "Notificaciones deshabilitadas",
113 "settings.services.headline": "Tus servicios",
114 "settings.services.noServicesAdded": "Aún no has añadido ningún servicio.",
115 "settings.services.discoverServices": "Descubrir servicios",
116 "settings.services.updatedInfo": "Tu cambios han sido guardados",
117 "settings.services.deletedInfo": "Se ha eliminado el servicio",
118 "settings.app.headline": "Ajustes",
119 "settings.app.headlineGeneral": "Generales",
120 "settings.app.headlineLanguage": "Idioma",
121 "settings.app.headlineUpdates": "Actualizaciones",
122 "settings.app.buttonSearchForUpdate": "Buscar actualizaciones",
123 "settings.app.buttonInstallUpdate": "Reiniciar e instalar actualizaciones",
124 "settings.app.updateStatusSearching": "Buscando actualizaciones",
125 "settings.app.updateStatusAvailable": "Actualización disponible, descargando...",
126 "settings.app.updateStatusUpToDate": "Estás utilizando la última versión de Franz",
127 "settings.app.form.autoLaunchOnStart": "Iniciar Franz al encender",
128 "settings.app.form.autoLaunchInBackground": "Abrir en segundo plano",
129 "settings.app.form.enableSystemTray": "Mostrar Franz en la barra de tareas",
130 "settings.app.form.minimizeToSystemTray": "Minimizar Franz a la barra de tareas",
131 "settings.app.form.runInBackground": "Mantener Franz abierto en segundo plano al cerrar la ventana",
132 "settings.app.form.language": "Idioma",
133 "settings.app.form.beta": "Incluir versiones beta",
134 "settings.app.currentVersion": "Versión actual:",
135 "settings.service.form.name": "Nombre",
136 "settings.service.form.enableService": "Habilitar servicio",
137 "settings.service.form.enableNotification": "Habilitar notificaciones",
138 "settings.service.form.team": "Equipo",
139 "settings.service.form.customUrl": "Servidor personalizado",
140 "settings.service.form.indirectMessages": "Mostrar señal para todos los mensajes nuevos",
141 "settings.user.form.firstname": "Nombre",
142 "settings.user.form.lastname": "Apellidos",
143 "settings.user.form.email": "Email",
144 "settings.user.form.currentPassword": "Contraseña actual",
145 "settings.user.form.newPassword": "Nueva contraseña",
146 "settings.user.form.accountType.label": "Tipo de cuenta",
147 "settings.user.form.accountType.individual": "Individual",
148 "settings.user.form.accountType.non-profit": "Sin ánimo de lucro",
149 "settings.user.form.accountType.company": "Empresa",
150 "subscription.type.free": "gratis",
151 "subscription.type.month": "mensual",
152 "subscription.type.year": "anual",
153 "subscription.type.mining": "Ayuda a Franz con tu procesador",
154 "subscription.mining.headline": "¿Cómo funciona?",
155 "subscription.mining.experimental": "experimental",
156 "subscription.mining.line1": "Al habilitar \"Ayuda a Franz con tu procesador\", Franz utilizará entre un 20-50% de tu CPU para minar la criptomoneda Monero, lo que equivale a aproximadamente 5$ anuales.",
157 "subscription.mining.line2": "Adaptaremos el uso de CPU basándonos en tu carga de trabajo para no vaciar tu batería ni realentizar tu ordenador.",
158 "subscription.mining.line3": "Siempre que el minero esté activo, tendrás acceso ilimitado a todas las ventajas de la cuenta Franz Premium Supporter.",
159 "subscription.mining.moreInformation": "Obtén más información sobre este plan.",
160 "subscriptionPopup.buttonCancel": "Cancelar",
161 "subscriptionPopup.buttonDone": "Hecho",
162 "tabs.item.reload": "Recargar",
163 "tabs.item.edit": "Editar",
164 "tabs.item.disableNotifications": "Desactivar notificaciones",
165 "tabs.item.enableNotification": "Activar notificaciones",
166 "tabs.item.disableService": "Deshabilitar servicio",
167 "tabs.item.deleteService": "Eliminar servicio"
168}
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
new file mode 100644
index 000000000..5717a18b1
--- /dev/null
+++ b/src/i18n/locales/es.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Can't connect to Franz online services",
3 "global.notConnectedToTheInternet" : "You are not connected to the internet.",
4 "import.headline" : "Import your Franz 4 services",
5 "import.notSupportedHeadline" : "Services not yet supported in Franz 5",
6 "import.skip.label" : "I want add services manually",
7 "import.submit.label" : "Import services",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Restart & install update",
10 "infobar.buttonReloadServices" : "Reload services",
11 "infobar.requiredRequestsFailed" : "Could not load services and user information",
12 "infobar.servicesUpdated" : "Your services have been updated.",
13 "infobar.updateAvailable" : "A new update for Franz is available.",
14 "invite.email.label" : "Email address",
15 "invite.headline.friends" : "Invite 3 of your friends or colleagues",
16 "invite.name.label" : "Name",
17 "invite.skip.label" : "I want to do this later",
18 "invite.submit.label" : "Send invites",
19 "login.email.label" : "Email address",
20 "login.headline" : "Sign in",
21 "login.invalidCredentials" : "Email or password not valid",
22 "login.link.password" : "Reset password",
23 "login.link.signup" : "Create a free account",
24 "login.password.label" : "Password",
25 "login.serverLogout" : "Your session expired, please login again.",
26 "login.submit.label" : "Sign in",
27 "login.tokenExpired" : "Your session expired, please login again.",
28 "password.email.label" : "Email address",
29 "password.headline" : "Reset password",
30 "password.link.login" : "Sign in to your account",
31 "password.link.signup" : "Create a free account",
32 "password.noUser" : "No user with that email address was found",
33 "password.submit.label" : "Submit",
34 "password.successInfo" : "Please check your email",
35 "pricing.headline" : "Support Franz",
36 "pricing.link.skipPayment" : "I don't want to support the development of Franz.",
37 "pricing.submit.label" : "I want to support the development of Franz",
38 "pricing.support.label" : "Select your support plan",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Get started",
46 "services.welcome" : "Welcome to Franz",
47 "settings.account.account.editButton" : "Edit account",
48 "settings.account.accountType.basic" : "Basic Account",
49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "settings.account.buttonSave" : "Update profile",
51 "settings.account.headline" : "Account",
52 "settings.account.headlineAccount" : "Account information",
53 "settings.account.headlineInvoices" : "Invoices",
54 "settings.account.headlinePassword" : "Change password",
55 "settings.account.headlineProfile" : "Update profile",
56 "settings.account.headlineSubscription" : "Your subscription",
57 "settings.account.headlineUpgrade" : "Upgrade your account & support Franz",
58 "settings.account.invoiceDownload" : "Download",
59 "settings.account.manageSubscription.label" : "Manage your subscription",
60 "settings.account.mining.active" : "You are right now performing {hashes} calculations per second.",
61 "settings.account.mining.cancel" : "Cancel mining",
62 "settings.account.mining.moreInformation" : "Get more information",
63 "settings.account.mining.thankyou" : "Thank you for supporting Franz with your processing power.",
64 "settings.account.successInfo" : "Your changes have been saved",
65 "settings.account.tryReloadUserInfoRequest" : "Try again",
66 "settings.account.userInfoRequestFailed" : "Could not load user information",
67 "settings.app.buttonInstallUpdate" : "Restart & install update",
68 "settings.app.buttonSearchForUpdate" : "Check for updates",
69 "settings.app.currentVersion" : "Current version:",
70 "settings.app.form.autoLaunchInBackground" : "Open in background",
71 "settings.app.form.autoLaunchOnStart" : "Launch Franz on start",
72 "settings.app.form.beta" : "Include beta versions",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray",
75 "settings.app.form.language" : "Language",
76 "settings.app.form.minimizeToSystemTray" : "Minimize Franz to system tray",
77 "settings.app.form.runInBackground" : "Keep Franz in background when closing the window",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Settings",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "General",
83 "settings.app.headlineLanguage" : "Language",
84 "settings.app.headlineUpdates" : "Updates",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Update available, downloading...",
88 "settings.app.updateStatusSearching" : "Is searching for update",
89 "settings.app.updateStatusUpToDate" : "You are using the latest version of Franz",
90 "settings.navigation.account" : "Account",
91 "settings.navigation.availableServices" : "Available services",
92 "settings.navigation.logout" : "Logout",
93 "settings.navigation.settings" : "Settings",
94 "settings.navigation.yourServices" : "Your services",
95 "settings.recipes.all" : "All services",
96 "settings.recipes.dev" : "Development",
97 "settings.recipes.headline" : "Available services",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Most popular",
100 "settings.recipes.nothingFound" : "Sorry, but no service matched your search term.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service successfully added",
102 "settings.service.error.goBack" : "Back to services",
103 "settings.service.error.headline" : "Error",
104 "settings.service.error.message" : "Could not load service recipe.",
105 "settings.service.form.addServiceHeadline" : "Add {name}",
106 "settings.service.form.availableServices" : "Available services",
107 "settings.service.form.customUrl" : "Custom server",
108 "settings.service.form.customUrlPremiumInfo" : "To add self hosted services, you need a Franz Premium Supporter Account.",
109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade your account",
110 "settings.service.form.customUrlValidationError" : "Could not validate custom {name} server.",
111 "settings.service.form.deleteButton" : "Delete service",
112 "settings.service.form.editServiceHeadline" : "Edit {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Enable notifications",
115 "settings.service.form.enableService" : "Enable service",
116 "settings.service.form.indirectMessageInfo" : "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Show message badge for all new messages",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "Name",
120 "settings.service.form.saveButton" : "Save service",
121 "settings.service.form.tabHosted" : "Hosted",
122 "settings.service.form.tabOnPremise" : "Self hosted ⭐️",
123 "settings.service.form.team" : "Team",
124 "settings.service.form.yourServices" : "Your services",
125 "settings.services.deletedInfo" : "Service has been deleted",
126 "settings.services.discoverServices" : "Discover services",
127 "settings.services.headline" : "Your services",
128 "settings.services.noServicesAdded" : "You haven't added any services yet.",
129 "settings.services.tooltip.isDisabled" : "Service is disabled",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Notifications are disabled",
132 "settings.services.updatedInfo" : "Your changes have been saved",
133 "settings.user.form.accountType.company" : "Company",
134 "settings.user.form.accountType.individual" : "Individual",
135 "settings.user.form.accountType.label" : "Account type",
136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Current password",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "New password",
142 "sidebar.addNewService" : "Add new service",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Settings",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Company",
147 "signup.email.label" : "Email address",
148 "signup.emailDuplicate" : "A user with that email address already exists",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Sign up",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "By creating a Franz account you accept the",
153 "signup.legal.privacy" : "Privacy Statement",
154 "signup.legal.terms" : "Terms of service",
155 "signup.link.login" : "Already have an account, sign in?",
156 "signup.password.label" : "Password",
157 "signup.submit.label" : "Create account",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "No ads, ever!",
160 "subscription.features.comingSoon" : "coming soon",
161 "subscription.features.customServices" : "Private services for you and your team",
162 "subscription.features.encryptedSync" : "Encrypted session synchronization",
163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat",
164 "subscription.features.vpn" : "Proxy & VPN support",
165 "subscription.includedFeatures" : "Paid Franz Premium Supporter Account includes",
166 "subscription.mining.experimental" : "experimental",
167 "subscription.mining.headline" : "How does this work?",
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.",
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.",
170 "subscription.mining.line3" : "As long as the miner is active, you will have unlimited access to all the Franz Premium Supporter Features.",
171 "subscription.mining.moreInformation" : "Get more information about this plan.",
172 "subscription.paymentSessionError" : "Could not initialize payment form",
173 "subscription.submit.label" : "I want to support the development of Franz",
174 "subscription.type.free" : "free",
175 "subscription.type.mining" : "Support Franz with processing power",
176 "subscription.type.month" : "month",
177 "subscription.type.year" : "year",
178 "subscriptionPopup.buttonCancel" : "Cancel",
179 "subscriptionPopup.buttonDone" : "Done",
180 "tabs.item.deleteService" : "Delete service",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Disable notifications",
183 "tabs.item.disableService" : "Disable service",
184 "tabs.item.edit" : "Edit",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Enable notifications",
187 "tabs.item.enableService" : "Enable service",
188 "tabs.item.reload" : "Reload",
189 "welcome.loginButton" : "Login to your account",
190 "welcome.signupButton" : "Create a free account",
191 "welcome.slogan" : "Messaging that works for you"
192}
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index 2863f47e4..d54d7c34e 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -1,168 +1,192 @@
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é à Internet.",
4 "welcome.signupButton": "Créer un compte gratuitement", 4 "import.headline" : "Importez vos services depuis Franz 4",
5 "welcome.loginButton": "Connectez-vous à votre compte", 5 "import.notSupportedHeadline" : "Services non supportés actuellement dans Franz 5",
6 "welcome.slogan": "Une messagerie qui fonctionne pour vous", 6 "import.skip.label" : "Je veux ajouter des services manuellement",
7 "login.headline": "S'inscrire", 7 "import.submit.label" : "Importer des services",
8 "login.email.label": "Adresse e-mail", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Mot de passe", 9 "infobar.buttonInstallUpdate" : "Redémarrer et installer la mise à jour",
10 "login.submit.label": "Se connecter", 10 "infobar.buttonReloadServices" : "Recharger les services",
11 "login.invalidCredentials": "E-mail ou mot de passe invalide", 11 "infobar.requiredRequestsFailed" : "Impossible de charger les services et les informations de l'utilisateur",
12 "login.tokenExpired": "Votre session a expiré, veuillez vous reconnecter.", 12 "infobar.servicesUpdated" : "Vos services ont été mis à jour.",
13 "login.serverLogout": "Votre session a expiré, veuillez vous reconnecter.", 13 "infobar.updateAvailable" : "Une nouvelle mise à jour est disponible pour Franz.",
14 "login.link.signup": "Créer un compte gratuitement", 14 "invite.email.label" : "Adresse e-mail",
15 "login.link.password": "Réinitialiser le mot de passe", 15 "invite.headline.friends" : "Invitez 3 de vos amis ou collègues",
16 "password.headline": "Réinitialiser le mot de passe", 16 "invite.name.label" : "Nom",
17 "password.email.label": "Adresse e-mail", 17 "invite.skip.label" : "Je veux faire cela plus tard",
18 "password.submit.label": "Soumettre", 18 "invite.submit.label" : "Envoyer des invitations",
19 "password.noUser": "Aucun utilisateur avec cette adresse e-mail n'a été trouvé", 19 "login.email.label" : "Adresse e-mail",
20 "password.successInfo": "Merci de consulter vos e-mails", 20 "login.headline" : "S'inscrire",
21 "password.link.signup": "Créer un compte gratuitement", 21 "login.invalidCredentials" : "E-mail ou mot de passe invalide",
22 "password.link.login": "Connectez-vous à votre compte", 22 "login.link.password" : "Réinitialiser le mot de passe",
23 "signup.headline": "S'inscrire", 23 "login.link.signup" : "Créer un compte gratuitement",
24 "signup.firstname.label": "Prénom", 24 "login.password.label" : "Mot de passe",
25 "signup.lastname.label": "Nom", 25 "login.serverLogout" : "Votre session a expiré, veuillez vous reconnecter.",
26 "signup.email.label": "Adresse e-mail", 26 "login.submit.label" : "Se connecter",
27 "signup.company.label": "Compagnie", 27 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.",
28 "signup.password.label": "Mot de passe", 28 "password.email.label" : "Adresse e-mail",
29 "signup.submit.label": "Créer un compte", 29 "password.headline" : "Réinitialiser le mot de passe",
30 "signup.link.login": "Vous possédez déjà un compte ? Connectez-vous", 30 "password.link.login" : "Connectez-vous à votre compte",
31 "signup.emailDuplicate": "Un utilisateur avec cette adresse e-mail existe déjà", 31 "password.link.signup" : "Créer un compte gratuitement",
32 "signup.legal.info": "En créant un compte Franz, vous acceptez les", 32 "password.noUser" : "Aucun utilisateur avec cette adresse e-mail n'a été trouvé",
33 "signup.legal.terms": "Conditions d'utilisation", 33 "password.submit.label" : "Soumettre",
34 "signup.legal.privacy": "Déclaration de confidentialité", 34 "password.successInfo" : "Merci de consulter vos e-mails",
35 "pricing.headline": "Supportez Franz", 35 "pricing.headline" : "Supportez Franz",
36 "pricing.support.label": "Sélectionnez votre plan de soutien", 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.link.skipPayment": "Je ne veux pas soutenir le développement de Franz.", 38 "pricing.support.label" : "Sélectionnez votre plan de soutien",
39 "import.headline": "Importez vos services depuis Franz 4", 39 "service.crashHandler.action" : "Reload {name}",
40 "import.notSupportedHeadline": "Services non supportés actuellement dans Franz 5", 40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "import.submit.label": "Importer des services", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Je veux ajouter des services manuellement", 42 "service.crashHandler.text" : "{name} has caused an error.",
43 "invite.submit.label": "Envoyer des invitations", 43 "service.disabledHandler.action" : "Enable {name}",
44 "invite.headline.friends": "Invitez 3 de vos amis ou collègues", 44 "service.disabledHandler.headline" : "{name} is disabled",
45 "invite.name.label": "Nom", 45 "services.getStarted" : "Commencer",
46 "invite.email.label": "Adresse e-mail", 46 "services.welcome" : "Bienvenue sur Franz",
47 "invite.skip.label": "Je veux faire cela plus tard", 47 "settings.account.account.editButton" : "Modifier le compte",
48 "subscription.submit.label": "Je veux soutenir le développement de Franz", 48 "settings.account.accountType.basic" : "Compte basique",
49 "subscription.paymentSessionError": "Impossible d'initialiser le formulaire de paiement", 49 "settings.account.accountType.premium" : "Compte Supporter Premium",
50 "subscription.includedFeatures": "Le compte payant Supporter Premium Franz inclut", 50 "settings.account.buttonSave" : "Mettre à jour le profil",
51 "subscription.features.onpremise": "Add on-premise/hosted services like HipChat", 51 "settings.account.headline" : "Compte",
52 "subscription.features.customServices": "Des services privés pour vous et votre équipe", 52 "settings.account.headlineAccount" : "Informations de compte",
53 "subscription.features.encryptedSync": "Synchronisation de session chiffrée", 53 "settings.account.headlineInvoices" : "Factures",
54 "subscription.features.vpn": "Support des Proxy et VPN", 54 "settings.account.headlinePassword" : "Changer le mot de passe",
55 "subscription.features.ads": "Aucune publicité !", 55 "settings.account.headlineProfile" : "Mettre à jour le profil",
56 "subscription.features.comingSoon": "arrive bientôt", 56 "settings.account.headlineSubscription" : "Votre abonnement",
57 "infobar.servicesUpdated": "Vos services ont été mis à jour.", 57 "settings.account.headlineUpgrade" : "Améliorez votre compte et supportez Franz",
58 "infobar.updateAvailable": "Une nouvelle mise à jour est disponible pour Franz.", 58 "settings.account.invoiceDownload" : "Télécharger",
59 "infobar.buttonReloadServices": "Recharger les services", 59 "settings.account.manageSubscription.label" : "Gérer votre abonnement",
60 "infobar.buttonInstallUpdate": "Redémarrer et installer la mise à jour", 60 "settings.account.mining.active" : "Vous êtes en train d'effectuer {hashes} calculs par seconde.",
61 "infobar.requiredRequestsFailed": "Impossible de charger les services et les informations de l'utilisateur", 61 "settings.account.mining.cancel" : "Annuler le minage",
62 "sidebar.settings": "Paramètres", 62 "settings.account.mining.moreInformation" : "Obtenir plus d'informations",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "Merci de soutenir Franz avec votre puissance de calcul.",
64 "services.welcome": "Bienvenue sur Franz", 64 "settings.account.successInfo" : "Vos modifications ont été enregistrées",
65 "services.getStarted": "Commencer", 65 "settings.account.tryReloadUserInfoRequest" : "Réessayer",
66 "settings.account.headline": "Compte", 66 "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur",
67 "settings.account.headlineSubscription": "Votre abonnement", 67 "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour",
68 "settings.account.headlineUpgrade": "Améliorez votre compte et supportez Franz", 68 "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour",
69 "settings.account.headlineInvoices": "Factures", 69 "settings.app.currentVersion" : "Version actuelle:",
70 "settings.account.manageSubscription.label": "Gérer votre abonnement", 70 "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan",
71 "settings.account.accountType.basic": "Compte basique", 71 "settings.app.form.autoLaunchOnStart" : "Lancer Franz au démarrage",
72 "settings.account.accountType.premium": "Compte Supporter Premium", 72 "settings.app.form.beta" : "Inclure les versions bêta",
73 "settings.account.account.editButton": "Modifier le compte", 73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.account.invoiceDownload": "Télécharger", 74 "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système",
75 "settings.account.userInfoRequestFailed": "Impossible de charger les informations de l'utilisateur", 75 "settings.app.form.language" : "Langue",
76 "settings.account.tryReloadUserInfoRequest": "Réessayer", 76 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification",
77 "settings.account.headlineProfile": "Mettre à jour le profil", 77 "settings.app.form.runInBackground" : "Ouvrir en arrière-plan",
78 "settings.account.headlineAccount": "Informations de compte", 78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.account.headlinePassword": "Changer le mot de passe", 79 "settings.app.headline" : "Paramètres",
80 "settings.account.successInfo": "Vos modifications ont été enregistrées", 80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.account.buttonSave": "Mettre à jour le profil", 81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.account.mining.thankyou": "Merci de soutenir Franz avec votre puissance de calcul.", 82 "settings.app.headlineGeneral" : "Général",
83 "settings.account.mining.active": "Vous êtes en train d'effectuer {hashes} calculs par seconde.", 83 "settings.app.headlineLanguage" : "Langue",
84 "settings.account.mining.moreInformation": "Obtenir plus d'informations", 84 "settings.app.headlineUpdates" : "Mises à jour",
85 "settings.account.mining.cancel": "Annuler le minage", 85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.navigation.availableServices": "Services disponibles", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Vos services", 87 "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement...",
88 "settings.navigation.account": "Compte", 88 "settings.app.updateStatusSearching" : "Recherche des mises à jour",
89 "settings.navigation.settings": "Paramètres", 89 "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz",
90 "settings.navigation.logout": "Se déconnecter", 90 "settings.navigation.account" : "Compte",
91 "settings.recipes.headline": "Services disponibles", 91 "settings.navigation.availableServices" : "Services disponibles",
92 "settings.recipes.mostPopular": "Les plus populaires", 92 "settings.navigation.logout" : "Se déconnecter",
93 "settings.recipes.all": "Tous les services", 93 "settings.navigation.settings" : "Paramètres",
94 "settings.recipes.dev": "Développement", 94 "settings.navigation.yourServices" : "Vos services",
95 "settings.recipes.nothingFound": "Désolé, aucun service ne correspond à votre recherche.", 95 "settings.recipes.all" : "Tous les services",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Service ajouté avec succès", 96 "settings.recipes.dev" : "Développement",
97 "settings.service.form.saveButton": "Enregistrer le service", 97 "settings.recipes.headline" : "Services disponibles",
98 "settings.service.form.deleteButton": "Supprimer le service", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Services disponibles", 99 "settings.recipes.mostPopular" : "Les plus populaires",
100 "settings.service.form.yourServices": "Vos services", 100 "settings.recipes.nothingFound" : "Désolé, aucun service ne correspond à votre recherche.",
101 "settings.service.form.addServiceHeadline": "Ajouter {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service ajouté avec succès",
102 "settings.service.form.editServiceHeadline": "Modifier {name}", 102 "settings.service.error.goBack" : "Retour aux services",
103 "settings.service.form.tabHosted": "Hébergé", 103 "settings.service.error.headline" : "Erreur",
104 "settings.service.form.tabOnPremise": "Auto-hébergé ⭐️", 104 "settings.service.error.message" : "Impossible de charger le service.",
105 "settings.service.form.customUrlValidationError": "Impossible de valider le {name} personnalisé du serveur.", 105 "settings.service.form.addServiceHeadline" : "Ajouter {name}",
106 "settings.service.form.customUrlPremiumInfo": "Pour ajouter des services auto-hébergés, vous avez besoin d'un compte Supporter Premium Franz.", 106 "settings.service.form.availableServices" : "Services disponibles",
107 "settings.service.form.customUrlUpgradeAccount": "Améliorez votre compte", 107 "settings.service.form.customUrl" : "Serveur personnalisé",
108 "settings.service.form.indirectMessageInfo": "Vous serez averti de tous les nouveaux messages dans un salon, pas seulement @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Pour ajouter des services auto-hébergés, vous avez besoin d'un compte Supporter Premium Franz.",
109 "settings.service.error.headline": "Erreur", 109 "settings.service.form.customUrlUpgradeAccount" : "Améliorez votre compte",
110 "settings.service.error.goBack": "Retour aux services", 110 "settings.service.form.customUrlValidationError" : "Impossible de valider le {name} personnalisé du serveur.",
111 "settings.service.error.message": "Could not load service recipe.", 111 "settings.service.form.deleteButton" : "Supprimer le service",
112 "settings.services.tooltip.isDisabled": "Le service est désactivé", 112 "settings.service.form.editServiceHeadline" : "Modifier {name}",
113 "settings.services.tooltip.notificationsDisabled": "Les notifications sont désactivées", 113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.services.headline": "Vos services", 114 "settings.service.form.enableNotification" : "Activer les notifications",
115 "settings.services.noServicesAdded": "Vous n'avez pas encore ajouté de services.", 115 "settings.service.form.enableService" : "Activer le service",
116 "settings.services.discoverServices": "Découvrir des services", 116 "settings.service.form.indirectMessageInfo" : "Vous serez averti de tous les nouveaux messages dans un salon, pas seulement @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Vos modifications ont été enregistrées", 117 "settings.service.form.indirectMessages" : "Afficher le badge des messages pour tous les nouveaux messages",
118 "settings.services.deletedInfo": "Le service a été supprimé", 118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.app.headline": "Paramètres", 119 "settings.service.form.name" : "Nom",
120 "settings.app.headlineGeneral": "Général", 120 "settings.service.form.saveButton" : "Enregistrer le service",
121 "settings.app.headlineLanguage": "Langue", 121 "settings.service.form.tabHosted" : "Hébergé",
122 "settings.app.headlineUpdates": "Mises à jour", 122 "settings.service.form.tabOnPremise" : "Auto-hébergé ⭐️",
123 "settings.app.buttonSearchForUpdate": "Vérifier les mises à jour", 123 "settings.service.form.team" : "Équipe",
124 "settings.app.buttonInstallUpdate": "Redémarrer et installer la mise à jour", 124 "settings.service.form.yourServices" : "Vos services",
125 "settings.app.updateStatusSearching": "Recherche des mises à jour", 125 "settings.services.deletedInfo" : "Le service a été supprimé",
126 "settings.app.updateStatusAvailable": "Mise à jour disponible, téléchargement...", 126 "settings.services.discoverServices" : "Découvrir des services",
127 "settings.app.updateStatusUpToDate": "Vous utilisez la dernière version de Franz", 127 "settings.services.headline" : "Vos services",
128 "settings.app.form.autoLaunchOnStart": "Lancer Franz au démarrage", 128 "settings.services.noServicesAdded" : "Vous n'avez pas encore ajouté de services.",
129 "settings.app.form.autoLaunchInBackground": "Ouvrir en arrière-plan", 129 "settings.services.tooltip.isDisabled" : "Le service est désactivé",
130 "settings.app.form.minimizeToSystemTray": "Minimiser Franz dans la zone de notification", 130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.app.form.runInBackground": "Gardez Franz en arrière-plan lors de la fermeture de la fenêtre", 131 "settings.services.tooltip.notificationsDisabled" : "Les notifications sont désactivées",
132 "settings.app.form.language": "Langue", 132 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées",
133 "settings.app.form.beta": "Inclure les versions bêta", 133 "settings.user.form.accountType.company" : "Entreprise",
134 "settings.app.currentVersion": "Version actuelle :", 134 "settings.user.form.accountType.individual" : "Individuel",
135 "settings.service.form.name": "Nom", 135 "settings.user.form.accountType.label" : "Type de compte",
136 "settings.service.form.enableService": "Activer le service", 136 "settings.user.form.accountType.non-profit" : "Non lucratif",
137 "settings.service.form.enableNotification": "Activer les notifications", 137 "settings.user.form.currentPassword" : "Mot de passe actuel",
138 "settings.service.form.team": "Équipe", 138 "settings.user.form.email" : "E-mail",
139 "settings.service.form.customUrl": "Serveur personnalisé", 139 "settings.user.form.firstname" : "Prénom",
140 "settings.service.form.indirectMessages": "Afficher le badge des messages pour tous les nouveaux messages", 140 "settings.user.form.lastname" : "Nom",
141 "settings.user.form.firstname": "Prénom", 141 "settings.user.form.newPassword" : "Nouveau mot de passe",
142 "settings.user.form.lastname": "Nom", 142 "sidebar.addNewService" : "Ajouter un nouveau service",
143 "settings.user.form.email": "E-mail", 143 "sidebar.mute" : "Disable audio",
144 "settings.user.form.currentPassword": "Mot de passe actuel", 144 "sidebar.settings" : "Paramètres",
145 "settings.user.form.newPassword": "Nouveau mot de passe", 145 "sidebar.unmute" : "Enable audio",
146 "settings.user.form.accountType.label": "Type de compte", 146 "signup.company.label" : "Entreprise",
147 "settings.user.form.accountType.individual": "Individuel", 147 "signup.email.label" : "Adresse e-mail",
148 "settings.user.form.accountType.non-profit": "Non lucratif", 148 "signup.emailDuplicate" : "Un utilisateur avec cette adresse e-mail existe déjà",
149 "settings.user.form.accountType.company": "Compagnie", 149 "signup.firstname.label" : "Prénom",
150 "subscription.type.free": "gratuit", 150 "signup.headline" : "S'inscrire",
151 "subscription.type.month": "mois", 151 "signup.lastname.label" : "Nom",
152 "subscription.type.year": "année", 152 "signup.legal.info" : "En créant un compte Franz, vous acceptez les",
153 "subscription.type.mining": "Soutenez Franz avec de la puissance de calcul", 153 "signup.legal.privacy" : "Déclaration de confidentialité",
154 "subscription.mining.headline": "Comment cela fonctionne-t-il?", 154 "signup.legal.terms" : "Conditions d'utilisation",
155 "subscription.mining.experimental": "expérimental", 155 "signup.link.login" : "Vous possédez déjà un compte ? Connectez-vous",
156 "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.", 156 "signup.password.label" : "Mot de passe",
157 "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.", 157 "signup.submit.label" : "Créer un compte",
158 "subscription.mining.line3": "Tant que le minage est actif, vous aurez un accès illimité à toutes les fonctionnalités Supporter Premium Franz.", 158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.mining.moreInformation": "Obtenir plus d'informations.", 159 "subscription.features.ads" : "Aucune publicité!",
160 "subscriptionPopup.buttonCancel": "Annuler", 160 "subscription.features.comingSoon" : "arrive bientôt",
161 "subscriptionPopup.buttonDone": "Terminé", 161 "subscription.features.customServices" : "Des services privés pour vous et votre équipe",
162 "tabs.item.reload": "Recharger", 162 "subscription.features.encryptedSync" : "Synchronisation de session chiffrée",
163 "tabs.item.edit": "Modifier", 163 "subscription.features.onpremise" : "Add on-premise\/hosted services like HipChat",
164 "tabs.item.disableNotifications": "Désactiver les notifications", 164 "subscription.features.vpn" : "Support des Proxy et VPN",
165 "tabs.item.enableNotification": "Activer les notifications", 165 "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut",
166 "tabs.item.disableService": "Désactiver le service", 166 "subscription.mining.experimental" : "expérimental",
167 "tabs.item.deleteService": "Supprimer le service" 167 "subscription.mining.headline" : "Comment cela fonctionne-t-il?",
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.",
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.",
170 "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.",
172 "subscription.paymentSessionError" : "Impossible d'initialiser le formulaire de paiement",
173 "subscription.submit.label" : "Je veux soutenir le développement de Franz",
174 "subscription.type.free" : "gratuit",
175 "subscription.type.mining" : "Soutenez Franz avec de la puissance de calcul",
176 "subscription.type.month" : "mois",
177 "subscription.type.year" : "année",
178 "subscriptionPopup.buttonCancel" : "Annuler",
179 "subscriptionPopup.buttonDone" : "Terminé",
180 "tabs.item.deleteService" : "Supprimer le service",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Désactiver les notifications",
183 "tabs.item.disableService" : "Désactiver le service",
184 "tabs.item.edit" : "Modifier",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Activer les notifications",
187 "tabs.item.enableService" : "Activer le service",
188 "tabs.item.reload" : "Recharger",
189 "welcome.loginButton" : "Connectez-vous à votre compte",
190 "welcome.signupButton" : "Créer un compte gratuitement",
191 "welcome.slogan" : "Une messagerie qui fonctionne pour vous"
168} 192}
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
new file mode 100644
index 000000000..63816cf65
--- /dev/null
+++ b/src/i18n/locales/ga.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Ní fhéadfar nascadh le seirbhísí arlíne Franz",
3 "global.notConnectedToTheInternet" : "Níl tú nasctha leis an Idirlíon.",
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",
6 "import.skip.label" : "Ba mhaith liom seirbhísí a chur leis de láimh",
7 "import.submit.label" : "Iomportaigh seirbhísí",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Atosaigh & suiteáil nuashonrú",
10 "infobar.buttonReloadServices" : "Athlódáil seirbhísí",
11 "infobar.requiredRequestsFailed" : "Ní fhéadfar seirbhísí agus eolas úsáideora a lódáil",
12 "infobar.servicesUpdated" : "Nuashonraítear do chuid seirbhísí.",
13 "infobar.updateAvailable" : "Tá nuashonrú nua do Franz le fáil.",
14 "invite.email.label" : "Seoladh ríomhphoist",
15 "invite.headline.friends" : "Tabhair cuireadh do thriúr de do chairde nó chomhghleacaithe",
16 "invite.name.label" : "Ainm",
17 "invite.skip.label" : "Ba mhaith liom é seo a dhéanamh níos deireanaí",
18 "invite.submit.label" : "Seol cuireadh",
19 "login.email.label" : "Seoladh ríomhphoist",
20 "login.headline" : "Logáil isteach",
21 "login.invalidCredentials" : "Seoladh ríomhphoist nó pasfhocal neamhbhailí",
22 "login.link.password" : "Athshocraigh pasfhocal",
23 "login.link.signup" : "Cruthaigh cuntas saor in aisce",
24 "login.password.label" : "Pasfhocal",
25 "login.serverLogout" : "D'éag do sheisiún, logáil isteach arís le do thoil.",
26 "login.submit.label" : "Logáil isteach",
27 "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.",
28 "password.email.label" : "Seoladh ríomhphoist",
29 "password.headline" : "Athshocraigh pasfhocal",
30 "password.link.login" : "Logáil isteach i do chúntas",
31 "password.link.signup" : "Cruthaigh cuntas saor in aisce",
32 "password.noUser" : "Níor aimsíodh úsáideoir leis an seoladh ríomhphoist seo",
33 "password.submit.label" : "Cuir isteach",
34 "password.successInfo" : "Seiceáil do chuid ríomhphoist, le do thoil",
35 "pricing.headline" : "Tabhair tacaíocht do 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.",
38 "pricing.support.label" : "Roghnaigh do phlean tacaíochta",
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",
41 "service.crashHandler.headline" : "Ó, ná habair!",
42 "service.crashHandler.text" : "Tá {name} tar éis earraid a dhéanamh.",
43 "service.disabledHandler.action" : "Cumasaigh {name}",
44 "service.disabledHandler.headline" : "Tá {name} díchumasaithe",
45 "services.getStarted" : "Tosaigh",
46 "services.welcome" : "Fáilte go Franz",
47 "settings.account.account.editButton" : "Cuir cuntas in eagar",
48 "settings.account.accountType.basic" : "Bunchuntas",
49 "settings.account.accountType.premium" : "Cuntas Phŕeimhtacadóra Franz",
50 "settings.account.buttonSave" : "Nuashonraigh próifíl",
51 "settings.account.headline" : "Cuntas",
52 "settings.account.headlineAccount" : "Eolas an chuntais",
53 "settings.account.headlineInvoices" : "Sonraisc",
54 "settings.account.headlinePassword" : "Athraigh pasfhocal",
55 "settings.account.headlineProfile" : "Nuashonraigh próifíl",
56 "settings.account.headlineSubscription" : "Do shintiús",
57 "settings.account.headlineUpgrade" : "Uasghrádaigh do chuntas chun tacaíocht a thabhairt do Franz",
58 "settings.account.invoiceDownload" : "Íoslódáil",
59 "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.",
61 "settings.account.mining.cancel" : "Cuir an mhíneáil ar ceal",
62 "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.",
64 "settings.account.successInfo" : "Sábhailtear do chuid athruithe",
65 "settings.account.tryReloadUserInfoRequest" : "Atriail",
66 "settings.account.userInfoRequestFailed" : "Ní fheadfar eolas úsáideora a lódáil",
67 "settings.app.buttonInstallUpdate" : "Atosaigh & suiteáil nuashonrú",
68 "settings.app.buttonSearchForUpdate" : "Seiceáil do nuashonruithe",
69 "settings.app.currentVersion" : "Leagan reatha:",
70 "settings.app.form.autoLaunchInBackground" : "Oscail sa chúlra",
71 "settings.app.form.autoLaunchOnStart" : "Láinseáil Franz ón tús",
72 "settings.app.form.beta" : "Cuir leagain béite san áireamh",
73 "settings.app.form.enableSpellchecking" : "Cumasaigh seiceáil litrithe",
74 "settings.app.form.enableSystemTray" : "Taispeáin Franz i dtrae an chórais",
75 "settings.app.form.language" : "Teanga",
76 "settings.app.form.minimizeToSystemTray" : "Íoslaghdaigh Franz go dtí trae an chórais",
77 "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",
79 "settings.app.headline" : "Socruithe",
80 "settings.app.headlineAdvanced" : "Casta",
81 "settings.app.headlineAppearance" : "Dealramh",
82 "settings.app.headlineGeneral" : "Ginearálta",
83 "settings.app.headlineLanguage" : "Teanga",
84 "settings.app.headlineUpdates" : "Nuashonruithe",
85 "settings.app.restartRequired" : "Ní gá tosú arís chun athruithe a chur i bhfeidhm",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag íoslódáil",
88 "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",
90 "settings.navigation.account" : "Cuntas",
91 "settings.navigation.availableServices" : "Seirbhísí le fáil",
92 "settings.navigation.logout" : "Logáil amach",
93 "settings.navigation.settings" : "Socruithe",
94 "settings.navigation.yourServices" : "Do chuid seirbhísí",
95 "settings.recipes.all" : "Gach seirbhís",
96 "settings.recipes.dev" : "Forbairt",
97 "settings.recipes.headline" : "Seirbhísí le fáil",
98 "settings.recipes.missingService" : "Missing a service?",
99 "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.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Seirbhís curtha leis go ráthúil",
102 "settings.service.error.goBack" : "Ar ais go dtí seirbhísí",
103 "settings.service.error.headline" : "Earraid",
104 "settings.service.error.message" : "Ní fhéadfar oideas seirbhíse a lódáil.",
105 "settings.service.form.addServiceHeadline" : "Cuir {name} leis",
106 "settings.service.form.availableServices" : "Seirbhísí le fáil",
107 "settings.service.form.customUrl" : "Freastalaí saincheaptha",
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.",
109 "settings.service.form.customUrlUpgradeAccount" : "Uasghrádaigh do chuntas",
110 "settings.service.form.customUrlValidationError" : "Ní fhéadfar seirbhís {name} saincheaptha a dheimhniú",
111 "settings.service.form.deleteButton" : "Scrios seirbhís",
112 "settings.service.form.editServiceHeadline" : "Cuir {name} in eagar",
113 "settings.service.form.enableAudio" : "Cumasaigh fuaim",
114 "settings.service.form.enableNotification" : "Cumasaigh fógraí",
115 "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, ...",
117 "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",
119 "settings.service.form.name" : "Ainm",
120 "settings.service.form.saveButton" : "Sábhail seirbhís",
121 "settings.service.form.tabHosted" : "Óstáilte",
122 "settings.service.form.tabOnPremise" : "Féinóstáilte ⭐️",
123 "settings.service.form.team" : "Meitheal",
124 "settings.service.form.yourServices" : "Do chuid seirbhísí",
125 "settings.services.deletedInfo" : "Seirbhís scriosta",
126 "settings.services.discoverServices" : "Aimsigh seirbhísí",
127 "settings.services.headline" : "Do chuid seirbhísí",
128 "settings.services.noServicesAdded" : "Níl aon seirbhís curtha agat fós.",
129 "settings.services.tooltip.isDisabled" : "Seirbhís díchumasaithe",
130 "settings.services.tooltip.isMuted" : "Gach fuaim tachta",
131 "settings.services.tooltip.notificationsDisabled" : "Fógraí díchumasaithe",
132 "settings.services.updatedInfo" : "Sábháiltear do chuid athruithe",
133 "settings.user.form.accountType.company" : "Comhlacht",
134 "settings.user.form.accountType.individual" : "Aonair",
135 "settings.user.form.accountType.label" : "Cineál cuntais",
136 "settings.user.form.accountType.non-profit" : "Neamhbhrabúis",
137 "settings.user.form.currentPassword" : "Pasfhocal reatha",
138 "settings.user.form.email" : "Ríomhphost",
139 "settings.user.form.firstname" : "Céadainm",
140 "settings.user.form.lastname" : "Sloinne",
141 "settings.user.form.newPassword" : "Pasfhocal nua",
142 "sidebar.addNewService" : "Cuir seirbhís nua leis",
143 "sidebar.mute" : "Díchumasaigh fuaim",
144 "sidebar.settings" : "Socruithe",
145 "sidebar.unmute" : "Cumasaigh fuaim",
146 "signup.company.label" : "Comhlacht",
147 "signup.email.label" : "Seoladh ríomhphoist",
148 "signup.emailDuplicate" : "Tá úsáideoir leis an seoladh ríomhphoist sin chean féin",
149 "signup.firstname.label" : "Céadainm",
150 "signup.headline" : "Cláraigh",
151 "signup.lastname.label" : "Sloinne",
152 "signup.legal.info" : "Agus tú ag cruthú cuntais Franz glacann tú leis an",
153 "signup.legal.privacy" : "Ráiteas príobháideachais",
154 "signup.legal.terms" : "Tearmaí seirbhíse",
155 "signup.link.login" : "Cuntas agat cheana féin, logáil isteach?",
156 "signup.password.label" : "Pasfhocal",
157 "signup.submit.label" : "Cruthaigh cuntas",
158 "subscription.euTaxInfo" : "Áithritheoirí an tAÉ: féadfar cáin díolacháin áitiúla a chur i bhfeidhm",
159 "subscription.features.ads" : "Fógraí ar bith, choíche!",
160 "subscription.features.comingSoon" : "ag teacht go luath",
161 "subscription.features.customServices" : "Seirbhísí phríobháideach duitse agus do do mheitheal",
162 "subscription.features.encryptedSync" : "Sionchronú seisiúin chriptithe",
163 "subscription.features.onpremise" : "Cuir seirbhísí óstáilte ar nós HipChat leis",
164 "subscription.features.vpn" : "Tacaíocht seachfhreastalaí & LPF",
165 "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhtacadóra Franz san áireamh",
166 "subscription.mining.experimental" : "turgnamhach",
167 "subscription.mining.headline" : "Conas 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.",
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.",
170 "subscription.mining.line3" : "Fad is go 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.",
172 "subscription.paymentSessionError" : "Ní fhéadfar tús a chur leis an bhfoirm íocaíochta",
173 "subscription.submit.label" : "Ba mhaith liom tacaíocht a thabhairt d'fhorbairt Franz",
174 "subscription.type.free" : "saor in aisce",
175 "subscription.type.mining" : "Tabhair tacaíocht do Franz le cumhacht phróiseála",
176 "subscription.type.month" : "mí",
177 "subscription.type.year" : "bliain",
178 "subscriptionPopup.buttonCancel" : "Cuir ar ceal",
179 "subscriptionPopup.buttonDone" : "Déanta",
180 "tabs.item.deleteService" : "Scrios seirbhís",
181 "tabs.item.disableAudio" : "Díchumasaigh fuaim",
182 "tabs.item.disableNotifications" : "Díchumasaigh fógraí",
183 "tabs.item.disableService" : "Díchumasaigh seirbhís",
184 "tabs.item.edit" : "Cuir in eagar",
185 "tabs.item.enableAudio" : "Cumasaigh fuaim",
186 "tabs.item.enableNotification" : "Cumasaigh fógraí",
187 "tabs.item.enableService" : "Cumasaigh seirbhís",
188 "tabs.item.reload" : "Athlódáil",
189 "welcome.loginButton" : "Logáil isteach i do chuntas",
190 "welcome.signupButton" : "Cruthaigh cuntas nua",
191 "welcome.slogan" : "Teachtaireachtaí ag obair leat"
192}
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
new file mode 100644
index 000000000..f62c0ead9
--- /dev/null
+++ b/src/i18n/locales/hu.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatásaihoz",
3 "global.notConnectedToTheInternet" : "Nincs kapcsolat a kiszolgálóval.",
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",
6 "import.skip.label" : "Kézzel szeretnék szolgáltatást felvenni",
7 "import.submit.label" : "Szolgáltatások importálása",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Újraindítás és a frissítés telepíté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",
12 "infobar.servicesUpdated" : "A szolgáltatások frissítésre kerültek.",
13 "infobar.updateAvailable" : "Új frissítés érhető el a Franz-hoz.",
14 "invite.email.label" : "Email cím",
15 "invite.headline.friends" : "Hívd meg 3 barátodat vagy kollégádat",
16 "invite.name.label" : "Név",
17 "invite.skip.label" : "Későbbre halasztom",
18 "invite.submit.label" : "Meghívók küldése",
19 "login.email.label" : "Email cím",
20 "login.headline" : "Bejelentkezés",
21 "login.invalidCredentials" : "Hibás email cím vagy jelszó",
22 "login.link.password" : "Jelszó visszaállítás",
23 "login.link.signup" : "Új fiók létrehozása",
24 "login.password.label" : "Jelszó",
25 "login.serverLogout" : "A munkamenet lejárt, kérlek lépj be újra.",
26 "login.submit.label" : "Bejelentkezés",
27 "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.",
28 "password.email.label" : "Email cím",
29 "password.headline" : "Jelszó visszaállítása",
30 "password.link.login" : "Jelentkezz be a fiókodba",
31 "password.link.signup" : "Új fiók létrehozása",
32 "password.noUser" : "Nem található felhasználó a megadott email címmel",
33 "password.submit.label" : "Küldés",
34 "password.successInfo" : "Ellenőrizd az email fiókodat",
35 "pricing.headline" : "Támogasd a Franz-ot",
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.",
38 "pricing.support.label" : "Válaszd ki a támogatás módját",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Kezdj hozzá",
46 "services.welcome" : "Üdvözöl a Franz",
47 "settings.account.account.editButton" : "Fiók szerkesztése",
48 "settings.account.accountType.basic" : "Alap Fiók",
49 "settings.account.accountType.premium" : "Prémium Támogató Fiók",
50 "settings.account.buttonSave" : "Profil frissítése",
51 "settings.account.headline" : "Fiók",
52 "settings.account.headlineAccount" : "Fiókinformációk",
53 "settings.account.headlineInvoices" : "Számlák",
54 "settings.account.headlinePassword" : "Jelszócsere",
55 "settings.account.headlineProfile" : "Profil frissítése",
56 "settings.account.headlineSubscription" : "Előfizetésed",
57 "settings.account.headlineUpgrade" : "Frissítsd fiókod és támogasd a Franz-ot",
58 "settings.account.invoiceDownload" : "Letöltés",
59 "settings.account.manageSubscription.label" : "Előfizetés kezelése",
60 "settings.account.mining.active" : "Jelenleg {hashes} számítást végzel másodpercenként.",
61 "settings.account.mining.cancel" : "Bányászás megszakítása",
62 "settings.account.mining.moreInformation" : "Több információ",
63 "settings.account.mining.thankyou" : "Köszönjük, hogy számítási kapacitásoddal támogatod a Franz-ot.",
64 "settings.account.successInfo" : "A módosításokat elmentettük",
65 "settings.account.tryReloadUserInfoRequest" : "Próbáld újra",
66 "settings.account.userInfoRequestFailed" : "A felhasználói adatok betöltése sikertelen",
67 "settings.app.buttonInstallUpdate" : "Újraindítás és frissítések telepítése",
68 "settings.app.buttonSearchForUpdate" : "Frissítések keresése",
69 "settings.app.currentVersion" : "Aktuális verzió:",
70 "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben",
71 "settings.app.form.autoLaunchOnStart" : "Franz betöltése indításkor",
72 "settings.app.form.beta" : "Béta verziók keresése",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán",
75 "settings.app.form.language" : "Nyelv",
76 "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",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Beállítások",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "Általános",
83 "settings.app.headlineLanguage" : "Nyelv",
84 "settings.app.headlineUpdates" : "Frissítések",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Frissítés elérhető, letöltés folyamatban...",
88 "settings.app.updateStatusSearching" : "Frissítéseket keres",
89 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod",
90 "settings.navigation.account" : "Fiók",
91 "settings.navigation.availableServices" : "Elérhető szolgáltatások",
92 "settings.navigation.logout" : "Kijelentkezés",
93 "settings.navigation.settings" : "Beállítások",
94 "settings.navigation.yourServices" : "Szolgáltatásaid",
95 "settings.recipes.all" : "Összes szolgáltatás",
96 "settings.recipes.dev" : "Fejlesztés",
97 "settings.recipes.headline" : "Elérhető szolgáltatások",
98 "settings.recipes.missingService" : "Missing a service?",
99 "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.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Szolgáltatás sikeresen hozzáadva.",
102 "settings.service.error.goBack" : "Vissza a szolgáltatásokhoz",
103 "settings.service.error.headline" : "Hiba",
104 "settings.service.error.message" : "Nem tölthető be a szolgáltatás receptje.",
105 "settings.service.form.addServiceHeadline" : "{name} hozzáadása",
106 "settings.service.form.availableServices" : "Elérhető szolgáltatások",
107 "settings.service.form.customUrl" : "Egyéni szerver",
108 "settings.service.form.customUrlPremiumInfo" : "Egyénileg üzemeltetett szolgáltatások hozzáadásához Franz Prémium Támogató Fiók szükséges.",
109 "settings.service.form.customUrlUpgradeAccount" : "Frissítsd fiókodat",
110 "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",
112 "settings.service.form.editServiceHeadline" : "{name} szerkesztése",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Értesítések engedélyezése",
115 "settings.service.form.enableService" : "Szolgáltatás engedélyezése",
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",
117 "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",
119 "settings.service.form.name" : "Név",
120 "settings.service.form.saveButton" : "Szolgáltatás mentése",
121 "settings.service.form.tabHosted" : "Üzemeltetett",
122 "settings.service.form.tabOnPremise" : "Egyénileg üzemeltetett",
123 "settings.service.form.team" : "Csapat",
124 "settings.service.form.yourServices" : "Szolgáltatásaid",
125 "settings.services.deletedInfo" : "A szolgáltatás törlésre került",
126 "settings.services.discoverServices" : "Szolgáltatások felfedezése",
127 "settings.services.headline" : "Szolgáltatásaid",
128 "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.",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva",
132 "settings.services.updatedInfo" : "A módosításokat elmentettük",
133 "settings.user.form.accountType.company" : "Cég",
134 "settings.user.form.accountType.individual" : "Egyén",
135 "settings.user.form.accountType.label" : "Fiók típusa",
136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.user.form.currentPassword" : "Jelenlegi jelszó",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "Új jelszó",
142 "sidebar.addNewService" : "Szolgáltatás hozzáadása",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Beállítások",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Cég",
147 "signup.email.label" : "Email cím",
148 "signup.emailDuplicate" : "Ezzel az e-mail címmel már létezik felhasználó",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Regisztráció",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "A Franz fiók létrehozásával elfogadod az",
153 "signup.legal.privacy" : "Adatvédelmi Nyilatkozatot",
154 "signup.legal.terms" : "Felhasználási Feltételeket",
155 "signup.link.login" : "Már van fiókod? Lépj be!",
156 "signup.password.label" : "Jelszó",
157 "signup.submit.label" : "Fiók létrehozása",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "Hirdetésmentes, mindig!",
160 "subscription.features.comingSoon" : "Hamarosan!",
161 "subscription.features.customServices" : "Privát szolgáltatások neked és a csapatodnak",
162 "subscription.features.encryptedSync" : "Titkosított munkamenet szinkronizálás",
163 "subscription.features.onpremise" : "Helyi\/üzemeltetett szolgáltatások használata, pl. HipChat",
164 "subscription.features.vpn" : "Proxy & VPN támogatás",
165 "subscription.includedFeatures" : "Az előfizetett Franz Prémium Támogató Fiók tartalmazza",
166 "subscription.mining.experimental" : "kísérleti",
167 "subscription.mining.headline" : "Hogyan működik?",
168 "subscription.mining.line1" : "A \"Franz támogatása számítási kapacitással\" opció bekapcsolásával a Franz a CPU teljesítményének 20-50%-át Monero kriptovaluta bányászatához fogja használni, ami évente $5-nak felel meg.",
169 "subscription.mining.line2" : "Alkalmazkodni fog a CPU használat a munkafolyamataidhoz, igyekszik nem terhelni az akkumulátort és lassítani a gépet.",
170 "subscription.mining.line3" : "Amíg a bányász aktív, korlátlan hozzáférésed van minden Franz Prémium Támogató Funkcióhoz.",
171 "subscription.mining.moreInformation" : "Több információ erről az opcióról.",
172 "subscription.paymentSessionError" : "Nem sikerült a fizetési felületet betölteni",
173 "subscription.submit.label" : "Szeretném támogatni a Franz fejlesztését",
174 "subscription.type.free" : "ingyenes",
175 "subscription.type.mining" : "Franz támogatása számítási kapacitással",
176 "subscription.type.month" : "hónap",
177 "subscription.type.year" : "év",
178 "subscriptionPopup.buttonCancel" : "Mégsem",
179 "subscriptionPopup.buttonDone" : "Kész",
180 "tabs.item.deleteService" : "Szolgáltatás törlése",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Értesítések letiltása",
183 "tabs.item.disableService" : "Szolgáltatás letiltása",
184 "tabs.item.edit" : "Szerkesztés",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Értesítések engedélyezése",
187 "tabs.item.enableService" : "Szolgáltatás engedélyezése",
188 "tabs.item.reload" : "Újratöltés",
189 "welcome.loginButton" : "Jelentkezz be a fiókodba",
190 "welcome.signupButton" : "Új fiók létrehozása",
191 "welcome.slogan" : "Üzenetküldés okosan"
192}
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
new file mode 100644
index 000000000..611cad550
--- /dev/null
+++ b/src/i18n/locales/id.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Tidak bisa tersambung ke layanan Franz",
3 "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.",
4 "import.headline" : "Impor layanan Franz 4 Anda",
5 "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5",
6 "import.skip.label" : "Saya ingin menambahkan layanan secara manual",
7 "import.submit.label" : "Impor layanan",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Mulai ulang dan instal versi baru",
10 "infobar.buttonReloadServices" : "Muat ulang layanan",
11 "infobar.requiredRequestsFailed" : "Tidak bisa memuat layanan dan informasi pengguna",
12 "infobar.servicesUpdated" : "Layanan Anda telah diperbarui",
13 "infobar.updateAvailable" : "Versi baru Franz tersedia.",
14 "invite.email.label" : "Alamat email",
15 "invite.headline.friends" : "Undang 3 teman atau kolega Anda",
16 "invite.name.label" : "Nama",
17 "invite.skip.label" : "Saya ingin melakukannya nanti saja",
18 "invite.submit.label" : "Kirim undangan",
19 "login.email.label" : "Alamat email",
20 "login.headline" : "Masuk",
21 "login.invalidCredentials" : "Email atau sandi tidak valid",
22 "login.link.password" : "Setel ulang sandi",
23 "login.link.signup" : "Buat akun gratis",
24 "login.password.label" : "Sandi",
25 "login.serverLogout" : "Sesi Anda kedaluwarsa, silakan masuk kembali.",
26 "login.submit.label" : "Masuk",
27 "login.tokenExpired" : "Sesi Anda kedaluwarsa, silakan masuk kembali.",
28 "password.email.label" : "Alamat email",
29 "password.headline" : "Setel ulang sandi",
30 "password.link.login" : "Masuk ke akun Anda",
31 "password.link.signup" : "Buat akun gratis",
32 "password.noUser" : "Tidak ditemukan pengguna dengan email tersebut",
33 "password.submit.label" : "Kirim",
34 "password.successInfo" : "Periksa email Anda",
35 "pricing.headline" : "Dukung Franz",
36 "pricing.link.skipPayment" : "Saya tidak ingin mendukung pengembangan Franz.",
37 "pricing.submit.label" : "Saya ingin mendukung pengembangan Franz",
38 "pricing.support.label" : "Pilih paket dukungan Anda",
39 "service.crashHandler.action" : "Muat Ulang {name}",
40 "service.crashHandler.autoReload" : "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik",
41 "service.crashHandler.headline" : "Ya Ampun!",
42 "service.crashHandler.text" : "{name} menyebabkan kesalahan.",
43 "service.disabledHandler.action" : "Aktifkan {name}",
44 "service.disabledHandler.headline" : "{name} dinonaktifkan",
45 "services.getStarted" : "Memulai",
46 "services.welcome" : "Selamat datang di Franz",
47 "settings.account.account.editButton" : "Edit akun",
48 "settings.account.accountType.basic" : "Akun Dasar",
49 "settings.account.accountType.premium" : "Akun Pendukung Premium",
50 "settings.account.buttonSave" : "Perbarui profil",
51 "settings.account.headline" : "Akun",
52 "settings.account.headlineAccount" : "Informasi akun",
53 "settings.account.headlineInvoices" : "Tagihan",
54 "settings.account.headlinePassword" : "Ubah sandi",
55 "settings.account.headlineProfile" : "Perbarui profil",
56 "settings.account.headlineSubscription" : "Langganan Anda",
57 "settings.account.headlineUpgrade" : "Tingkatkan akun Anda & dukung Franz",
58 "settings.account.invoiceDownload" : "Unduh",
59 "settings.account.manageSubscription.label" : "Kelola langganan Anda",
60 "settings.account.mining.active" : "Anda sedang melakukan menjalankan {hashes} perhitungan per detik.",
61 "settings.account.mining.cancel" : "Batalkan penambangan",
62 "settings.account.mining.moreInformation" : "Dapatkan informasi lebih lanjut",
63 "settings.account.mining.thankyou" : "Terima kasih telah mendukung Franz dengan daya pemrosesan Anda.",
64 "settings.account.successInfo" : "Perubahan Anda telah disimpan",
65 "settings.account.tryReloadUserInfoRequest" : "Coba lagi",
66 "settings.account.userInfoRequestFailed" : "Tidak bisa memuat informasi pengguna",
67 "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru",
68 "settings.app.buttonSearchForUpdate" : "Periksa versi baru",
69 "settings.app.currentVersion" : "Versi saat ini:",
70 "settings.app.form.autoLaunchInBackground" : "Buka di latar belakang",
71 "settings.app.form.autoLaunchOnStart" : "Jalankan Franz saat komputer dimulai",
72 "settings.app.form.beta" : "Sertakan versi beta",
73 "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan",
74 "settings.app.form.enableSystemTray" : "Tampilkan Franz di baki sistem",
75 "settings.app.form.language" : "Bahasa",
76 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem",
77 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela",
78 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan",
79 "settings.app.headline" : "Pengaturan",
80 "settings.app.headlineAdvanced" : "Tingkat Lanjut",
81 "settings.app.headlineAppearance" : "Tampilan",
82 "settings.app.headlineGeneral" : "Umum",
83 "settings.app.headlineLanguage" : "Bahasa",
84 "settings.app.headlineUpdates" : "Versi Baru",
85 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...",
88 "settings.app.updateStatusSearching" : "Sedang mencari versi baru",
89 "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Franz",
90 "settings.navigation.account" : "Akun",
91 "settings.navigation.availableServices" : "Layanan tersedia",
92 "settings.navigation.logout" : "Keluar",
93 "settings.navigation.settings" : "Pengaturan",
94 "settings.navigation.yourServices" : "Layanan Anda",
95 "settings.recipes.all" : "Semua layanan",
96 "settings.recipes.dev" : "Pengembangan",
97 "settings.recipes.headline" : "Layanan tersedia",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Paling populer",
100 "settings.recipes.nothingFound" : "Maaf, tidak ada layanan yang cocok dengan pencarian Anda.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan",
102 "settings.service.error.goBack" : "Kembali ke layanan",
103 "settings.service.error.headline" : "Kesalahan",
104 "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.",
105 "settings.service.form.addServiceHeadline" : "Tambahkan {name}",
106 "settings.service.form.availableServices" : "Layanan tersedia",
107 "settings.service.form.customUrl" : "Server khusus",
108 "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan yang dijalankan mandiri, Anda membutuhkan Franz Premium Supporter Account.",
109 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda",
110 "settings.service.form.customUrlValidationError" : "Tidak bisa memvalidasi server {name} khusus.",
111 "settings.service.form.deleteButton" : "Hapus layanan",
112 "settings.service.form.editServiceHeadline" : "Edit {name}",
113 "settings.service.form.enableAudio" : "Aktifkan audio",
114 "settings.service.form.enableNotification" : "Aktifkan pemberitahuan",
115 "settings.service.form.enableService" : "Aktifkan layanan",
116 "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",
118 "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara notifikasi dan pemutaran audio akan dibisukan",
119 "settings.service.form.name" : "Nama",
120 "settings.service.form.saveButton" : "Simpan layanan",
121 "settings.service.form.tabHosted" : "Hosted",
122 "settings.service.form.tabOnPremise" : "Hosted mandiri",
123 "settings.service.form.team" : "Tim",
124 "settings.service.form.yourServices" : "Layanan Anda",
125 "settings.services.deletedInfo" : "Layanan telah dihapus",
126 "settings.services.discoverServices" : "Temukan layanan",
127 "settings.services.headline" : "Layanan Anda",
128 "settings.services.noServicesAdded" : "Anda belum menambahkan layanan.",
129 "settings.services.tooltip.isDisabled" : "Layanan dinonaktifkan",
130 "settings.services.tooltip.isMuted" : "Semua suara dibisukan",
131 "settings.services.tooltip.notificationsDisabled" : "Pemberitahuan dinonaktifkan",
132 "settings.services.updatedInfo" : "Perubahan telah disimpan",
133 "settings.user.form.accountType.company" : "Perusahaan",
134 "settings.user.form.accountType.individual" : "Pribadi",
135 "settings.user.form.accountType.label" : "Jenis akun",
136 "settings.user.form.accountType.non-profit" : "Nirlaba",
137 "settings.user.form.currentPassword" : "Sandi saat ini",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "Nama Depan",
140 "settings.user.form.lastname" : "Nama Belakang",
141 "settings.user.form.newPassword" : "Sandi baru",
142 "sidebar.addNewService" : "Tambahkan layanan baru",
143 "sidebar.mute" : "Nonaktifkan audio",
144 "sidebar.settings" : "Pengaturan",
145 "sidebar.unmute" : "Aktifkan audio",
146 "signup.company.label" : "Perusahaan",
147 "signup.email.label" : "Alamat email",
148 "signup.emailDuplicate" : "Pengguna dengan alamat email ini sudah ada",
149 "signup.firstname.label" : "Nama Depan",
150 "signup.headline" : "Daftar",
151 "signup.lastname.label" : "Nama Akhir",
152 "signup.legal.info" : "Dengan membuat akun Franz, Anda menyetujui",
153 "signup.legal.privacy" : "Pernyataan Privasi",
154 "signup.legal.terms" : "Ketentuan layanan",
155 "signup.link.login" : "Sudah punya akun, masuk?",
156 "signup.password.label" : "Sandi",
157 "signup.submit.label" : "Buat akun",
158 "subscription.euTaxInfo" : "Warga UE: pajak penjualan lokal mungkin berlaku",
159 "subscription.features.ads" : "Tanpa iklan, selamanya!",
160 "subscription.features.comingSoon" : "segera hadir",
161 "subscription.features.customServices" : "Layanan pribadi untuk Anda dan tim Anda",
162 "subscription.features.encryptedSync" : "Sinkronisasi sesi terenkripsi",
163 "subscription.features.onpremise" : "Layanan add-on premise\/hosten seperti HipChat",
164 "subscription.features.vpn" : "Dukungan proxy & VPN",
165 "subscription.includedFeatures" : "Franz Premium Supporter Account berbayar menyertakan",
166 "subscription.mining.experimental" : "eksperimental",
167 "subscription.mining.headline" : "Bagaimana cara kerjanya?",
168 "subscription.mining.line1" : "Dengan mengaktifkan \"Dukung dengan daya pemrosesan\", Franz akan menggunakan 20%-50% kemampuan CPU Anda untuk menambang mata uang kripto Monero yang sepadan kira-kira $5\/tahun.",
169 "subscription.mining.line2" : "Kami akan menyesuaikan penggunaan CPU berdasarkan perilaku penggunaan komputer Anda agar tidak menghabiskan baterau dan memperlambat Anda dan pekerjaan Anda.",
170 "subscription.mining.line3" : "Selama penambang aktif Anda akan memiliki akses tak terbatas ke Franz Premium Supporter Features.",
171 "subscription.mining.moreInformation" : "Dapatkan informasi lebih lanjut tentang paket ini.",
172 "subscription.paymentSessionError" : "Tidak bisa menginisialisasi formulir pembayaran",
173 "subscription.submit.label" : "Saya ingin mendukung pengembangan Franz",
174 "subscription.type.free" : "gratis",
175 "subscription.type.mining" : "Dukung Franz dengan daya pemrosesan",
176 "subscription.type.month" : "bulan",
177 "subscription.type.year" : "tahun",
178 "subscriptionPopup.buttonCancel" : "Batalkan",
179 "subscriptionPopup.buttonDone" : "Selesai",
180 "tabs.item.deleteService" : "Hapus layanan",
181 "tabs.item.disableAudio" : "Nonaktifkan audio",
182 "tabs.item.disableNotifications" : "Nonaktifkan pemberitahuan",
183 "tabs.item.disableService" : "Nonaktifkan layanan",
184 "tabs.item.edit" : "Edit",
185 "tabs.item.enableAudio" : "Aktifkan audio",
186 "tabs.item.enableNotification" : "Aktifkan pemberitahuan",
187 "tabs.item.enableService" : "Aktifkan layanan",
188 "tabs.item.reload" : "Muat Ulang",
189 "welcome.loginButton" : "Masuk ke akun Anda",
190 "welcome.signupButton" : "Buat akun gratis",
191 "welcome.slogan" : "Perpesanan yang bekerja untuk Anda"
192}
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index dd87599bb..ad3f9b880 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -1,168 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Impossibile connettersi ai servizi online di Franz", 2 "global.api.unhealthy" : "Impossibile collegarsi ai servizi online di Franz",
3 "global.notConnectedToTheInternet": "Non sei connesso ad internet.", 3 "global.notConnectedToTheInternet" : "Non sei connesso a Internet.",
4 "welcome.signupButton": "Iscriviti gratis", 4 "import.headline" : "Importa i tuoi servizi da Franz 4",
5 "welcome.loginButton": "Accedi", 5 "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5",
6 "welcome.slogan": "Messagistica che lavora per te", 6 "import.skip.label" : "Voglio aggiungere servizi manualmente",
7 "login.headline": "Accedi", 7 "import.submit.label" : "Importa servizi",
8 "login.email.label": "Indirizzo email", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Password", 9 "infobar.buttonInstallUpdate" : "Riavvia e installa aggiornamento",
10 "login.submit.label": "Accedi", 10 "infobar.buttonReloadServices" : "Ricarica servizi",
11 "login.invalidCredentials": "Email o password non validi", 11 "infobar.requiredRequestsFailed" : "Impossibile caricare servizi e info utente",
12 "login.tokenExpired": "La tua sessione è scaduta, accedi di nuovo per favore.", 12 "infobar.servicesUpdated" : "I tuoi servizi sono stati aggiornati.",
13 "login.serverLogout": "La tua sessione è scaduta, accedi di nuovo per favore.", 13 "infobar.updateAvailable" : "È disponibile un nuovo aggiornamento di Franz.",
14 "login.link.signup": "Iscriviti gratis", 14 "invite.email.label" : "Indirizzo e-mail",
15 "login.link.password": "Reimposta password", 15 "invite.headline.friends" : "Invita 3 dei tuoi amici o colleghi",
16 "password.headline": "Reimposta password", 16 "invite.name.label" : "Nome",
17 "password.email.label": "Indirizzo email", 17 "invite.skip.label" : "Voglio farlo dopo",
18 "password.submit.label": "Invia", 18 "invite.submit.label" : "Invia inviti",
19 "password.noUser": "Non è stato trovato nessun utente con questa email", 19 "login.email.label" : "Indirizzo e-mail",
20 "password.successInfo": "Per favore controlla la tua email", 20 "login.headline" : "Accedi",
21 "password.link.signup": "Iscriviti gratis", 21 "login.invalidCredentials" : "E-mail o password non valide",
22 "password.link.login": "Accedi", 22 "login.link.password" : "Reimposta password",
23 "signup.headline": "Accedi", 23 "login.link.signup" : "Crea un account gratuito",
24 "signup.firstname.label": "Nome", 24 "login.password.label" : "Password",
25 "signup.lastname.label": "Cognome", 25 "login.serverLogout" : "Sessione scaduta, accedi di nuovo.",
26 "signup.email.label": "Indirizzo email", 26 "login.submit.label" : "Accedi",
27 "signup.company.label": "Azienda", 27 "login.tokenExpired" : "Sessione scaduta, accedi di nuovo.",
28 "signup.password.label": "Password", 28 "password.email.label" : "Indirizzo e-mail",
29 "signup.submit.label": "Registrati", 29 "password.headline" : "Reimposta password",
30 "signup.link.login": "Hai già fatto l'iscrizione? Accedi", 30 "password.link.login" : "Accedi al tuo account",
31 "signup.emailDuplicate": "Esiste già un utente con questo indirizzo email", 31 "password.link.signup" : "Crea un account gratuito",
32 "signup.legal.info": "Iscrivendoti a Franz accetti", 32 "password.noUser" : "Non è stato trovato nessun utente con quell'indirizzo e-mail",
33 "signup.legal.terms": "Termini di servizio", 33 "password.submit.label" : "Invia",
34 "signup.legal.privacy": "Informativa sulla Privacy", 34 "password.successInfo" : "Controlla la tua e-mail",
35 "pricing.headline": "Supporta Franz", 35 "pricing.headline" : "Supporta Franz",
36 "pricing.support.label": "Seleziona il tuo piano di sostegno", 36 "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz",
37 "pricing.submit.label": "Voglio sostenere lo sviluppo di Franz", 37 "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz",
38 "pricing.link.skipPayment": "Non voglio sostenere lo sviluppo Franz.", 38 "pricing.support.label" : "Seleziona il tuo piano di supporto",
39 "import.headline": "Importa i tuoi servizi di Franz 4", 39 "service.crashHandler.action" : "Ricarica {name}",
40 "import.notSupportedHeadline": "Servzi non ancora supportati in Franz 5", 40 "service.crashHandler.autoReload" : "Prova a ripristinare automaticamente {name} in {seconds} secondi",
41 "import.submit.label": "Importa servizi", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Voglio aggiungere i servizi a mano", 42 "service.crashHandler.text" : "{name} ha causato un errore.",
43 "invite.submit.label": "Manda inviti", 43 "service.disabledHandler.action" : "Abilita {name}",
44 "invite.headline.friends": "Invita 3 dei tuoi amici o colleghi", 44 "service.disabledHandler.headline" : "{name} è disabilitato",
45 "invite.name.label": "Nome", 45 "services.getStarted" : "Iniziamo",
46 "invite.email.label": "Indirizzo email", 46 "services.welcome" : "Benvenuto in Franz",
47 "invite.skip.label": "Voglio farlo dopo", 47 "settings.account.account.editButton" : "Modifica account",
48 "subscription.submit.label": "Voglio sostenere lo sviluppo di Franz", 48 "settings.account.accountType.basic" : "Account Basic",
49 "subscription.paymentSessionError": "Impossibile inizializzare il modulo di pagamento", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "subscription.includedFeatures": "La sottoscrizione a pagamento Franz Premium Supporter include", 50 "settings.account.buttonSave" : "Aggiorna profilo",
51 "subscription.features.onpremise": "Agiunge servizi on-premise/hosted come HipChat", 51 "settings.account.headline" : "Account",
52 "subscription.features.customServices": "Servizi privati per te ed il tuo team", 52 "settings.account.headlineAccount" : "Informazioni account",
53 "subscription.features.encryptedSync": "Sincronizzazione sessione crittografata", 53 "settings.account.headlineInvoices" : "Fatture",
54 "subscription.features.vpn": "Supporto di Proxy e VPN", 54 "settings.account.headlinePassword" : "Cambia password",
55 "subscription.features.ads": "Nessuna pubblicità", 55 "settings.account.headlineProfile" : "Aggiorna profilo",
56 "subscription.features.comingSoon": "Presto disponibile", 56 "settings.account.headlineSubscription" : "La tua sottoscrizione",
57 "infobar.servicesUpdated": "I tuoi servizi sono stati aggiornati.", 57 "settings.account.headlineUpgrade" : "Aggiorna il tuo account e supporta Franz",
58 "infobar.updateAvailable": "È disponibile un nuovo aggiornamento per Franz.", 58 "settings.account.invoiceDownload" : "Scarica",
59 "infobar.buttonReloadServices": "Ricarica i servizi", 59 "settings.account.manageSubscription.label" : "Gestisci la tua sottoscrizione",
60 "infobar.buttonInstallUpdate": "Riavvia e installa l'aggiornamento", 60 "settings.account.mining.active" : "Stai eseguendo {hashes} calcoli al secondo.",
61 "infobar.requiredRequestsFailed": "Impossibile caricare i servizi e le informazioni dell'utente", 61 "settings.account.mining.cancel" : "Annulla mining",
62 "sidebar.settings": "Impostazioni", 62 "settings.account.mining.moreInformation" : "Ottieni ulteriori informazioni",
63 "services.welcome": "Benvenuto in Franz", 63 "settings.account.mining.thankyou" : "Grazier per supportare Franz con la tua potenza di calcolo.",
64 "services.getStarted": "Inizia", 64 "settings.account.successInfo" : "Le tue modifiche sono state salvate",
65 "settings.account.headline": "Conto", 65 "settings.account.tryReloadUserInfoRequest" : "Riprova ancora",
66 "settings.account.headlineSubscription": "La tua sottoscrizione", 66 "settings.account.userInfoRequestFailed" : "Impossibile caricare informazioni utente.",
67 "settings.account.headlineUpgrade": "Aggiorna il tuo conto e supporta Franz", 67 "settings.app.buttonInstallUpdate" : "Riavvia e installa aggiornamento",
68 "settings.account.headlineInvoices": "Fatture", 68 "settings.app.buttonSearchForUpdate" : "Controlla aggiornamenti",
69 "settings.account.manageSubscription.label": "Gestisci la tua sottoscrizione", 69 "settings.app.currentVersion" : "Versione attuale:",
70 "settings.account.accountType.basic": "Conto Base", 70 "settings.app.form.autoLaunchInBackground" : "Apri in secondo piano",
71 "settings.account.accountType.premium": "Conto Premium Supporter", 71 "settings.app.form.autoLaunchOnStart" : "Apri Franz all'avvio",
72 "settings.account.account.editButton": "Modifica conto", 72 "settings.app.form.beta" : "Includi versioni beta",
73 "settings.account.invoiceDownload": "Scarica", 73 "settings.app.form.enableSpellchecking" : "Abilita controllo ortografico",
74 "settings.account.userInfoRequestFailed": "Impossibile caricare le informazioni dell'utente", 74 "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica",
75 "settings.account.tryReloadUserInfoRequest": "Prova ancora", 75 "settings.app.form.language" : "Lingua",
76 "settings.account.headlineProfile": "Aggiorna profilo", 76 "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica",
77 "settings.account.headlineAccount": "Informazioni sul conto", 77 "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra",
78 "settings.account.headlinePassword": "Cambia la password", 78 "settings.app.form.showDisabledServices" : "Mostra i tab disabilitati",
79 "settings.account.successInfo": "Le tue modifiche sono state salvate", 79 "settings.app.headline" : "Impostazioni",
80 "settings.account.buttonSave": "Aggiorna profilo", 80 "settings.app.headlineAdvanced" : "Avanzate",
81 "settings.account.mining.thankyou": "Grazie per supportare Franz con la tua potenza di calcolo.", 81 "settings.app.headlineAppearance" : "Aspetto",
82 "settings.account.mining.active": "Al momento stai eseguendo {hashes} calcoli al secondo.", 82 "settings.app.headlineGeneral" : "Generale",
83 "settings.account.mining.moreInformation": "Ottieni piú informazioni", 83 "settings.app.headlineLanguage" : "Lingua",
84 "settings.account.mining.cancel": "Annulla mining", 84 "settings.app.headlineUpdates" : "Aggiornamenti",
85 "settings.navigation.availableServices": "Servizi disponibili", 85 "settings.app.restartRequired" : "Le modifiche richiedono un riavvio",
86 "settings.navigation.yourServices": "I tuoi servizi", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.account": "Conto", 87 "settings.app.updateStatusAvailable" : "Aggiornamento disponibile, download in corso...",
88 "settings.navigation.settings": "Impostazioni", 88 "settings.app.updateStatusSearching" : "È in ricerca di un aggiornamento",
89 "settings.navigation.logout": "Disconnetti", 89 "settings.app.updateStatusUpToDate" : "Stai utilizzando l'ultima versione di Franz",
90 "settings.recipes.headline": "Servizi disponibili", 90 "settings.navigation.account" : "Account",
91 "settings.recipes.mostPopular": "Piú popolari", 91 "settings.navigation.availableServices" : "Servizi disponibili",
92 "settings.recipes.all": "Tutti i servizi", 92 "settings.navigation.logout" : "Esci",
93 "settings.recipes.dev": "Sviluppo", 93 "settings.navigation.settings" : "Impostazioni",
94 "settings.recipes.nothingFound": "Mi dispiace, nessuno servizio corrisponde alla tua ricerca.", 94 "settings.navigation.yourServices" : "I tuoi servizi",
95 "settings.recipes.servicesSuccessfulAddedInfo": "Servizio aggiunto con successo", 95 "settings.recipes.all" : "Tutti i servizi",
96 "settings.service.form.saveButton": "Salva servizio", 96 "settings.recipes.dev" : "Sviluppo",
97 "settings.service.form.deleteButton": "Elimina servizio", 97 "settings.recipes.headline" : "Servizi disponibili",
98 "settings.service.form.availableServices": "Servizi disponibili", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.yourServices": "I tuoi servizi", 99 "settings.recipes.mostPopular" : "Più popolari",
100 "settings.service.form.addServiceHeadline": "Aggiungi {name}", 100 "settings.recipes.nothingFound" : "Ci dispiace, ma nessun servizio corrisponde alla tua ricerca.",
101 "settings.service.form.editServiceHeadline": "Modifica {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Servizio aggiunto con successo",
102 "settings.service.form.tabHosted": "Hosted", 102 "settings.service.error.goBack" : "Indietro ai servizi",
103 "settings.service.form.tabOnPremise": "Self hosted ⭐️", 103 "settings.service.error.headline" : "Errore",
104 "settings.service.form.customUrlValidationError": "Impossibile validare il server personale {name}.", 104 "settings.service.error.message" : "Impossibile caricare il servizio.",
105 "settings.service.form.customUrlPremiumInfo": "Per aggiungere servizi self hosted devi avere un conto Franz Premium Supporter.", 105 "settings.service.form.addServiceHeadline" : "Aggiungi {name}",
106 "settings.service.form.customUrlUpgradeAccount": "Aggiorna il tuo conto", 106 "settings.service.form.availableServices" : "Servizi disponibili",
107 "settings.service.form.indirectMessageInfo": "Riceverai notifiche per tutti i nuovi messaggi in un canale, non solo @username, @channel, @here, ...", 107 "settings.service.form.customUrl" : "Server personalizzato",
108 "settings.service.error.headline": "Errore", 108 "settings.service.form.customUrlPremiumInfo" : "Per aggiungere servizi self hosted, devi avere un account Franz da Premium Supporter.",
109 "settings.service.error.goBack": "Torna ai servizi", 109 "settings.service.form.customUrlUpgradeAccount" : "Aggiorna il tuo account",
110 "settings.service.error.message": "Impossibile caricare le specifiche del servizio.", 110 "settings.service.form.customUrlValidationError" : "Impossibile validare il server personalizzato {name}.",
111 "settings.services.tooltip.isDisabled": "Il servizio è disabilitato", 111 "settings.service.form.deleteButton" : "Elimina servizio",
112 "settings.services.tooltip.notificationsDisabled": "Le notifiche sono disabilitate", 112 "settings.service.form.editServiceHeadline" : "Modifica {name}",
113 "settings.services.headline": "I tuoi servizi", 113 "settings.service.form.enableAudio" : "Abilita audio",
114 "settings.services.noServicesAdded": "Non hai ancora aggiunto nessun servizio.", 114 "settings.service.form.enableNotification" : "Attiva notifiche",
115 "settings.services.discoverServices": "Trova servizi", 115 "settings.service.form.enableService" : "Attiva servizio",
116 "settings.services.updatedInfo": "Le tue modifiche sono state salvate", 116 "settings.service.form.indirectMessageInfo" : "Verrai notificato di tutti i messaggi in un canale, non solo @username, @channel, @here, ...",
117 "settings.services.deletedInfo": "Il servizio è stato eliminato", 117 "settings.service.form.indirectMessages" : "Mostra il simbolo del messaggio per tutti i messaggi",
118 "settings.app.headline": "Impostazioni", 118 "settings.service.form.isMutedInfo" : "Quando disabilitato, tutte le notifiche sonore e le riproduzioni audio saranno disattivate",
119 "settings.app.headlineGeneral": "Generale", 119 "settings.service.form.name" : "Nome",
120 "settings.app.headlineLanguage": "Lingua", 120 "settings.service.form.saveButton" : "Salva servizio",
121 "settings.app.headlineUpdates": "Aggiornamento", 121 "settings.service.form.tabHosted" : "Hosted",
122 "settings.app.buttonSearchForUpdate": "Controlla aggiornamento versione", 122 "settings.service.form.tabOnPremise" : "Self hosted ⭐️",
123 "settings.app.buttonInstallUpdate": "Riavvia e installa l'aggiornamento", 123 "settings.service.form.team" : "Team",
124 "settings.app.updateStatusSearching": "Sto cercando l'aggiornamento", 124 "settings.service.form.yourServices" : "I tuoi servizi",
125 "settings.app.updateStatusAvailable": "Aggiornamento disponibile, scarico...", 125 "settings.services.deletedInfo" : "Il servizio è stato eliminato",
126 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", 126 "settings.services.discoverServices" : "Scopri servizi",
127 "settings.app.form.autoLaunchOnStart": "Lancia Franz all'avvio", 127 "settings.services.headline" : "I tuoi servizi",
128 "settings.app.form.autoLaunchInBackground": "Apri in background", 128 "settings.services.noServicesAdded" : "Non aggiunto ancora nessun servizio.",
129 "settings.app.form.enableSystemTray": "Mostra Franz nella zona delle notifiche di sistema", 129 "settings.services.tooltip.isDisabled" : "Servizio disattivato",
130 "settings.app.form.minimizeToSystemTray": "Minimizza Franz nella zona delle notifiche di sistema", 130 "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati",
131 "settings.app.form.runInBackground": "Maniteni Franz attivo in background quando chiudi la finestra", 131 "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono state disattivate",
132 "settings.app.form.language": "Lingua", 132 "settings.services.updatedInfo" : "Le modifiche sono state salvate",
133 "settings.app.form.beta": "Includi versioni beta", 133 "settings.user.form.accountType.company" : "Società",
134 "settings.app.currentVersion": "Versione corrente:", 134 "settings.user.form.accountType.individual" : "Individuo",
135 "settings.service.form.name": "Nome", 135 "settings.user.form.accountType.label" : "Tipo account",
136 "settings.service.form.enableService": "Abilita servizio", 136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.service.form.enableNotification": "Abilita notifiche", 137 "settings.user.form.currentPassword" : "Password attuale",
138 "settings.service.form.team": "Team", 138 "settings.user.form.email" : "E-mail",
139 "settings.service.form.customUrl": "Server personale", 139 "settings.user.form.firstname" : "Nome",
140 "settings.service.form.indirectMessages": "Mostra il badge del messaggio per tutti i nuovi messaggi", 140 "settings.user.form.lastname" : "Cognome",
141 "settings.user.form.firstname": "Nome", 141 "settings.user.form.newPassword" : "Nuova password",
142 "settings.user.form.lastname": "Cognome", 142 "sidebar.addNewService" : "Aggiungi nuovo servizio",
143 "settings.user.form.email": "Email", 143 "sidebar.mute" : "Disabilita audio",
144 "settings.user.form.currentPassword": "Password corrente", 144 "sidebar.settings" : "Impostazioni",
145 "settings.user.form.newPassword": "Nuova password", 145 "sidebar.unmute" : "Abilita audio",
146 "settings.user.form.accountType.label": "Tipo di conto", 146 "signup.company.label" : "Società",
147 "settings.user.form.accountType.individual": "Individuale", 147 "signup.email.label" : "Indirizzo e-mail",
148 "settings.user.form.accountType.non-profit": "Non-Profit", 148 "signup.emailDuplicate" : "Esiste già un utente con lo stesso indirizzo e-mail",
149 "settings.user.form.accountType.company": "Azienda", 149 "signup.firstname.label" : "Nome",
150 "subscription.type.free": "gratis", 150 "signup.headline" : "Iscriviti",
151 "subscription.type.month": "mese", 151 "signup.lastname.label" : "Cognome",
152 "subscription.type.year": "anno", 152 "signup.legal.info" : "Creato un account Franz accetti",
153 "subscription.type.mining": "Supporta Franz con della potenza di calcolo", 153 "signup.legal.privacy" : "Informativa sulla Privacy",
154 "subscription.mining.headline": "Come funziona?", 154 "signup.legal.terms" : "Termini del Servizio",
155 "subscription.mining.experimental": "sperimentale", 155 "signup.link.login" : "Hai già un account, accedi?",
156 "subscription.mining.line1": "Abilitando \"Supporta Franz con della potenza di calcolo\",Franz userà circa il 20-50% della tua CPU per fare il mining della criptovaluta Monero che equivale approssimativamente a 5$/anno.", 156 "signup.password.label" : "Password",
157 "subscription.mining.line2": "Adatteremo l'utilizzo della CPU in base all tue abitudini di lavoro per non scaricare la tua batteria e rallentare la tua macchina.", 157 "signup.submit.label" : "Crea un account",
158 "subscription.mining.line3": "Fino a che il mining è attivo, avrai accesso illimitato a tutte le funzionalità del conto Franz Premium Supporter.", 158 "subscription.euTaxInfo" : "Residente nella Comunità Europea, possono essere applicate tasse locali",
159 "subscription.mining.moreInformation": "Ottieni più informazioni su questo piano.", 159 "subscription.features.ads" : "Nessuna pubblicità, mai!",
160 "subscriptionPopup.buttonCancel": "Annulla", 160 "subscription.features.comingSoon" : "in arrivo",
161 "subscriptionPopup.buttonDone": "Fatto", 161 "subscription.features.customServices" : "Servizi privati per te e il tuo team",
162 "tabs.item.reload": "Ricarica", 162 "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata",
163 "tabs.item.edit": "Modifica", 163 "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hostati come HipChat",
164 "tabs.item.disableNotifications": "Disabilita le notifiche", 164 "subscription.features.vpn" : "Supporto Proxy e VPN",
165 "tabs.item.enableNotification": "Abilita le notifiche", 165 "subscription.includedFeatures" : "L'account Franz a pagamento Premium Supporter include",
166 "tabs.item.disableService": "Disabilita servizio", 166 "subscription.mining.experimental" : "sperimentale",
167 "tabs.item.deleteService": "Elimina servizio" 167 "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.",
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.",
170 "subscription.mining.line3" : "Avrai accesso illimitato a tutte le caratteristiche Premium Supporter finché che il mining sarà attivo.",
171 "subscription.mining.moreInformation" : "Ottieni maggiori informazioni su questo piano.",
172 "subscription.paymentSessionError" : "Impossibile inizializzare il form del pagamento",
173 "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz",
174 "subscription.type.free" : "gratis",
175 "subscription.type.mining" : "Supporta Franz con potenza di calcolo",
176 "subscription.type.month" : "mese",
177 "subscription.type.year" : "anno",
178 "subscriptionPopup.buttonCancel" : "Annulla",
179 "subscriptionPopup.buttonDone" : "Fatto",
180 "tabs.item.deleteService" : "Elimina servizio",
181 "tabs.item.disableAudio" : "Disattiva audio",
182 "tabs.item.disableNotifications" : "Disattiva notifiche",
183 "tabs.item.disableService" : "Disattiva servizio",
184 "tabs.item.edit" : "Modifica",
185 "tabs.item.enableAudio" : "Attiva audio",
186 "tabs.item.enableNotification" : "Attiva notifiche",
187 "tabs.item.enableService" : "Attiva servizio",
188 "tabs.item.reload" : "Ricarica",
189 "welcome.loginButton" : "Accedi al tuo account",
190 "welcome.signupButton" : "Crea un account gratuito",
191 "welcome.slogan" : "Messaging that works for you"
168} 192}
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index 98b7cbb19..e091f1f5b 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -1,169 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Franzオンラインサービスに接続できません。", 2 "global.api.unhealthy" : "Franzオンラインサービスに接続できません。",
3 "global.notConnectedToTheInternet": "Internetに接続されていません。", 3 "global.notConnectedToTheInternet" : "Internetに接続されていません。",
4 "welcome.signupButton": "無料アカウントを作成", 4 "import.headline" : "Franz 4サービスのインポート",
5 "welcome.loginButton": "アカウントにログイン", 5 "import.notSupportedHeadline" : "サービスはFranz 5ではまだ対応されていません",
6 "welcome.slogan": "Messaging that works for you", 6 "import.skip.label" : "サービスの追加は後で行う",
7 "login.headline": "サインイン", 7 "import.submit.label" : "サービスのインポート",
8 "login.email.label": "メールアドレス", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "パスワード", 9 "infobar.buttonInstallUpdate" : "再起動して更新をインストールする",
10 "login.submit.label": "サインイン", 10 "infobar.buttonReloadServices" : "サービスのリロード",
11 "login.invalidCredentials": "メールアドレスかパスワードに誤りがあります。", 11 "infobar.requiredRequestsFailed" : "サービスとユーザー情報が読み込めません",
12 "login.tokenExpired": "セッションが切れました。ログインし直して下さい。", 12 "infobar.servicesUpdated" : "サービスが更新されました。",
13 "login.serverLogout": "セッションが切れました。ログインし直して下さい。", 13 "infobar.updateAvailable" : "Franzの新しい更新があります。",
14 "login.link.signup": "無料アカウントを作成", 14 "invite.email.label" : "メールアドレス",
15 "login.link.password": "パスワードをリセット", 15 "invite.headline.friends" : "あなたの友人や同僚の方を3名までFranzに招待できます",
16 "password.headline": "パスワードをリセット", 16 "invite.name.label" : "氏名",
17 "password.email.label": "メールアドレス", 17 "invite.skip.label" : "後にする",
18 "password.submit.label": "送信", 18 "invite.submit.label" : "招待を送る",
19 "password.noUser": "このメールアドレスは登録されていません", 19 "login.email.label" : "メールアドレス",
20 "password.successInfo": "メールを確認して下さい", 20 "login.headline" : "サインイン",
21 "password.link.signup": "無料アカウントを作成", 21 "login.invalidCredentials" : "メールアドレスかパスワードに誤りがあります",
22 "password.link.login": "サインイン", 22 "login.link.password" : "パスワードをリセット",
23 "signup.headline": "アカウントの作成", 23 "login.link.signup" : "無料アカウントを作成",
24 "signup.firstname.label": "名", 24 "login.password.label" : "パスワード",
25 "signup.lastname.label": "姓", 25 "login.serverLogout" : "セッションが切れました。ログインし直して下さい。",
26 "signup.email.label": "メールアドレス", 26 "login.submit.label" : "サインイン",
27 "signup.company.label": "会社名", 27 "login.tokenExpired" : "セッションが切れました。ログインし直して下さい。",
28 "signup.password.label": "パスワード", 28 "password.email.label" : "メールアドレス",
29 "signup.submit.label": "作成する", 29 "password.headline" : "パスワードのリセット",
30 "signup.link.login": "アカウントを既に持っていますか? こちらからサインイン", 30 "password.link.login" : "サインイン",
31 "signup.emailDuplicate": "このメールアドレスは既に登録されています", 31 "password.link.signup" : "無料アカウントを作成",
32 "signup.legal.info": "Franzアカウントを作成することで、以下の規約に同意したものとみなします", 32 "password.noUser" : "このメールアドレスは登録されていません",
33 "signup.legal.terms": "利用規約", 33 "password.submit.label" : "送信",
34 "signup.legal.privacy": "プライバシーについて", 34 "password.successInfo" : "メールを確認して下さい",
35 "pricing.headline": "Franzを支援する", 35 "pricing.headline" : "Franzを支援する",
36 "pricing.support.label": "プランを選択して下さい", 36 "pricing.link.skipPayment" : "Franzの開発を支援しない。",
37 "pricing.submit.label": "Franzの開発を支援したい", 37 "pricing.submit.label" : "Franzの開発を支援したい。",
38 "pricing.link.skipPayment": "Franzの開発を支援しない", 38 "pricing.support.label" : "プランを選択して下さい",
39 "import.headline": "Franz 4サービスのインポート", 39 "service.crashHandler.action" : "{name} をリロード",
40 "import.notSupportedHeadline": "サービスの機能はFranz 5ではまだ対応されていません", 40 "service.crashHandler.autoReload" : "{seconds}秒後、自動的に{name}の復旧を試みます",
41 "import.submit.label": "サービスのインポート", 41 "service.crashHandler.headline" : "しまった!",
42 "import.skip.label": "サービスの追加は後で行う", 42 "service.crashHandler.text" : "{name}はエラーを起こしました。",
43 "invite.submit.label": "招待を送る", 43 "service.disabledHandler.action" : "{name}を有効にする",
44 "invite.headline.friends": "あなたの友人や同僚の方を3名までFranzに招待できます", 44 "service.disabledHandler.headline" : "{name}は無効です",
45 "invite.name.label": "氏名", 45 "services.getStarted" : "はじめる",
46 "invite.email.label": "メールアドレス", 46 "services.welcome" : "Franzにようこそ",
47 "invite.skip.label": "後にする", 47 "settings.account.account.editButton" : "アカウントの編集",
48 "subscription.submit.label": "Franzの開発を支援したい", 48 "settings.account.accountType.basic" : "Basicアカウント",
49 "subscription.paymentSessionError": "支払いフォームを初期化出来ません", 49 "settings.account.accountType.premium" : "Premium Supporterアカウント",
50 "subscription.includedFeatures": "Franz Premium Supporter有料アカウントには以下が含まれます", 50 "settings.account.buttonSave" : "プロフィールの更新",
51 "subscription.features.onpremise": "HipChatのようなオンプレミス/ホスト型サービスの追加", 51 "settings.account.headline" : "アカウント",
52 "subscription.features.customServices": "あなたとあなたのチームのためのプライベートサービス", 52 "settings.account.headlineAccount" : "アカウント情報",
53 "subscription.features.encryptedSync": "暗号化されたセッションの同期", 53 "settings.account.headlineInvoices" : "請求書",
54 "subscription.features.vpn": "プロキシサーバーとVPNのサポート", 54 "settings.account.headlinePassword" : "パスワードの変更",
55 "subscription.features.ads": "広告は一切ありません!", 55 "settings.account.headlineProfile" : "プロフィールの更新",
56 "subscription.features.comingSoon": "まもなく登場", 56 "settings.account.headlineSubscription" : "サブスクリプション内容",
57 "infobar.servicesUpdated": "サービスが更新されました", 57 "settings.account.headlineUpgrade" : "アカウントをアップグレードし、Franzを支援する",
58 "infobar.updateAvailable": "Franzの新しい更新があります", 58 "settings.account.invoiceDownload" : "ダウンロード",
59 "infobar.buttonReloadServices": "Serviceのリロード", 59 "settings.account.manageSubscription.label" : "サブスクリプションの管理",
60 "infobar.buttonInstallUpdate": "再起動して更新をインストールする", 60 "settings.account.mining.active" : "1秒あたり{hashes}個のハッシュを計算中です。",
61 "infobar.requiredRequestsFailed": "サービスとユーザー情報が読み込めません", 61 "settings.account.mining.cancel" : "マイニングをキャンセルする",
62 "sidebar.settings": "設定", 62 "settings.account.mining.moreInformation" : "詳細を確認する",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "お使いのPCの処理能力をFranzの支援に活用して頂き、ありがとうございます。",
64 "services.welcome": "Franzにようこそ", 64 "settings.account.successInfo" : "変更内容が保存されました",
65 "services.getStarted": "はじめる", 65 "settings.account.tryReloadUserInfoRequest" : "再試行",
66 "settings.account.headline": "アカウント", 66 "settings.account.userInfoRequestFailed" : "ユーザ情報を読み込めませんでした",
67 "settings.account.headlineSubscription": "サブスクリプション内容", 67 "settings.app.buttonInstallUpdate" : "再起動して更新をインストールする",
68 "settings.account.headlineUpgrade": "アカウントをアップグレードし、Franzを支援する", 68 "settings.app.buttonSearchForUpdate" : "更新の確認",
69 "settings.account.headlineInvoices": "インボイス", 69 "settings.app.currentVersion" : "現在のバージョン:",
70 "settings.account.manageSubscription.label": "サブスクリプションの管理", 70 "settings.app.form.autoLaunchInBackground" : "バックグラウンドで開く",
71 "settings.account.accountType.basic": "Basicアカウント", 71 "settings.app.form.autoLaunchOnStart" : "システム起動時にFranzを開く",
72 "settings.account.accountType.premium": "Premium Supporterアカウント", 72 "settings.app.form.beta" : "Betaバージョンを含める",
73 "settings.account.account.editButton": "アカウントを編集する", 73 "settings.app.form.enableSpellchecking" : "スペルチェックを有効にする",
74 "settings.account.invoiceDownload": "ダウンロード", 74 "settings.app.form.enableSystemTray" : "Franzをシステムトレイに表示する",
75 "settings.account.userInfoRequestFailed": "ユーザー情報が読み込めません", 75 "settings.app.form.language" : "言語",
76 "settings.account.tryReloadUserInfoRequest": "リトライ", 76 "settings.app.form.minimizeToSystemTray" : "Franzをシステムトレイに最小化する",
77 "settings.account.headlineProfile": "プロフィールを更新する", 77 "settings.app.form.runInBackground" : "ウインドウを閉じた際にFranzをバックグラウンドで実行させておく",
78 "settings.account.headlineAccount": "アカウント情報", 78 "settings.app.form.showDisabledServices" : "無効化されたサービスのタブを表示する",
79 "settings.account.headlinePassword": "パスワードを変更する", 79 "settings.app.headline" : "設定",
80 "settings.account.successInfo": "変更内容が保存されました", 80 "settings.app.headlineAdvanced" : "詳細",
81 "settings.account.buttonSave": "プロフィールを更新", 81 "settings.app.headlineAppearance" : "表示スタイル",
82 "settings.account.mining.thankyou": "お使いのPCの処理能力をFranzの支援に活用して頂き、ありがとうございます。", 82 "settings.app.headlineGeneral" : "一般",
83 "settings.account.mining.active": "1秒あたり{hashes}個のハッシュを計算中です。", 83 "settings.app.headlineLanguage" : "言語",
84 "settings.account.mining.moreInformation": "詳細を確認する", 84 "settings.app.headlineUpdates" : "更新",
85 "settings.account.mining.cancel": "マイニングをキャンセルする", 85 "settings.app.restartRequired" : "変更には再起動が必要です",
86 "settings.navigation.availableServices": "利用可能なサービス", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "利用中のサービス", 87 "settings.app.updateStatusAvailable" : "更新が見つかりました。ダウンロードしています...",
88 "settings.navigation.account": "アカウント", 88 "settings.app.updateStatusSearching" : "更新を確認中",
89 "settings.navigation.settings": "設定", 89 "settings.app.updateStatusUpToDate" : "お使いのFranzは最新です",
90 "settings.navigation.logout": "ログアウト", 90 "settings.navigation.account" : "アカウント",
91 "settings.recipes.headline": "利用可能なサービス", 91 "settings.navigation.availableServices" : "利用可能なサービス",
92 "settings.recipes.mostPopular": "最も人気", 92 "settings.navigation.logout" : "ログアウト",
93 "settings.recipes.all": "全てのサービス", 93 "settings.navigation.settings" : "設定",
94 "settings.recipes.dev": "開発版", 94 "settings.navigation.yourServices" : "利用中のサービス",
95 "settings.recipes.nothingFound": "すみませんが、検索ワードに該当するサービスが見つかりませんでした。", 95 "settings.recipes.all" : "すべてのサービス",
96 "settings.recipes.servicesSuccessfulAddedInfo": "サービスが追加されました", 96 "settings.recipes.dev" : "開発版",
97 "settings.service.form.saveButton": "サービスを保存する", 97 "settings.recipes.headline" : "利用可能なサービス",
98 "settings.service.form.deleteButton": "サービスを削除する", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "利用可能なサービス", 99 "settings.recipes.mostPopular" : "最も人気",
100 "settings.service.form.yourServices": "利用中のサービス", 100 "settings.recipes.nothingFound" : "すみませんが、検索ワードに該当するサービスが見つかりませんでした。",
101 "settings.service.form.addServiceHeadline": "{name}を追加", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "サービスが追加されました",
102 "settings.service.form.editServiceHeadline": "{name}を編集", 102 "settings.service.error.goBack" : "サービスに戻る",
103 "settings.service.form.tabHosted": "ホスト", 103 "settings.service.error.headline" : "エラー",
104 "settings.service.form.tabOnPremise": "セルフホスト ⭐️", 104 "settings.service.error.message" : "サービスのレシピを読み込めませんでした。",
105 "settings.service.form.customUrlValidationError": "カスタムサービス{name}を検証できませんでした。", 105 "settings.service.form.addServiceHeadline" : "{name}を追加",
106 "settings.service.form.customUrlPremiumInfo": "独自サービスを追加するためには、Franz Premium Supporterアカウントが必要です。", 106 "settings.service.form.availableServices" : "利用可能なサービス",
107 "settings.service.form.customUrlUpgradeAccount": "アカウントをアップグレードする", 107 "settings.service.form.customUrl" : "独自サーバー",
108 "settings.service.form.indirectMessageInfo": "@username、@channel、@hereだけでなく、チャンネル内のすべての新規メッセージについて通知されます。", 108 "settings.service.form.customUrlPremiumInfo" : "独自サービスを追加するためには、Franz Premium Supporterアカウントが必要です。",
109 "settings.service.error.headline": "エラー", 109 "settings.service.form.customUrlUpgradeAccount" : "アカウントをアップグレードする",
110 "settings.service.error.goBack": "サービスに戻る", 110 "settings.service.form.customUrlValidationError" : "独自サーバー{name}を検証できませんでした。",
111 "settings.service.error.message": "サービスのレシピが読み込めません。", 111 "settings.service.form.deleteButton" : "サービスの削除",
112 "settings.services.tooltip.isDisabled": "サービスが無効です", 112 "settings.service.form.editServiceHeadline" : "{name}を編集",
113 "settings.services.tooltip.notificationsDisabled": "通知が無効です", 113 "settings.service.form.enableAudio" : "オーディオの有効化",
114 "settings.services.headline": "利用中のサービス", 114 "settings.service.form.enableNotification" : "通知を有効にする",
115 "settings.services.noServicesAdded": "まだ、どのサービスも追加されていません。", 115 "settings.service.form.enableService" : "サービスを有効にする",
116 "settings.services.discoverServices": "サービスを見つける", 116 "settings.service.form.indirectMessageInfo" : "@username、@channel、@hereだけでなく、チャンネル内のすべての新規メッセージについて通知されます。",
117 "settings.services.updatedInfo": "変更内容が保存されました", 117 "settings.service.form.indirectMessages" : "すべての新規メッセージについてバッジを表示する",
118 "settings.services.deletedInfo": "サービスが削除されました", 118 "settings.service.form.isMutedInfo" : "無効化されている場合、全ての通知音やオーディオ再生は無音になります",
119 "settings.app.headline": "設定", 119 "settings.service.form.name" : "サービス名",
120 "settings.app.headlineGeneral": "一般", 120 "settings.service.form.saveButton" : "サービスの保存",
121 "settings.app.headlineLanguage": "言語", 121 "settings.service.form.tabHosted" : "ホスト",
122 "settings.app.headlineUpdates": "更新", 122 "settings.service.form.tabOnPremise" : "セルフホスト ⭐️",
123 "settings.app.buttonSearchForUpdate": "更新の確認", 123 "settings.service.form.team" : "チーム",
124 "settings.app.buttonInstallUpdate": "再起動して更新をインストール", 124 "settings.service.form.yourServices" : "利用中のサービス",
125 "settings.app.updateStatusSearching": "更新を確認中", 125 "settings.services.deletedInfo" : "サービスが削除されました",
126 "settings.app.updateStatusAvailable": "更新が見つかりました。ダウンロードしています...", 126 "settings.services.discoverServices" : "サービスを探す",
127 "settings.app.updateStatusUpToDate": "お使いのFranzは最新です", 127 "settings.services.headline" : "利用中のサービス",
128 "settings.app.form.autoLaunchOnStart": "システム起動時にFranzを開く", 128 "settings.services.noServicesAdded" : "まだ、どのサービスも追加されていません。",
129 "settings.app.form.autoLaunchInBackground": "バックグラウンドで開く", 129 "settings.services.tooltip.isDisabled" : "サービスが無効です",
130 "settings.app.form.enableSystemTray": "Franzをシステムトレイに表示する", 130 "settings.services.tooltip.isMuted" : "無音となっています",
131 "settings.app.form.minimizeToSystemTray": "Franzをシステムトレイに最小化する", 131 "settings.services.tooltip.notificationsDisabled" : "通知は無効です",
132 "settings.app.form.runInBackground": "ウインドウを閉じた際にFranzをバックグラウンドで実行させておく", 132 "settings.services.updatedInfo" : "変更内容が保存されました",
133 "settings.app.form.language": "言語", 133 "settings.user.form.accountType.company" : "法人",
134 "settings.app.form.beta": "Betaバージョンを含める", 134 "settings.user.form.accountType.individual" : "個人",
135 "settings.app.currentVersion": "現在のバージョン:", 135 "settings.user.form.accountType.label" : "アカウントの種類",
136 "settings.service.form.name": "サービス名", 136 "settings.user.form.accountType.non-profit" : "非営利",
137 "settings.service.form.enableService": "サービスを有効にする", 137 "settings.user.form.currentPassword" : "現在のパスワード",
138 "settings.service.form.enableNotification": "通知を有効にする", 138 "settings.user.form.email" : "メールアドレス",
139 "settings.service.form.team": "チーム", 139 "settings.user.form.firstname" : "名",
140 "settings.service.form.customUrl": "カスタムサーバー", 140 "settings.user.form.lastname" : "姓",
141 "settings.service.form.indirectMessages": "すべての新規メッセージについてバッジを表示する", 141 "settings.user.form.newPassword" : "新しいパスワード",
142 "settings.user.form.firstname": "名", 142 "sidebar.addNewService" : "サービスを追加",
143 "settings.user.form.lastname": "姓", 143 "sidebar.mute" : "オーディオの無効化",
144 "settings.user.form.email": "メールアドレス", 144 "sidebar.settings" : "設定",
145 "settings.user.form.currentPassword": "現在のパスワード", 145 "sidebar.unmute" : "オーディオの有効化",
146 "settings.user.form.newPassword": "新しいパスワード", 146 "signup.company.label" : "法人",
147 "settings.user.form.accountType.label": "アカウントの種類", 147 "signup.email.label" : "メールアドレス",
148 "settings.user.form.accountType.individual": "個人", 148 "signup.emailDuplicate" : "このメールアドレスは既に登録されています",
149 "settings.user.form.accountType.non-profit": "非営利", 149 "signup.firstname.label" : "名",
150 "settings.user.form.accountType.company": "法人", 150 "signup.headline" : "アカウントの作成",
151 "subscription.type.free": "無料", 151 "signup.lastname.label" : "姓",
152 "subscription.type.month": "月間", 152 "signup.legal.info" : "Franzアカウントを作成することで、以下の規約に同意したものとみなします",
153 "subscription.type.year": "年間", 153 "signup.legal.privacy" : "プライバシーについて",
154 "subscription.type.mining": "PCの処理能力を使ってFranzを支援する", 154 "signup.legal.terms" : "利用規約",
155 "subscription.mining.headline": "これはどのような仕組みですか", 155 "signup.link.login" : "アカウントを既に持っていますか? こちらからサインイン",
156 "subscription.mining.experimental": "実験的", 156 "signup.password.label" : "パスワード",
157 "subscription.mining.line1": "\"PCの処理能力を使ってFranzを支援する\"を有効にすることで、Franzはおよそ20-50%のCPUパワーを暗号通貨Moneroのマイニングに使用し、これはおよそ年間で5ドル分にあたります。", 157 "signup.submit.label" : "アカウントの作成",
158 "subscription.mining.line2": "処理能力に基づいてCPUの使用率を適応しますのでバッテリーを無駄に消費したり、システムを遅くすることはありません。", 158 "subscription.euTaxInfo" : "EU在住者 : 地域の消費税が適用される可能性があります",
159 "subscription.mining.line3": "マイニングが機能している限り、Franz Premium Supporterの全ての機能を無制限で利用できます。", 159 "subscription.features.ads" : "広告は一切ありません!",
160 "subscription.mining.moreInformation": "このプランの詳細を確認する。", 160 "subscription.features.comingSoon" : "まもなく登場",
161 "subscriptionPopup.buttonCancel": "キャンセルしました", 161 "subscription.features.customServices" : "あなたとあなたのチームのためのプライベートサービス",
162 "subscriptionPopup.buttonDone": "完了しました", 162 "subscription.features.encryptedSync" : "暗号化されたセッションの同期",
163 "tabs.item.reload": "リロード", 163 "subscription.features.onpremise" : "HipChatのようなオンプレミス\/ホスト型サービスの追加",
164 "tabs.item.edit": "編集", 164 "subscription.features.vpn" : "プロキシサーバーとVPNのサポート",
165 "tabs.item.disableNotifications": "通知を無効にする", 165 "subscription.includedFeatures" : "Franz Premium Supporter有料アカウントには以下が含まれます",
166 "tabs.item.enableNotification": "通知を有効にする", 166 "subscription.mining.experimental" : "試験的",
167 "tabs.item.disableService": "サービスを無効にする", 167 "subscription.mining.headline" : "これはどのように機能しますか?",
168 "tabs.item.deleteService": "サービスを削除する" 168 "subscription.mining.line1" : "\"PCの処理能力を使ってFranzを支援する\"を有効にすることで、Franzはおよそ20-50%のCPUパワーを暗号通貨Moneroのマイニングに使用し、これはおよそ年間で5ドル分に相当します。",
169 "subscription.mining.line2" : "処理能力に基づいてCPUの使用率を適応しますのでバッテリーを無駄に消費したり、システムを遅くすることはありません。",
170 "subscription.mining.line3" : "マイニングが機能している限り、Franz Premium Supporterの全ての機能を無制限で利用できます。",
171 "subscription.mining.moreInformation" : "このプランの詳細を確認する。",
172 "subscription.paymentSessionError" : "支払いフォームを初期化出来ません",
173 "subscription.submit.label" : "Franzの開発を支援したい",
174 "subscription.type.free" : "無料",
175 "subscription.type.mining" : "PCの処理能力を使ってFranzを支援する",
176 "subscription.type.month" : "月間",
177 "subscription.type.year" : "年間",
178 "subscriptionPopup.buttonCancel" : "キャンセル",
179 "subscriptionPopup.buttonDone" : "完了",
180 "tabs.item.deleteService" : "サービスを削除する",
181 "tabs.item.disableAudio" : "オーディオの無効化",
182 "tabs.item.disableNotifications" : "通知を無効にする",
183 "tabs.item.disableService" : "サービスを無効にする",
184 "tabs.item.edit" : "編集",
185 "tabs.item.enableAudio" : "オーディオの有効化",
186 "tabs.item.enableNotification" : "通知を有効にする",
187 "tabs.item.enableService" : "サービスを有効にする",
188 "tabs.item.reload" : "再読み込み",
189 "welcome.loginButton" : "アカウントにログイン",
190 "welcome.signupButton" : "無料アカウントを作成",
191 "welcome.slogan" : "Messaging that works for you"
169} 192}
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
new file mode 100644
index 000000000..30337cc61
--- /dev/null
+++ b/src/i18n/locales/ka.json
@@ -0,0 +1,192 @@
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" : "What is new?",
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" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
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.headline" : "ანგარიში",
52 "settings.account.headlineAccount" : "ანგარიშის ინფორმაცია",
53 "settings.account.headlineInvoices" : "ინვოისები",
54 "settings.account.headlinePassword" : "პაროლის შეცვლა",
55 "settings.account.headlineProfile" : "პროფილის განახლება",
56 "settings.account.headlineSubscription" : "თქვენი გამოწერა",
57 "settings.account.headlineUpgrade" : "განაახლეთ თქვენი ანგარიში და მხარი დაუჭირეთ Franz-ს",
58 "settings.account.invoiceDownload" : "გადმოწერა",
59 "settings.account.manageSubscription.label" : "თქვენი გამოწერის მართვა",
60 "settings.account.mining.active" : "თქვენ ახლა ასრულებთ {hashes} გაანგარიშებას წამში.",
61 "settings.account.mining.cancel" : "მაინინგის გაუქმება",
62 "settings.account.mining.moreInformation" : "მეტი ინფორმაციის მიღება",
63 "settings.account.mining.thankyou" : "გმადლობთ Franz-ის მხარდაჭერისთვის.",
64 "settings.account.successInfo" : "თქვენი ცვლილებები შენახულია",
65 "settings.account.tryReloadUserInfoRequest" : "სცადეთ ხელახლა",
66 "settings.account.userInfoRequestFailed" : "მომხმარებლის ინფორმაციის ჩატვირთვა ვერ მოხერხდა",
67 "settings.app.buttonInstallUpdate" : "გადატვირთეთ და დააყენეთ განახლება",
68 "settings.app.buttonSearchForUpdate" : "განახლებების შემოწმება",
69 "settings.app.currentVersion" : "ამჟამინდელი ვერსია:",
70 "settings.app.form.autoLaunchInBackground" : "გახსენით ფონზე",
71 "settings.app.form.autoLaunchOnStart" : "გაეშვას Franz სისტემის ჩატვირთვისას",
72 "settings.app.form.beta" : "ჩართეთ ბეტა ვერსიები",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "აჩვენეთ Franz სისტემის უჯრაში",
75 "settings.app.form.language" : "ენა",
76 "settings.app.form.minimizeToSystemTray" : "ჩაკეცეთ Franz სისტემის უჯრაში",
77 "settings.app.form.runInBackground" : "დატოვეთ Franz გაშვებული როდესაც ფანჯარა დაიხურება",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "პარამეტრები",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "მთავარი",
83 "settings.app.headlineLanguage" : "ენა",
84 "settings.app.headlineUpdates" : "განახლებები",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "განახლება ხელმისაწვდომია, იწყება გადმოწერა...",
88 "settings.app.updateStatusSearching" : "მიმდინარეობს განახლების ძიება",
89 "settings.app.updateStatusUpToDate" : "თქვენ იყენებთ Franz-ის უახლეს ვერსიას",
90 "settings.navigation.account" : "ანგარიში",
91 "settings.navigation.availableServices" : "ხელმისაწვდომი სერვისები",
92 "settings.navigation.logout" : "გასვლა",
93 "settings.navigation.settings" : "პარამეტრები",
94 "settings.navigation.yourServices" : "თქვენი სერვისები",
95 "settings.recipes.all" : "ყველა სერვისი",
96 "settings.recipes.dev" : "განვითარება",
97 "settings.recipes.headline" : "ხელმისაწვდომი სერვისები",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "ყველაზე პოპულარული",
100 "settings.recipes.nothingFound" : "უკაცრავად, მაგრამ არცერთი სერვისი არ შეესაბამება თქვენს ძიებას.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "სერვისი წარმატებით დაემატა",
102 "settings.service.error.goBack" : "სერვისებში დაბრუნება",
103 "settings.service.error.headline" : "შეცდომა",
104 "settings.service.error.message" : "სერვისის ჩატვირთვა ვერ მოხერხდა.",
105 "settings.service.form.addServiceHeadline" : "დაამატე {name}",
106 "settings.service.form.availableServices" : "ხელმისაწვდომი სერვისები",
107 "settings.service.form.customUrl" : "კერძო სერვერი",
108 "settings.service.form.customUrlPremiumInfo" : "თვით დაჰოსტილი სერვისების დასამატებლად საჭიროა Franz-ის პრემიუმ მხარდამჭერის ანგარიში.",
109 "settings.service.form.customUrlUpgradeAccount" : "განაახლეთ თქვენი ანგარიში",
110 "settings.service.form.customUrlValidationError" : "ვერ დადასტურდა {name} კერძო სერვერი.",
111 "settings.service.form.deleteButton" : "სერვისის წაშლა",
112 "settings.service.form.editServiceHeadline" : "შეასწორე {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "შეტყობინებების ჩართვა",
115 "settings.service.form.enableService" : "სერვისის ჩართვა",
116 "settings.service.form.indirectMessageInfo" : "თქვენ მიიღებთ შეტყობინებას ყოველი ახალი შეტყობინებისას არხზე, არამარტო @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "აჩვენე შეტყობინებების ნიშანი ყოველი ახალი შეტყობინებისთვის",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "სახელი",
120 "settings.service.form.saveButton" : "სერვისის შენახვა",
121 "settings.service.form.tabHosted" : "დაჰოსტილი",
122 "settings.service.form.tabOnPremise" : "თვით დაჰოსტილი ⭐️",
123 "settings.service.form.team" : "გუნდი",
124 "settings.service.form.yourServices" : "თქვენი სერვისები",
125 "settings.services.deletedInfo" : "სერვისი წაიშალა",
126 "settings.services.discoverServices" : "აღმოაჩინეთ სერვისები",
127 "settings.services.headline" : "თქვენი სერვისები",
128 "settings.services.noServicesAdded" : "თქვენ ჯერ არ გაქვთ სერვისები დამატებული.",
129 "settings.services.tooltip.isDisabled" : "სერვისი გათიშულია",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "შეტყობინებები გათიშულია",
132 "settings.services.updatedInfo" : "ცვლილებები შენახულია",
133 "settings.user.form.accountType.company" : "კომპანია",
134 "settings.user.form.accountType.individual" : "ინდივიდუალური",
135 "settings.user.form.accountType.label" : "ანგარიშის ტიპი",
136 "settings.user.form.accountType.non-profit" : "არაკომერციული",
137 "settings.user.form.currentPassword" : "ამჟამინდელი პაროლი",
138 "settings.user.form.email" : "მეილი",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "ახალი პაროლი",
142 "sidebar.addNewService" : "Add new service",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "პარამეტრები",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "კომპანია",
147 "signup.email.label" : "მეილი",
148 "signup.emailDuplicate" : "მომხმარებელი ამ მეილით უკვე არსებობს",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "ანგარიშის შექმნა",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "Franz-ის ანგარიშის შექმნით თქვენ ეთანხმებით",
153 "signup.legal.privacy" : "კონფიდენციალურობის შესახებ",
154 "signup.legal.terms" : "მომსახურების პირობები",
155 "signup.link.login" : "უკვე გაქვთ ანგარიში?",
156 "signup.password.label" : "პაროლი",
157 "signup.submit.label" : "ანგარიშის შექმნა",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "არანაირი რეკლამები, არასდროს!",
160 "subscription.features.comingSoon" : "მალე",
161 "subscription.features.customServices" : "პირადი მომსახურება თქვენთვის და თქვენი გუნდისთვის",
162 "subscription.features.encryptedSync" : "დაშიფრული სესიის სინქრონიზაცია",
163 "subscription.features.onpremise" : "on-premise\/hosted სერვისების დამატება, როგორიცაა HipChat",
164 "subscription.features.vpn" : "Proxy-სა და VPN-ის მხარდაჭერა",
165 "subscription.includedFeatures" : "ფასიანი Franz-ის პრემიუმ მხარმდამჭერი ანგარიში",
166 "subscription.mining.experimental" : "ექსპერიმენტული",
167 "subscription.mining.headline" : "როგორ მუშაობს?",
168 "subscription.mining.line1" : "\"პროცესორული დამუშავების ძალით მხარდაჭერის\" გააქტიურებით, Franz გამოიყენებს თქვენი პროცესორის 20-50% სიმძლავრეს Monero კრიპტოვალუტის მაინინგისთვის, რომელიც დაახლოებით გამოიმუშავებს $5-ს წელიწადში.",
169 "subscription.mining.line2" : "ჩვენ მოვახდენთ პროცესორის გამოყენების ადაპტირებას, რათა არ გაითიშოს თქვენი ბატარეა ან შეაყოვნოს თქვენი მოწყობილობა.",
170 "subscription.mining.line3" : "სანამ მაინიგი მიმდინარეობს, თქვენ გექნებათ ულიმიტო წვდომა ყველა Franz-ის პრემიუმ მხარდამჭერის მახასიათებლებზე.",
171 "subscription.mining.moreInformation" : "მიიღეთ მეტი ინფორმაცია ამის შესახებ.",
172 "subscription.paymentSessionError" : "გადახდის ფორმატის ინიციალიზაცია ვერ მოხერხდა",
173 "subscription.submit.label" : "მინდა ხელი შევუწყო Franz-ის განვითარებას",
174 "subscription.type.free" : "უფასო",
175 "subscription.type.mining" : "Franz-ის მხარდაჭერა პროცესორული დამუშავების ძალით",
176 "subscription.type.month" : "თვე",
177 "subscription.type.year" : "წელი",
178 "subscriptionPopup.buttonCancel" : "გაუქმება",
179 "subscriptionPopup.buttonDone" : "შესრულებულია",
180 "tabs.item.deleteService" : "სერვისის წაშლა",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "შეტყობინებების გამორთვა",
183 "tabs.item.disableService" : "სერვისის გაუქმება",
184 "tabs.item.edit" : "რედაქტირება",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "შეტყობინებების ჩართვა",
187 "tabs.item.enableService" : "სერვისის ჩართვა",
188 "tabs.item.reload" : "ჩატვირთვა",
189 "welcome.loginButton" : "შედით თქვენს ანგარიშში",
190 "welcome.signupButton" : "შექმენი ანგარიში, ეს უფასოა",
191 "welcome.slogan" : "შეტყობინების აპლიკაცია, რომელიც მუშაობს შენთვის"
192}
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index a19d51b2b..70ae4467e 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -1,168 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Kan geen verbinding maken met de Franz online services", 2 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services",
3 "global.notConnectedToTheInternet": "Je bent niet verbonden met het internet.", 3 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.",
4 "welcome.signupButton": "Maak een gratis account aan", 4 "import.headline" : "Importeer je Franz 4 services",
5 "welcome.loginButton": "Inloggen op je account", 5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5",
6 "welcome.slogan": "Messaging that works for you", 6 "import.skip.label" : "Ik wil handmatig een service toevoegen",
7 "login.headline": "Inloggen", 7 "import.submit.label" : "Importeer services",
8 "login.email.label": "E-mailadres", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Wachtwoord", 9 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update",
10 "login.submit.label": "Log in", 10 "infobar.buttonReloadServices" : "Herlaad de services",
11 "login.invalidCredentials": "E-mailadres of wachtwoord ongeldig", 11 "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden",
12 "login.tokenExpired": "Je sessie is verlopen, log opnieuw in a.u.b..", 12 "infobar.servicesUpdated" : "Je services zijn geüpdatet.",
13 "login.serverLogout": "Je sessie is verlopen, log opnieuw in a.u.b..", 13 "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.",
14 "login.link.signup": "Gratis account aanmaken", 14 "invite.email.label" : "E-mailadres",
15 "login.link.password": "Wachtwoord resetten", 15 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit",
16 "password.headline": "Wachtwoord resetten", 16 "invite.name.label" : "Naam",
17 "password.email.label": "E-mailadres", 17 "invite.skip.label" : "Ik wil dit later doen",
18 "password.submit.label": "Doorgaan", 18 "invite.submit.label" : "Verzend uitnodigingen",
19 "password.noUser": "Geen gebruiker met dit e-mailadres gevonden", 19 "login.email.label" : "E-mailadres",
20 "password.successInfo": "Kijk je mail na", 20 "login.headline" : "Inloggen",
21 "password.link.signup": "Gratis account aanmaken", 21 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig",
22 "password.link.login": "Inloggen op je account", 22 "login.link.password" : "Wachtwoord resetten",
23 "signup.headline": "Registreren", 23 "login.link.signup" : "Maak een gratis account",
24 "signup.firstname.label": "Naam", 24 "login.password.label" : "Wachtwoord",
25 "signup.lastname.label": "Achternaam", 25 "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
26 "signup.email.label": "E-mailadres", 26 "login.submit.label" : "Log in",
27 "signup.company.label": "Bedrijf", 27 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
28 "signup.password.label": "Wachtwoord", 28 "password.email.label" : "E-mailadres",
29 "signup.submit.label": "Account aanmaken", 29 "password.headline" : "Wachtwoord resetten",
30 "signup.link.login": "Al een account, inloggen?", 30 "password.link.login" : "Log in op je account",
31 "signup.emailDuplicate": "Er bestaat reeds een gebruiker met dat e-mailadres", 31 "password.link.signup" : "Maak een gratis account",
32 "signup.legal.info": "Door een account aan te maken aanvaard je de", 32 "password.noUser" : "Geen gebruiker bekend met dat e-mailadres",
33 "signup.legal.terms": "Servicevoorwaarden", 33 "password.submit.label" : "Doorgaan",
34 "signup.legal.privacy": "Privacyverklaring", 34 "password.successInfo" : "Controleer alsjeblieft je e-mail",
35 "pricing.headline": "Franz Steunen", 35 "pricing.headline" : "Ondersteun Franz",
36 "pricing.support.label": "Selecteer je steunplan", 36 "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.",
37 "pricing.submit.label": "Ik wil de ontwikkeling van Franz steunen", 37 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
38 "pricing.link.skipPayment": "Ik wil de ontwikkeling van Franz niet steunen.", 38 "pricing.support.label" : "Selecteer je ondersteuningsplan",
39 "import.headline": "Je Franz 4 services importeren", 39 "service.crashHandler.action" : "Reload {name}",
40 "import.notSupportedHeadline": "Services nog niet ondersteund in Franz 5", 40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "import.submit.label": "Services importeren", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Ik wil services handmatig toevoegen", 42 "service.crashHandler.text" : "{name} has caused an error.",
43 "invite.submit.label": "Uitnodiging sturen", 43 "service.disabledHandler.action" : "Enable {name}",
44 "invite.headline.friends": "3 van je vrienden of collega's uitnodigen", 44 "service.disabledHandler.headline" : "{name} is disabled",
45 "invite.name.label": "Naam", 45 "services.getStarted" : "Beginnen",
46 "invite.email.label": "E-mailadres", 46 "services.welcome" : "Welkom bij Franz",
47 "invite.skip.label": "Ik wil dit later doen", 47 "settings.account.account.editButton" : "Bewerk account",
48 "subscription.submit.label": "Ik wil de ontwikkeling van Franz steunen", 48 "settings.account.accountType.basic" : "Basis Account",
49 "subscription.paymentSessionError": "Betalingsformulier kon niet geladen worden", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "subscription.includedFeatures": "Een betalend account voor Franz omvat", 50 "settings.account.buttonSave" : "Profiel aanpassen",
51 "subscription.features.onpremise": "Intern gehoste services zoals HipChat", 51 "settings.account.headline" : "Account",
52 "subscription.features.customServices": "Persoonlijke services voor jou en je team", 52 "settings.account.headlineAccount" : "Account informatie",
53 "subscription.features.encryptedSync": "Synchronisatie van geëncrypteerde sessies", 53 "settings.account.headlineInvoices" : "Facturen",
54 "subscription.features.vpn": "Proxy & VPN ondersteuning", 54 "settings.account.headlinePassword" : "Wijzig wachtwoord",
55 "subscription.features.ads": "Geen reclame, nooit!", 55 "settings.account.headlineProfile" : "Profiel aanpassen",
56 "subscription.features.comingSoon": "komt binnenkort", 56 "settings.account.headlineSubscription" : "Je abonnement",
57 "infobar.servicesUpdated": "Je services zijn geüpdatet.", 57 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz",
58 "infobar.updateAvailable": "Er is een nieuwe update van Franz beschikbaar.", 58 "settings.account.invoiceDownload" : "Download",
59 "infobar.buttonReloadServices": "Services herladen", 59 "settings.account.manageSubscription.label" : "Beheer je abonnement",
60 "infobar.buttonInstallUpdate": "Herstarten & update installeren", 60 "settings.account.mining.active" : "Op dit moment voer je {hashes} berekingen per seconde uit.",
61 "infobar.requiredRequestsFailed": "Kon services en gebruikersinformatie niet laden", 61 "settings.account.mining.cancel" : "Stop mining",
62 "sidebar.settings": "Instellingen", 62 "settings.account.mining.moreInformation" : "Meer informatie",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "Bedankt voor je ondersteuning van Franz met je rekenkracht.",
64 "services.welcome": "Welkom bij Franz", 64 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
65 "services.getStarted": "Begin", 65 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
66 "settings.account.headline": "Account", 66 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden",
67 "settings.account.headlineSubscription": "Je abonnement", 67 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
68 "settings.account.headlineUpgrade": "Upgrade je account & ondersteun Franz", 68 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
69 "settings.account.headlineInvoices": "Facturen", 69 "settings.app.currentVersion" : "Huidige versie:",
70 "settings.account.manageSubscription.label": "Je abonnement beheren", 70 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
71 "settings.account.accountType.basic": "Basisaccount", 71 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten",
72 "settings.account.accountType.premium": "Premium Supporter Account", 72 "settings.app.form.beta" : "Inclusief bèta versies",
73 "settings.account.account.editButton": "Account aanpassen", 73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.account.invoiceDownload": "Downloaden", 74 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk",
75 "settings.account.userInfoRequestFailed": "Kon de gebruikersinformatie niet laden", 75 "settings.app.form.language" : "Taal",
76 "settings.account.tryReloadUserInfoRequest": "Probeer opnieuw", 76 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
77 "settings.account.headlineProfile": "Profiel aanpassen", 77 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
78 "settings.account.headlineAccount": "Accountinformatie", 78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.account.headlinePassword": "Wachtwoord veranderen", 79 "settings.app.headline" : "Instellingen",
80 "settings.account.successInfo": "Je wijzigingen zijn opgeslagen", 80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.account.buttonSave": "Profiel aanpassen", 81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.account.mining.thankyou": "Bedankt om Franz te steunen met je rekenkracht.", 82 "settings.app.headlineGeneral" : "Algemeen",
83 "settings.account.mining.active": "Op dit moment maak je {hashes} berekeningen per seconde.", 83 "settings.app.headlineLanguage" : "Taal",
84 "settings.account.mining.moreInformation": "Meer informatie", 84 "settings.app.headlineUpdates" : "Updates",
85 "settings.account.mining.cancel": "Mijnen annuleren", 85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.navigation.availableServices": "Beschikbare services", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Jouw services", 87 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
88 "settings.navigation.account": "Account", 88 "settings.app.updateStatusSearching" : "Zoekt naar updates",
89 "settings.navigation.settings": "Instellingen", 89 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz",
90 "settings.navigation.logout": "Uitloggen", 90 "settings.navigation.account" : "Account",
91 "settings.recipes.headline": "Beschikbare services", 91 "settings.navigation.availableServices" : "Beschikbare services",
92 "settings.recipes.mostPopular": "Meest populair", 92 "settings.navigation.logout" : "Uitloggen",
93 "settings.recipes.all": "Alle services", 93 "settings.navigation.settings" : "Instellingen",
94 "settings.recipes.dev": "Ontwikkeling", 94 "settings.navigation.yourServices" : "Jouw services",
95 "settings.recipes.nothingFound": "Sorry, maar geen enkele service kwam overeen met je zoekterm.", 95 "settings.recipes.all" : "Alle services",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Service succesvol toegevoegd", 96 "settings.recipes.dev" : "Ontwikkeling",
97 "settings.service.form.saveButton": "Service bewaren", 97 "settings.recipes.headline" : "Beschikbare services",
98 "settings.service.form.deleteButton": "Service verwijderen", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Beschikbare services", 99 "settings.recipes.mostPopular" : "Meest populair",
100 "settings.service.form.yourServices": "Jouw services", 100 "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.",
101 "settings.service.form.addServiceHeadline": "{name} toevoegen", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd",
102 "settings.service.form.editServiceHeadline": "{name} aanpassen", 102 "settings.service.error.goBack" : "Terug naar de services",
103 "settings.service.form.tabHosted": "Gehost", 103 "settings.service.error.headline" : "Fout",
104 "settings.service.form.tabOnPremise": "Intern gehost ⭐️", 104 "settings.service.error.message" : "Kon het service-recept niet laden.",
105 "settings.service.form.customUrlValidationError": "Kon de custom {name} server niet valideren.", 105 "settings.service.form.addServiceHeadline" : "{name} toevoegen",
106 "settings.service.form.customUrlPremiumInfo": "Om intern gehoste services toe te voegen heb je een Franz Premium Supporter Account nodig.", 106 "settings.service.form.availableServices" : "Beschikbare services",
107 "settings.service.form.customUrlUpgradeAccount": "Je account upgraden", 107 "settings.service.form.customUrl" : "Aangepaste server",
108 "settings.service.form.indirectMessageInfo": "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Om intern gehoste services toe te voegen heb je een Franz Premium Supporter Account nodig.",
109 "settings.service.error.headline": "Fout", 109 "settings.service.form.customUrlUpgradeAccount" : "Je account upgraden",
110 "settings.service.error.goBack": "Terug naar de services", 110 "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.",
111 "settings.service.error.message": "Kon het service-recept niet laden.", 111 "settings.service.form.deleteButton" : "Service verwijderen",
112 "settings.services.tooltip.isDisabled": "Service staat uit", 112 "settings.service.form.editServiceHeadline" : "{name} aanpassen",
113 "settings.services.tooltip.notificationsDisabled": "Notificaties staan uit", 113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.services.headline": "Jouw services", 114 "settings.service.form.enableNotification" : "Notificaties aanzetten",
115 "settings.services.noServicesAdded": "Je hebt nog geen services toegevoegd.", 115 "settings.service.form.enableService" : "Service aanzetten",
116 "settings.services.discoverServices": "Services ontdekken", 116 "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Je wijzigingen werden bewaard", 117 "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten",
118 "settings.services.deletedInfo": "Service werd verwijderd", 118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.app.headline": "Instellingen", 119 "settings.service.form.name" : "Naam",
120 "settings.app.headlineGeneral": "Algemeen", 120 "settings.service.form.saveButton" : "Service bewaren",
121 "settings.app.headlineLanguage": "Talen", 121 "settings.service.form.tabHosted" : "Gehost",
122 "settings.app.headlineUpdates": "Updates", 122 "settings.service.form.tabOnPremise" : "Intern gehost ⭐️",
123 "settings.app.buttonSearchForUpdate": "Controleren op updates", 123 "settings.service.form.team" : "Team",
124 "settings.app.buttonInstallUpdate": "Herstart & installeer update", 124 "settings.service.form.yourServices" : "Jouw services",
125 "settings.app.updateStatusSearching": "Zoeken naar updates", 125 "settings.services.deletedInfo" : "Service werd verwijderd",
126 "settings.app.updateStatusAvailable": "Update beschikbaar, wordt gedownload...", 126 "settings.services.discoverServices" : "Services ontdekken",
127 "settings.app.updateStatusUpToDate": "Je gebruikt de laatste versie van Franz", 127 "settings.services.headline" : "Jouw services",
128 "settings.app.form.autoLaunchOnStart": "Franz lanceren bij het starten", 128 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.",
129 "settings.app.form.autoLaunchInBackground": "In de achtergrond openen", 129 "settings.services.tooltip.isDisabled" : "Service staat uit",
130 "settings.app.form.minimizeToSystemTray": "Franz naar je systeemvak minimaliseren", 130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.app.form.runInBackground": "Franz in de achtergrond draaien wanneer je het venster sluit", 131 "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit",
132 "settings.app.form.language": "Taal", 132 "settings.services.updatedInfo" : "Je wijzigingen werden bewaard",
133 "settings.app.form.beta": "Ook beta versies", 133 "settings.user.form.accountType.company" : "Bedrijf",
134 "settings.app.currentVersion": "Huidige versie:", 134 "settings.user.form.accountType.individual" : "Particulier",
135 "settings.service.form.name": "Naam", 135 "settings.user.form.accountType.label" : "Account type",
136 "settings.service.form.enableService": "Service aanzetten", 136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.service.form.enableNotification": "Notificaties aanzetten", 137 "settings.user.form.currentPassword" : "Huidig wachtwoord",
138 "settings.service.form.team": "Team", 138 "settings.user.form.email" : "Email",
139 "settings.service.form.customUrl": "Aangepaste server", 139 "settings.user.form.firstname" : "Naam",
140 "settings.service.form.indirectMessages": "Toon berichten-badge voor alle nieuwe berichten", 140 "settings.user.form.lastname" : "Achternaam",
141 "settings.user.form.firstname": "Naam", 141 "settings.user.form.newPassword" : "Nieuw wachtwoord",
142 "settings.user.form.lastname": "Achternaam", 142 "sidebar.addNewService" : "!!!Add new service",
143 "settings.user.form.email": "Email", 143 "sidebar.mute" : "Disable audio",
144 "settings.user.form.currentPassword": "Huidig wachtwoord", 144 "sidebar.settings" : "Instellingen",
145 "settings.user.form.newPassword": "Nieuw wachtwoord", 145 "sidebar.unmute" : "Enable audio",
146 "settings.user.form.accountType.label": "Account type", 146 "signup.company.label" : "Bedrijf",
147 "settings.user.form.accountType.individual": "Particulier", 147 "signup.email.label" : "E-mailadres",
148 "settings.user.form.accountType.non-profit": "Non-Profit", 148 "signup.emailDuplicate" : "Er bestaat reeds een gebruiker met dat e-mailadres",
149 "settings.user.form.accountType.company": "Bedrijf", 149 "signup.firstname.label" : "Naam",
150 "subscription.type.free": "gratis", 150 "signup.headline" : "Registreren",
151 "subscription.type.month": "maand", 151 "signup.lastname.label" : "Achternaam",
152 "subscription.type.year": "jaar", 152 "signup.legal.info" : "Door een account aan te maken aanvaard je de",
153 "subscription.type.mining": "Franz ondersteunen met rekenkracht", 153 "signup.legal.privacy" : "Privacyverklaring",
154 "subscription.mining.headline": "Hoe werkt dit?", 154 "signup.legal.terms" : "Servicevoorwaarden",
155 "subscription.mining.experimental": "experimenteel", 155 "signup.link.login" : "Al een account, inloggen?",
156 "subscription.mining.line1": "Door \"Ondersteunen met rekenkracht\" aan te zetten zal Franz ongeveer 20-50% van je CPU gebruiken om Monero cryptocurrency te minen, wat ongeveer op €4,3/jaar neerkomt.", 156 "signup.password.label" : "Wachtwoord",
157 "subscription.mining.line2": "Het CPU gebruik zal aangepast worden aan je werkgedrag zodat we je batterij niet leeg laten lopen of jou en je machine vertragen.", 157 "signup.submit.label" : "Account aanmaken",
158 "subscription.mining.line3": "Zolang de miner actief is heb je ongelimiteerde toegang tot alle Franz Premium Supporter Features.", 158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.mining.moreInformation": "Meer informatie over dit plan.", 159 "subscription.features.ads" : "Geen reclame, nooit!",
160 "subscriptionPopup.buttonCancel": "Annuleren", 160 "subscription.features.comingSoon" : "komt binnenkort",
161 "subscriptionPopup.buttonDone": "Klaar", 161 "subscription.features.customServices" : "Persoonlijke services voor jou en je team",
162 "tabs.item.reload": "Herladen", 162 "subscription.features.encryptedSync" : "Synchronisatie van geëncrypteerde sessies",
163 "tabs.item.edit": "Aanpassen", 163 "subscription.features.onpremise" : "Intern gehoste services zoals HipChat",
164 "tabs.item.disableNotifications": "Notificaties uitschakelen", 164 "subscription.features.vpn" : "Proxy & VPN ondersteuning",
165 "tabs.item.enableNotification": "Notificaties inschakelen", 165 "subscription.includedFeatures" : "Een betalend account voor Franz omvat",
166 "tabs.item.disableService": "Service uitschakelen", 166 "subscription.mining.experimental" : "experimenteel",
167 "tabs.item.deleteService": "Service verwijderen" 167 "subscription.mining.headline" : "Hoe werkt dit?",
168 "subscription.mining.line1" : "Door \"Ondersteunen met rekenkracht\" aan te zetten zal Franz ongeveer 20-50% van je CPU gebruiken om Monero cryptocurrency te minen, wat ongeveer op €4,3\/jaar neerkomt.",
169 "subscription.mining.line2" : "Het CPU gebruik zal aangepast worden aan je werkgedrag zodat we je batterij niet leeg laten lopen of jou en je machine vertragen.",
170 "subscription.mining.line3" : "Zolang de miner actief is heb je ongelimiteerde toegang tot alle Franz Premium Supporter Features.",
171 "subscription.mining.moreInformation" : "Meer informatie over dit plan.",
172 "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden",
173 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz steunen",
174 "subscription.type.free" : "gratis",
175 "subscription.type.mining" : "Franz ondersteunen met rekenkracht",
176 "subscription.type.month" : "maand",
177 "subscription.type.year" : "jaar",
178 "subscriptionPopup.buttonCancel" : "Annuleren",
179 "subscriptionPopup.buttonDone" : "Klaar",
180 "tabs.item.deleteService" : "Service verwijderen",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Notificaties uitschakelen",
183 "tabs.item.disableService" : "Service uitschakelen",
184 "tabs.item.edit" : "Aanpassen",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Notificaties inschakelen",
187 "tabs.item.enableService" : "Service aanzetten",
188 "tabs.item.reload" : "Herladen",
189 "welcome.loginButton" : "Inloggen op je account",
190 "welcome.signupButton" : "Maak een gratis account aan",
191 "welcome.slogan" : "Messaging that works for you"
168} 192}
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index aee1a52c8..a78a08878 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -1,169 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Kan niet verbinden met Franz online services", 2 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services",
3 "global.notConnectedToTheInternet": "Je bent niet verbonden met het internet.", 3 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.",
4 "welcome.signupButton": "Maak een gratis account", 4 "import.headline" : "Importeer je Franz 4 services",
5 "welcome.loginButton": "Log in op je account", 5 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5",
6 "welcome.slogan": "Messaging dat voor jou werkt", 6 "import.skip.label" : "Ik wil handmatig een service toevoegen",
7 "login.headline": "Inloggen", 7 "import.submit.label" : "Importeer services",
8 "login.email.label": "E-mailadres", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Wachtwoord", 9 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update",
10 "login.submit.label": "Inloggen", 10 "infobar.buttonReloadServices" : "Herlaad de services",
11 "login.invalidCredentials": "E-mailadres of wachtwoord ongeldig", 11 "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden",
12 "login.tokenExpired": "De sessie is verlopen, log opnieuw in alsjeblieft.", 12 "infobar.servicesUpdated" : "Je services zijn geüpdatet.",
13 "login.serverLogout": "De sessie is verlopen, log opnieuw in alsjeblieft.", 13 "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.",
14 "login.link.signup": "Maak een gratis account", 14 "invite.email.label" : "E-mailadres",
15 "login.link.password": "Wachtwoord vergeten", 15 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit",
16 "password.headline": "Wachtwoord vergeten", 16 "invite.name.label" : "Naam",
17 "password.email.label": "E-mailadres", 17 "invite.skip.label" : "Ik wil dit later doen",
18 "password.submit.label": "Verzenden", 18 "invite.submit.label" : "Verzend uitnodigingen",
19 "password.noUser": "Geen gebruiker bekend met dat e-mailadres", 19 "login.email.label" : "E-mailadres",
20 "password.successInfo": "Controleer alsjeblieft je e-mail", 20 "login.headline" : "Inloggen",
21 "password.link.signup": "Maak een nieuw account aan", 21 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig",
22 "password.link.login": "Log in op je account", 22 "login.link.password" : "Wachtwoord vergeten",
23 "signup.headline": "Aanmelden", 23 "login.link.signup" : "Maak een gratis account",
24 "signup.firstname.label": "Voornaam", 24 "login.password.label" : "Wachtwoord",
25 "signup.lastname.label": "Achternaam", 25 "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
26 "signup.email.label": "E-mailadres", 26 "login.submit.label" : "Inloggen",
27 "signup.company.label": "Bedrijf", 27 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
28 "signup.password.label": "Wachtwoord", 28 "password.email.label" : "E-mailadres",
29 "signup.submit.label": "Maak account aan", 29 "password.headline" : "Wachtwoord vergeten",
30 "signup.link.login": "Al een account? Log in!", 30 "password.link.login" : "Log in op je account",
31 "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres", 31 "password.link.signup" : "Maak een gratis account",
32 "signup.legal.info": "Door een Franz account aan te maken ga je akkoord met de", 32 "password.noUser" : "Geen gebruiker bekend met dat e-mailadres",
33 "signup.legal.terms": "Gebruiksvoorwaarden", 33 "password.submit.label" : "Verzenden",
34 "signup.legal.privacy": "Privacy Voorwaarden", 34 "password.successInfo" : "Controleer alsjeblieft je e-mail",
35 "pricing.headline": "Ondersteun Franz", 35 "pricing.headline" : "Ondersteun Franz",
36 "pricing.support.label": "Selecteer je ondersteuningsplan", 36 "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.",
37 "pricing.submit.label": "Ik wil de ontwikkeling van Franz ondersteunen", 37 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
38 "pricing.link.skipPayment": "Ik wil de ontwikkeling van Franz niet ondersteunen.", 38 "pricing.support.label" : "Selecteer je ondersteuningsplan",
39 "import.headline": "Importeer je Franz 4 services", 39 "service.crashHandler.action" : "{name} herladen",
40 "import.notSupportedHeadline": "Services nog niet ondersteund in Franz 5", 40 "service.crashHandler.autoReload" : "Probeer {name} te herstellen over {seconds} seconden",
41 "import.submit.label": "Importeer services", 41 "service.crashHandler.headline" : "Oh nee!",
42 "import.skip.label": "Ik wil services handmatig toevoegen", 42 "service.crashHandler.text" : "{name} heeft voor een fout gezorgd.",
43 "invite.submit.label": "Verzend uitnodigingen", 43 "service.disabledHandler.action" : "Activeer {name}",
44 "invite.headline.friends": "Nodig 3 van je vrienden of collega's uit", 44 "service.disabledHandler.headline" : "{name} is uitgeschakeld",
45 "invite.name.label": "Naam", 45 "services.getStarted" : "Beginnen",
46 "invite.email.label": "E-mailadres", 46 "services.welcome" : "Welkom bij Franz",
47 "invite.skip.label": "Ik wil dit later doen", 47 "settings.account.account.editButton" : "Bewerk account",
48 "subscription.submit.label": "Ik wil de ontwikkeling van Franz ondersteunen", 48 "settings.account.accountType.basic" : "Basis Account",
49 "subscription.paymentSessionError": "Kan betaalformulier niet initialiseren", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "subscription.includedFeatures": "Betaald Franz Premium Supporter Account bevat", 50 "settings.account.buttonSave" : "Update profiel",
51 "subscription.features.onpremise": "Add on-geschikt/gehoste services zoals HipChat", 51 "settings.account.headline" : "Account",
52 "subscription.features.customServices": "Privé services voor jou en je team", 52 "settings.account.headlineAccount" : "Account informatie",
53 "subscription.features.encryptedSync": "Beveiligde sessie synchronisatie", 53 "settings.account.headlineInvoices" : "Facturen",
54 "subscription.features.vpn": "Proxy & VPN ondersteuning", 54 "settings.account.headlinePassword" : "Wijzig wachtwoord",
55 "subscription.features.ads": "Geen advertenties, nooit!", 55 "settings.account.headlineProfile" : "Update profiel",
56 "subscription.features.comingSoon": "komt binnenkort", 56 "settings.account.headlineSubscription" : "Je abonnement",
57 "infobar.servicesUpdated": "Je services zijn geüpdatet.", 57 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz",
58 "infobar.updateAvailable": "Een nieuwe update voor Franz is beschikbaar.", 58 "settings.account.invoiceDownload" : "Download",
59 "infobar.buttonReloadServices": "Herlaad services", 59 "settings.account.manageSubscription.label" : "Beheer je abonnement",
60 "infobar.buttonInstallUpdate": "Herstart & installeer update", 60 "settings.account.mining.active" : "Op dit moment voer je {hashes} berekingen per seconde uit.",
61 "infobar.requiredRequestsFailed": "Kon services en gebruikerinformatie niet laden", 61 "settings.account.mining.cancel" : "Stop mining",
62 "sidebar.settings": "Instellingen", 62 "settings.account.mining.moreInformation" : "Meer informatie",
63 "sidebar.addNewService": "Voeg nieuwe service toe", 63 "settings.account.mining.thankyou" : "Bedankt voor je ondersteuning van Franz met je rekenkracht.",
64 "services.welcome": "Welkom bij Franz", 64 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
65 "services.getStarted": "Beginnen", 65 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
66 "settings.account.headline": "Account", 66 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden",
67 "settings.account.headlineSubscription": "Je abonnement", 67 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
68 "settings.account.headlineUpgrade": "Upgrade je account & ondersteun Franz", 68 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
69 "settings.account.headlineInvoices": "Facturen", 69 "settings.app.currentVersion" : "Huidige versie:",
70 "settings.account.manageSubscription.label": "Beheer je abonnement", 70 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
71 "settings.account.accountType.basic": "Basis Account", 71 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten",
72 "settings.account.accountType.premium": "Premium Supporter Account", 72 "settings.app.form.beta" : "Inclusief bèta versies",
73 "settings.account.account.editButton": "Bewerk account", 73 "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan",
74 "settings.account.invoiceDownload": "Download", 74 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk",
75 "settings.account.userInfoRequestFailed": "Kon gebruikerinformatie niet laden", 75 "settings.app.form.language" : "Taal",
76 "settings.account.tryReloadUserInfoRequest": "Probeer opnieuw", 76 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
77 "settings.account.headlineProfile": "Update profiel", 77 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
78 "settings.account.headlineAccount": "Account informatie", 78 "settings.app.form.showDisabledServices" : "Laat uitgeschakelde services zien",
79 "settings.account.headlinePassword": "Wijzig wachtwoord", 79 "settings.app.headline" : "Instellingen",
80 "settings.account.successInfo": "Je wijzigingen zijn opgeslagen", 80 "settings.app.headlineAdvanced" : "Geavanceerd",
81 "settings.account.buttonSave": "Update profiel", 81 "settings.app.headlineAppearance" : "Weergave",
82 "settings.account.mining.thankyou": "Bedankt voor je ondersteuning van Franz met je rekenkracht.", 82 "settings.app.headlineGeneral" : "Algemeen",
83 "settings.account.mining.active": "Op dit moment voer je {hashes} berekingen per seconde uit.", 83 "settings.app.headlineLanguage" : "Taal",
84 "settings.account.mining.moreInformation": "Meer informatie", 84 "settings.app.headlineUpdates" : "Updates",
85 "settings.account.mining.cancel": "Stop mining", 85 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig",
86 "settings.navigation.availableServices": "Beschikbare services", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Jouw services", 87 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
88 "settings.navigation.account": "Account", 88 "settings.app.updateStatusSearching" : "Zoekt naar updates",
89 "settings.navigation.settings": "Instellingen", 89 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz",
90 "settings.navigation.logout": "Uitloggen", 90 "settings.navigation.account" : "Account",
91 "settings.recipes.headline": "Beschikbare services", 91 "settings.navigation.availableServices" : "Beschikbare services",
92 "settings.recipes.mostPopular": "Meest populair", 92 "settings.navigation.logout" : "Uitloggen",
93 "settings.recipes.all": "Alle services", 93 "settings.navigation.settings" : "Instellingen",
94 "settings.recipes.dev": "Ontwikkeling", 94 "settings.navigation.yourServices" : "Jouw services",
95 "settings.recipes.nothingFound": "Geen service kwam overeen met je zoekopdracht.", 95 "settings.recipes.all" : "Alle services",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Service succesvol toegevoegd", 96 "settings.recipes.dev" : "Ontwikkeling",
97 "settings.service.form.saveButton": "Opslaan service", 97 "settings.recipes.headline" : "Beschikbare services",
98 "settings.service.form.deleteButton": "Verwijder service", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Beschikbare services", 99 "settings.recipes.mostPopular" : "Meest populair",
100 "settings.service.form.yourServices": "Jouw services", 100 "settings.recipes.nothingFound" : "Geen service kwam overeen met je zoekopdracht.",
101 "settings.service.form.addServiceHeadline": "Toevoegen {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd",
102 "settings.service.form.editServiceHeadline": "Bewerk {name}", 102 "settings.service.error.goBack" : "Terug naar services",
103 "settings.service.form.tabHosted": "Gehost", 103 "settings.service.error.headline" : "Fout",
104 "settings.service.form.tabOnPremise": "Zelf-gehoste ??", 104 "settings.service.error.message" : "Kon servicerecept niet laden.",
105 "settings.service.form.customUrlValidationError": "Kon custom server {name} niet valideren.", 105 "settings.service.form.addServiceHeadline" : "Toevoegen {name}",
106 "settings.service.form.customUrlPremiumInfo": "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.", 106 "settings.service.form.availableServices" : "Beschikbare services",
107 "settings.service.form.customUrlUpgradeAccount": "Upgrade je account", 107 "settings.service.form.customUrl" : "Custom server",
108 "settings.service.form.indirectMessageInfo": "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.",
109 "settings.service.error.headline": "Fout", 109 "settings.service.form.customUrlUpgradeAccount" : "Upgrade je account",
110 "settings.service.error.goBack": "Terug naar services", 110 "settings.service.form.customUrlValidationError" : "Kon custom server {name} niet valideren.",
111 "settings.service.error.message": "Kon servicerecept niet laden.", 111 "settings.service.form.deleteButton" : "Verwijder service",
112 "settings.services.tooltip.isDisabled": "Service is uitgeschakeld", 112 "settings.service.form.editServiceHeadline" : "Bewerk {name}",
113 "settings.services.tooltip.notificationsDisabled": "Meldingen zijn uitgeschakeld", 113 "settings.service.form.enableAudio" : "Audio inschakelen",
114 "settings.services.headline": "Jouw services", 114 "settings.service.form.enableNotification" : "Meldingen inschakelen",
115 "settings.services.noServicesAdded": "Je hebt nog geen services toegevoegd.", 115 "settings.service.form.enableService" : "Service inschakelen",
116 "settings.services.discoverServices": "Ontdek services", 116 "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen", 117 "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten",
118 "settings.services.deletedInfo": "Service is verwijderd", 118 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn",
119 "settings.app.headline": "Instellingen", 119 "settings.service.form.name" : "Naam",
120 "settings.app.headlineGeneral": "Algemeen", 120 "settings.service.form.saveButton" : "Opslaan service",
121 "settings.app.headlineLanguage": "Taal", 121 "settings.service.form.tabHosted" : "Gehost",
122 "settings.app.headlineUpdates": "Updates", 122 "settings.service.form.tabOnPremise" : "Zelf-gehost *",
123 "settings.app.buttonSearchForUpdate": "Controleer op updates", 123 "settings.service.form.team" : "Team",
124 "settings.app.buttonInstallUpdate": "Herstart & installeer update", 124 "settings.service.form.yourServices" : "Jouw services",
125 "settings.app.updateStatusSearching": "Zoekt naar updates", 125 "settings.services.deletedInfo" : "Service is verwijderd",
126 "settings.app.updateStatusAvailable": "Update beschikbaar, downloaden...", 126 "settings.services.discoverServices" : "Ontdek services",
127 "settings.app.updateStatusUpToDate": "Je gebruikt de laatste versie van Franz", 127 "settings.services.headline" : "Jouw services",
128 "settings.app.form.autoLaunchOnStart": "Lanceer Franz bij opstarten", 128 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.",
129 "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", 129 "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld",
130 "settings.app.form.enableSystemTray": "Toon Franz in de systeembalk", 130 "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld",
131 "settings.app.form.minimizeToSystemTray": "Minimaliseer Franz naar de systeembal", 131 "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld",
132 "settings.app.form.runInBackground": "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 132 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen",
133 "settings.app.form.language": "Taal", 133 "settings.user.form.accountType.company" : "Bedrijf",
134 "settings.app.form.beta": "Inclusief beta versies", 134 "settings.user.form.accountType.individual" : "Individueel",
135 "settings.app.currentVersion": "Huidige versie:", 135 "settings.user.form.accountType.label" : "Account type",
136 "settings.service.form.name": "Naam", 136 "settings.user.form.accountType.non-profit" : "Non-Profit",
137 "settings.service.form.enableService": "Activeer service", 137 "settings.user.form.currentPassword" : "Huidig wachtwoord",
138 "settings.service.form.enableNotification": "Activeer meldingen", 138 "settings.user.form.email" : "E-mailadres",
139 "settings.service.form.team": "Team", 139 "settings.user.form.firstname" : "Voornaam",
140 "settings.service.form.customUrl": "Custom server", 140 "settings.user.form.lastname" : "Achternaam",
141 "settings.service.form.indirectMessages": "Toon berichtenbadge voor alle nieuwe berichten", 141 "settings.user.form.newPassword" : "Nieuw wachtwoord",
142 "settings.user.form.firstname": "Voornaam", 142 "sidebar.addNewService" : "Service toevoegen",
143 "settings.user.form.lastname": "Achternaam", 143 "sidebar.mute" : "Audio uitschakelen",
144 "settings.user.form.email": "E-mailadres", 144 "sidebar.settings" : "Instellingen",
145 "settings.user.form.currentPassword": "Huidig wachtwoord", 145 "sidebar.unmute" : "Audio inschakelen",
146 "settings.user.form.newPassword": "Nieuw wachtwoord", 146 "signup.company.label" : "Bedrijf",
147 "settings.user.form.accountType.label": "Account type", 147 "signup.email.label" : "E-mailadres",
148 "settings.user.form.accountType.individual": "Individueel", 148 "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres",
149 "settings.user.form.accountType.non-profit": "Non-Profit", 149 "signup.firstname.label" : "Voornaam",
150 "settings.user.form.accountType.company": "Bedrijf", 150 "signup.headline" : "Aanmelden",
151 "subscription.type.free": "gratis", 151 "signup.lastname.label" : "Achternaam",
152 "subscription.type.month": "maand", 152 "signup.legal.info" : "Door een Franz account aan te maken ga je akkoord met de",
153 "subscription.type.year": "jaar", 153 "signup.legal.privacy" : "Privacy Voorwaarden",
154 "subscription.type.mining": "Ondersteun Franz met rekenkracht", 154 "signup.legal.terms" : "Gebruiksvoorwaarden",
155 "subscription.mining.headline": "Hoe werkt dit?", 155 "signup.link.login" : "Al een account? Log in!",
156 "subscription.mining.experimental": "experimenteel", 156 "signup.password.label" : "Wachtwoord",
157 "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.", 157 "signup.submit.label" : "Maak een nieuw account aan",
158 "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.", 158 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn",
159 "subscription.mining.line3": "Zolang de miner actief is, heb je onbeperkt toegang tot alle Franz Premium Supporter Features.", 159 "subscription.features.ads" : "Geen advertenties, nooit!",
160 "subscription.mining.moreInformation": "Verkrijg meer informatie over dit plan.", 160 "subscription.features.comingSoon" : "komt binnenkort",
161 "subscriptionPopup.buttonCancel": "Annuleer", 161 "subscription.features.customServices" : "Privé services voor jou en je team",
162 "subscriptionPopup.buttonDone": "Klaar", 162 "subscription.features.encryptedSync" : "Beveiligde sessie synchronisatie",
163 "tabs.item.reload": "Herlaad", 163 "subscription.features.onpremise" : "Add on-geschikt\/gehoste services zoals HipChat",
164 "tabs.item.edit": "Bewerk", 164 "subscription.features.vpn" : "Proxy & VPN ondersteuning",
165 "tabs.item.disableNotifications": "Uitschakelen meldingen", 165 "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat",
166 "tabs.item.enableNotification": "Inschakelen meldingen", 166 "subscription.mining.experimental" : "experimenteel",
167 "tabs.item.disableService": "Uitschakelen service", 167 "subscription.mining.headline" : "Hoe werkt dit?",
168 "tabs.item.deleteService": "Verwijderen service" 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.",
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.",
170 "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.",
172 "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren",
173 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
174 "subscription.type.free" : "gratis",
175 "subscription.type.mining" : "Ondersteun Franz met rekenkracht",
176 "subscription.type.month" : "maand",
177 "subscription.type.year" : "jaar",
178 "subscriptionPopup.buttonCancel" : "Annuleer",
179 "subscriptionPopup.buttonDone" : "Klaar",
180 "tabs.item.deleteService" : "Verwijderen service",
181 "tabs.item.disableAudio" : "Audio uitschakelen",
182 "tabs.item.disableNotifications" : "Uitschakelen meldingen",
183 "tabs.item.disableService" : "Uitschakelen service",
184 "tabs.item.edit" : "Bewerk",
185 "tabs.item.enableAudio" : "Audio inschakelen",
186 "tabs.item.enableNotification" : "Inschakelen meldingen",
187 "tabs.item.enableService" : "Service inschakelen",
188 "tabs.item.reload" : "Herlaad",
189 "welcome.loginButton" : "Log in op je account",
190 "welcome.signupButton" : "Maak een gratis account",
191 "welcome.slogan" : "Messaging die voor jou werkt"
169} 192}
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index a884ef319..67657155f 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -1,168 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Nie można połączyć się z usługą Franz", 2 "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online",
3 "global.notConnectedToTheInternet": "Brak połączenia z Internetem.", 3 "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.",
4 "welcome.signupButton": "Stwórz darmowe konto", 4 "import.headline" : "Importuj usługi Franz 4",
5 "welcome.loginButton": "Zaloguj się na swoje konto", 5 "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5",
6 "welcome.slogan": "Komunikator który działa", 6 "import.skip.label" : "Chcę ręcznie dodać usługi",
7 "login.headline": "Zaloguj się", 7 "import.submit.label" : "Zaimportuj usługi",
8 "login.email.label": "Adres email", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Hasło", 9 "infobar.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizację",
10 "login.submit.label": "Zaloguj się", 10 "infobar.buttonReloadServices" : "Załaduj ponownie usługi",
11 "login.invalidCredentials": "Adres email lub hasło są błędne", 11 "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika",
12 "login.tokenExpired": "Twoja sesja wygasła, zaloguj się ponownie.", 12 "infobar.servicesUpdated" : "Usługi zostały zaktualizowane.",
13 "login.serverLogout": "Twoja sesja wygasła, zaloguj się ponownie.", 13 "infobar.updateAvailable" : "Dostępna jest nowa wersja Franza.",
14 "login.link.signup": "Stwórz darmowe konto", 14 "invite.email.label" : "Adres email",
15 "login.link.password": "Zresetuj hasło", 15 "invite.headline.friends" : "Zaproś 3 znajomych lub współpracowników",
16 "password.headline": "Zresetuj hasło", 16 "invite.name.label" : "Imię",
17 "password.email.label": "Adres email", 17 "invite.skip.label" : "Chcę to zrobić później",
18 "password.submit.label": "Wyślij", 18 "invite.submit.label" : "Wyślij zaproszenia",
19 "password.noUser": "Nie znaleziono użytkownika z takim adresem email", 19 "login.email.label" : "Adres email",
20 "password.successInfo": "Sprawdź swoją skrzynkę email", 20 "login.headline" : "Zaloguj się",
21 "password.link.signup": "Stwórz darmowe konto", 21 "login.invalidCredentials" : "Adres email lub hasło są błędne",
22 "password.link.login": "Zaloguj się na swoje konto", 22 "login.link.password" : "Wyzeruj hasło",
23 "signup.headline": "Zarejestruj się", 23 "login.link.signup" : "Załóż darmowe konto",
24 "signup.firstname.label": "Imię", 24 "login.password.label" : "Hasło",
25 "signup.lastname.label": "Nazwisko", 25 "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.",
26 "signup.email.label": "Adres email", 26 "login.submit.label" : "Zaloguj się",
27 "signup.company.label": "Firma", 27 "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.",
28 "signup.password.label": "Hasło", 28 "password.email.label" : "Adres email",
29 "signup.submit.label": "Stwórz konto", 29 "password.headline" : "Wyzeruj hasło",
30 "signup.link.login": "Masz już konto, zalogować się?", 30 "password.link.login" : "Zaloguj się na swoje konto",
31 "signup.emailDuplicate": "Użytkownik z takim adresem email już istnieje", 31 "password.link.signup" : "Stwórz darmowe konto",
32 "signup.legal.info": "Poprzez utworzenie konta Franz akceptujesz", 32 "password.noUser" : "Nie znaleziono użytkownika z takim adresem email",
33 "signup.legal.terms": "Warunki świadczenia usług", 33 "password.submit.label" : "Wyślij",
34 "signup.legal.privacy": "Polityka prywatności", 34 "password.successInfo" : "Proszę sprawdzić swój email",
35 "pricing.headline": "Wspomóż aplikację Franz", 35 "pricing.headline" : "Wspieraj Franz",
36 "pricing.support.label": "Wybierz plan wsparcia", 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.link.skipPayment": "Nie chcę wspierać rozwoju aplikacji Franz.", 38 "pricing.support.label" : "Wybierz swój plan wsparcia",
39 "import.headline": "Zaimportuj usługi Franz 4", 39 "service.crashHandler.action" : "Reload {name}",
40 "import.notSupportedHeadline": "Usługi nie są jeszcze wspierane w Franz 5", 40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "import.submit.label": "Zaimportuj usługi", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Chcę dodać usługi ręcznie", 42 "service.crashHandler.text" : "{name} has caused an error.",
43 "invite.submit.label": "Wyślij zaproszenia", 43 "service.disabledHandler.action" : "Enable {name}",
44 "invite.headline.friends": "Zaproś 3 znajomych lub kolegów z pracy", 44 "service.disabledHandler.headline" : "{name} is disabled",
45 "invite.name.label": "Nazwa", 45 "services.getStarted" : "Zacznij",
46 "invite.email.label": "Adres email", 46 "services.welcome" : "Witaj w programie Franz",
47 "invite.skip.label": "Chcę to zrobić później", 47 "settings.account.account.editButton" : "Modyfikuj konta",
48 "subscription.submit.label": "Chcę wspierać rozwój aplikacji Franz", 48 "settings.account.accountType.basic" : "Podstawowe konto",
49 "subscription.paymentSessionError": "Nie można wczytać formularza płatności", 49 "settings.account.accountType.premium" : "Premium Supporter Account",
50 "subscription.includedFeatures": "Płatne konto Franz Premium obejmuje", 50 "settings.account.buttonSave" : "Uaktualnij profil",
51 "subscription.features.onpremise": "Dodawanie lokalnych/hostowanych usług takich jak HipChat", 51 "settings.account.headline" : "Konto",
52 "subscription.features.customServices": "Prywatne usługi dla Ciebie i Twojego zespołu", 52 "settings.account.headlineAccount" : "Informacje o koncie",
53 "subscription.features.encryptedSync": "Szyfrowana synchronizacja sesji", 53 "settings.account.headlineInvoices" : "Faktury",
54 "subscription.features.vpn": "Wsprarcie Proxy i VPN", 54 "settings.account.headlinePassword" : "Zmień hasło",
55 "subscription.features.ads": "Brak reklam, na zawsze!", 55 "settings.account.headlineProfile" : "Uaktualnij profil",
56 "subscription.features.comingSoon": "wkrótce dostępne", 56 "settings.account.headlineSubscription" : "Twoja subskrypcja",
57 "infobar.servicesUpdated": "Twoje usługi zostały zaaktualizowane.", 57 "settings.account.headlineUpgrade" : "Ulepsz swoje konto i wspieraj aplikację Franz",
58 "infobar.updateAvailable": "Aktualizacja aplikacji Franz jest dostępna.", 58 "settings.account.invoiceDownload" : "Pobierz",
59 "infobar.buttonReloadServices": "Przeładuj usługi", 59 "settings.account.manageSubscription.label" : "Zarządzaj swoimi subskrypcjami",
60 "infobar.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacje", 60 "settings.account.mining.active" : "Obecnie wykonujesz {hashes} operacji na sekundę.",
61 "infobar.requiredRequestsFailed": "Nie można wczytać usług i informacji o użytkowniku", 61 "settings.account.mining.cancel" : "Anuluj kopanie",
62 "sidebar.settings": "Ustawienia", 62 "settings.account.mining.moreInformation" : "Zdobądź więcej informacji",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "Dziękuję za wsparcie aplikacji Franz mocą obliczeniową.",
64 "services.welcome": "Witaj w aplikcji Franz", 64 "settings.account.successInfo" : "Twoje zmiany zostały zapisane",
65 "services.getStarted": "Zacznij", 65 "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie",
66 "settings.account.headline": "Konto", 66 "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku",
67 "settings.account.headlineSubscription": "Twoja subskrypcja", 67 "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizację",
68 "settings.account.headlineUpgrade": "Ulepsz swoje konto i wspieraj aplikację Franz", 68 "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje",
69 "settings.account.headlineInvoices": "Faktury", 69 "settings.app.currentVersion" : "Aktualna wersja:",
70 "settings.account.manageSubscription.label": "Zarządzaj swoimi subskrypcjami", 70 "settings.app.form.autoLaunchInBackground" : "Otwórz w tle",
71 "settings.account.accountType.basic": "Podstawowe konto", 71 "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na początku",
72 "settings.account.accountType.premium": "Konto Premium", 72 "settings.app.form.beta" : "Uwzględnij wersje beta",
73 "settings.account.account.editButton": "Edytuj konto", 73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.account.invoiceDownload": "Pobieranie", 74 "settings.app.form.enableSystemTray" : "Pokaż Franza w tacy systemowej",
75 "settings.account.userInfoRequestFailed": "Nie można wczytać informacji o użytkowniku", 75 "settings.app.form.language" : "Język",
76 "settings.account.tryReloadUserInfoRequest": "Spróbuj ponownie", 76 "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikację Franz",
77 "settings.account.headlineProfile": "Aktualizuj profil", 77 "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna",
78 "settings.account.headlineAccount": "Informacje o koncie", 78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.account.headlinePassword": "Zmiana hasła", 79 "settings.app.headline" : "Ustawienia",
80 "settings.account.successInfo": "Zmiany zostały zapisane", 80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.account.buttonSave": "Aktualizuj profil", 81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.account.mining.thankyou": "Dziękuję za wsparcie aplikacji Franz mocą obliczeniową.", 82 "settings.app.headlineGeneral" : "Ogólne",
83 "settings.account.mining.active": "Obecnie wykonujesz {hashes} operacji na sekundę.", 83 "settings.app.headlineLanguage" : "Język",
84 "settings.account.mining.moreInformation": "Dowiedz się więcej", 84 "settings.app.headlineUpdates" : "Aktualizacje",
85 "settings.account.mining.cancel": "Anuluj kopanie", 85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.navigation.availableServices": "Dostępne usługi", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Twoje usługi", 87 "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...",
88 "settings.navigation.account": "Konto", 88 "settings.app.updateStatusSearching" : "Szukam aktualizacji",
89 "settings.navigation.settings": "Ustawienia", 89 "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz",
90 "settings.navigation.logout": "Wylogowanie", 90 "settings.navigation.account" : "Konto",
91 "settings.recipes.headline": "Dostępne usługi", 91 "settings.navigation.availableServices" : "Dostępne usługi",
92 "settings.recipes.mostPopular": "Najpopularniejsze", 92 "settings.navigation.logout" : "Wyloguj",
93 "settings.recipes.all": "Wszystkie usługi", 93 "settings.navigation.settings" : "Ustawienia",
94 "settings.recipes.dev": "Rozwojowe", 94 "settings.navigation.yourServices" : "Twoje usługi",
95 "settings.recipes.nothingFound": "Żadna usługa nie została znaleziona.", 95 "settings.recipes.all" : "Wszystkie usługi",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Usługa została dodana pomyślnie", 96 "settings.recipes.dev" : "Rozwojowe",
97 "settings.service.form.saveButton": "Zapisz usługę", 97 "settings.recipes.headline" : "Dostępne usługi",
98 "settings.service.form.deleteButton": "Usuń usługę", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Dostępne usługi", 99 "settings.recipes.mostPopular" : "Najpopularniejsze",
100 "settings.service.form.yourServices": "Twoje usługi", 100 "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.",
101 "settings.service.form.addServiceHeadline": "Dodaj {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie",
102 "settings.service.form.editServiceHeadline": "Edytuj {name}", 102 "settings.service.error.goBack" : "Wróć do usług",
103 "settings.service.form.tabHosted": "Hostowane", 103 "settings.service.error.headline" : "Błąd",
104 "settings.service.form.tabOnPremise": "Hostowane lokalnie ⭐️", 104 "settings.service.error.message" : "Nie można wczytać przepisu usługi.",
105 "settings.service.form.customUrlValidationError": "Nie można zweryfikować spersonalizowanego {name} serwera.", 105 "settings.service.form.addServiceHeadline" : "Dodaj {name}",
106 "settings.service.form.customUrlPremiumInfo": "Aby dodać usługi hostowane lokalnie, musisz posiadać konto Premium.", 106 "settings.service.form.availableServices" : "Dostępne usługi",
107 "settings.service.form.customUrlUpgradeAccount": "Ulepsz swoje konto", 107 "settings.service.form.customUrl" : "Spersonalizowany serwer",
108 "settings.service.form.indirectMessageInfo": "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Aby dodać usługi hostowane lokalnie, musisz posiadać konto Premium.",
109 "settings.service.error.headline": "Błąd", 109 "settings.service.form.customUrlUpgradeAccount" : "Ulepsz swoje konto",
110 "settings.service.error.goBack": "Wróć do usług", 110 "settings.service.form.customUrlValidationError" : "Nie można zweryfikować spersonalizowanego {name} serwera.",
111 "settings.service.error.message": "Nie można wczytać przepisu usługi.", 111 "settings.service.form.deleteButton" : "Usuń usługę",
112 "settings.services.tooltip.isDisabled": "Usługa jest nieaktywna", 112 "settings.service.form.editServiceHeadline" : "Edytuj {name}",
113 "settings.services.tooltip.notificationsDisabled": "Powiadomienia są nieaktywne", 113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.services.headline": "Twoje usługi", 114 "settings.service.form.enableNotification" : "Aktywuj powiadomienia",
115 "settings.services.noServicesAdded": "Nie dodałeś jeszcze żadnych usług.", 115 "settings.service.form.enableService" : "Aktywuj usługę",
116 "settings.services.discoverServices": "Przeglądaj usługi", 116 "settings.service.form.indirectMessageInfo" : "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Zmiany zostały zapisane", 117 "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości",
118 "settings.services.deletedInfo": "Usługa została usunięta", 118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.app.headline": "Ustawienia", 119 "settings.service.form.name" : "Nazwa",
120 "settings.app.headlineGeneral": "Ogólne", 120 "settings.service.form.saveButton" : "Zapisz usługę",
121 "settings.app.headlineLanguage": "Język", 121 "settings.service.form.tabHosted" : "Hostowane",
122 "settings.app.headlineUpdates": "Aktualizacje", 122 "settings.service.form.tabOnPremise" : "Hostowane lokalnie ⭐️",
123 "settings.app.buttonSearchForUpdate": "Sprawdź czy są dostęne aktualizacje", 123 "settings.service.form.team" : "Zespół",
124 "settings.app.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacje", 124 "settings.service.form.yourServices" : "Twoje usługi",
125 "settings.app.updateStatusSearching": "Szukam aktualizacji", 125 "settings.services.deletedInfo" : "Usługa została usunięta",
126 "settings.app.updateStatusAvailable": "Dostępna aktualizacja, pobieram...", 126 "settings.services.discoverServices" : "Przeglądaj usługi",
127 "settings.app.updateStatusUpToDate": "Używasz najnowszej wersji aplikacji Franz", 127 "settings.services.headline" : "Twoje usługi",
128 "settings.app.form.autoLaunchOnStart": "Uruchom aplikację Franz przy starcie systemu", 128 "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.",
129 "settings.app.form.autoLaunchInBackground": "Uruchom w tle", 129 "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna",
130 "settings.app.form.minimizeToSystemTray": "Zminimalizuj aplikację Franz", 130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.app.form.runInBackground": "Zachowaj aplikację Franz w tle po zamknięciu okna", 131 "settings.services.tooltip.notificationsDisabled" : "Powiadomienia są nieaktywne",
132 "settings.app.form.language": "Język", 132 "settings.services.updatedInfo" : "Zmiany zostały zapisane",
133 "settings.app.form.beta": "Uwzględniaj wersje beta", 133 "settings.user.form.accountType.company" : "Firma",
134 "settings.app.currentVersion": "Obecna wersja:", 134 "settings.user.form.accountType.individual" : "Prywatne",
135 "settings.service.form.name": "Nazwa", 135 "settings.user.form.accountType.label" : "Typ konta",
136 "settings.service.form.enableService": "Aktywuj usługę", 136 "settings.user.form.accountType.non-profit" : "Non-Profit ",
137 "settings.service.form.enableNotification": "Aktywuj powiadomienia", 137 "settings.user.form.currentPassword" : "Obecne hasło",
138 "settings.service.form.team": "Zespół", 138 "settings.user.form.email" : "Adres email",
139 "settings.service.form.customUrl": "Spersonalizowany serwer", 139 "settings.user.form.firstname" : "Imię",
140 "settings.service.form.indirectMessages": "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", 140 "settings.user.form.lastname" : "Nazwisko",
141 "settings.user.form.firstname": "Imię", 141 "settings.user.form.newPassword" : "Nowe hasło",
142 "settings.user.form.lastname": "Nazwisko", 142 "sidebar.addNewService" : "!!!Add new service",
143 "settings.user.form.email": "Adres email", 143 "sidebar.mute" : "Disable audio",
144 "settings.user.form.currentPassword": "Obecne hasło", 144 "sidebar.settings" : "Ustawienia",
145 "settings.user.form.newPassword": "Nowe hasło", 145 "sidebar.unmute" : "Enable audio",
146 "settings.user.form.accountType.label": "Typ konta", 146 "signup.company.label" : "Firma",
147 "settings.user.form.accountType.individual": "Prywatne", 147 "signup.email.label" : "Adres email",
148 "settings.user.form.accountType.non-profit": "Non-Profit", 148 "signup.emailDuplicate" : "Użytkownik z takim adresem email już istnieje",
149 "settings.user.form.accountType.company": "Firma", 149 "signup.firstname.label" : "Imię",
150 "subscription.type.free": "za darmo", 150 "signup.headline" : "Zarejestruj się",
151 "subscription.type.month": "miesiąc", 151 "signup.lastname.label" : "Nazwisko",
152 "subscription.type.year": "rok", 152 "signup.legal.info" : "Poprzez utworzenie konta Franz akceptujesz",
153 "subscription.type.mining": "Wspieraj aplikację Franz mocą obliczeniową", 153 "signup.legal.privacy" : "Polityka prywatności",
154 "subscription.mining.headline": "Jak to działa?", 154 "signup.legal.terms" : "Warunki świadczenia usług",
155 "subscription.mining.experimental": "eksperymentalne", 155 "signup.link.login" : "Masz już konto, zalogować się?",
156 "subscription.mining.line1": "Włączając \"wspieraj mocą obliczeniową\", aplikacja Franz będzie używać około 20-50% mocy Twojego procesora aby kopać kryptowalutę Monero co jest równe około $5/rok.", 156 "signup.password.label" : "Hasło",
157 "subscription.mining.line2": "Będziemy dostosowywać zużycie procesora do stylu Twojej pracy tak aby nie zużywać baterii i nie spowalniać działania urządzenia.", 157 "signup.submit.label" : "Stwórz konto",
158 "subscription.mining.line3": "Tak długo jak kopanie będzie aktywne, będziesz mieć nielimitowany dostęp do wszystkich funkcji dostępnych w koncie Premium.", 158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.mining.moreInformation": "Dowiedz się więcej o tym planie.", 159 "subscription.features.ads" : "Brak reklam, na zawsze!",
160 "subscriptionPopup.buttonCancel": "Anuluj", 160 "subscription.features.comingSoon" : "wkrótce dostępne",
161 "subscriptionPopup.buttonDone": "Zrobione", 161 "subscription.features.customServices" : "Prywatne usługi dla Ciebie i Twojego zespołu",
162 "tabs.item.reload": "Przeładuj", 162 "subscription.features.encryptedSync" : "Szyfrowana synchronizacja sesji",
163 "tabs.item.edit": "Edytuj", 163 "subscription.features.onpremise" : "Dodawanie lokalnych\/hostowanych usług takich jak HipChat",
164 "tabs.item.disableNotifications": "Wyłącz powiadomienia", 164 "subscription.features.vpn" : "Wsprarcie Proxy i VPN",
165 "tabs.item.enableNotification": "Włącz powiadomienia", 165 "subscription.includedFeatures" : "Płatne konto Franz Premium obejmuje",
166 "tabs.item.disableService": "Wyłącz usługę", 166 "subscription.mining.experimental" : "eksperymentalne",
167 "tabs.item.deleteService": "Usuń usługę" 167 "subscription.mining.headline" : "Jak to działa?",
168 "subscription.mining.line1" : "Włączając \"wspieraj mocą obliczeniową\", aplikacja Franz będzie używać około 20-50% mocy Twojego procesora aby kopać kryptowalutę Monero co jest równe około $5\/rok.",
169 "subscription.mining.line2" : "Będziemy dostosowywać zużycie procesora do stylu Twojej pracy tak aby nie zużywać baterii i nie spowalniać działania urządzenia.",
170 "subscription.mining.line3" : "Tak długo jak kopanie będzie aktywne, będziesz mieć nielimitowany dostęp do wszystkich funkcji dostępnych w koncie Premium.",
171 "subscription.mining.moreInformation" : "Dowiedz się więcej o tym planie.",
172 "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"",
173 "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz",
174 "subscription.type.free" : "za darmo",
175 "subscription.type.mining" : "Wspieraj aplikację Franz mocą obliczeniową",
176 "subscription.type.month" : "miesiąc",
177 "subscription.type.year" : "rok",
178 "subscriptionPopup.buttonCancel" : "Anuluj",
179 "subscriptionPopup.buttonDone" : "Zrobione",
180 "tabs.item.deleteService" : "Usuń usługę",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Wyłącz powiadomienia",
183 "tabs.item.disableService" : "Wyłącz usługę",
184 "tabs.item.edit" : "Edytuj",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Włącz powiadomienia",
187 "tabs.item.enableService" : "Aktywuj usługę",
188 "tabs.item.reload" : "Przeładuj",
189 "welcome.loginButton" : "Zaloguj się na swoje konto",
190 "welcome.signupButton" : "Stwórz darmowe konto",
191 "welcome.slogan" : "Komunikator który działa"
168} 192}
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index 8a139a4f5..5a20f387a 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -1,169 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Não foi possível conectar aos serviços online do Franz", 2 "global.api.unhealthy" : "Não foi possível conectar-se aos serviços do Franz",
3 "global.notConnectedToTheInternet": "Você não está conectado à internet.", 3 "global.notConnectedToTheInternet" : "Você não está conectado à internet.",
4 "welcome.signupButton": "Criar uma conta grátis", 4 "import.headline" : "Importe seus serviços do Franz 4",
5 "welcome.loginButton": "Fazer login na sua conta", 5 "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5",
6 "welcome.slogan": "Mensagens que funcionam para você", 6 "import.skip.label" : "Quero adicionar serviços manualmente",
7 "login.headline": "Login", 7 "import.submit.label" : "Importar serviços",
8 "login.email.label": "Endereço de email", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Senha", 9 "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações",
10 "login.submit.label": "Login", 10 "infobar.buttonReloadServices" : "Recarregar serviços",
11 "login.invalidCredentials": "Email ou senha inválida", 11 "infobar.requiredRequestsFailed" : "Não foi possível carregar serviços e informações do usuário",
12 "login.tokenExpired": "Sua sessão expirou, faça o login novamente.", 12 "infobar.servicesUpdated" : "Seus serviços foram atualizados.",
13 "login.serverLogout": "Sua sessão expirou, faça o login novamente.", 13 "infobar.updateAvailable" : "Uma nova atualização do Franz está disponível.",
14 "login.link.signup": "Criar uma conta grátis", 14 "invite.email.label" : "Endereço de email ",
15 "login.link.password": "Trocar a senha", 15 "invite.headline.friends" : "Convide 3 dos seus amigos ou colegas",
16 "password.headline": "Trocar a senha", 16 "invite.name.label" : "Nome",
17 "password.email.label": "Endereço de email", 17 "invite.skip.label" : "Quero fazer isso depois",
18 "password.submit.label": "Enviar", 18 "invite.submit.label" : "Enviar convites",
19 "password.noUser": "Nenhum usuário com este email foi encontrado", 19 "login.email.label" : "Endereço de e-mail",
20 "password.successInfo": "Por favor, verifique o seu email", 20 "login.headline" : "Login",
21 "password.link.signup": "Criar uma conta grátis", 21 "login.invalidCredentials" : "Email ou senha inválida",
22 "password.link.login": "Fazer login na sua conta", 22 "login.link.password" : "Trocar a senha",
23 "signup.headline": "Cadastrar-se", 23 "login.link.signup" : "Criar uma conta gratuita",
24 "signup.firstname.label": "Nome", 24 "login.password.label" : "Senha",
25 "signup.lastname.label": "Sobrenome", 25 "login.serverLogout" : "Sua sessão expirou, faça o login novamente.\",",
26 "signup.email.label": "Endereço de email", 26 "login.submit.label" : "Login",
27 "signup.company.label": "Empresa", 27 "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.",
28 "signup.password.label": "Senha", 28 "password.email.label" : "Endereço de email",
29 "signup.submit.label": "Criar conta", 29 "password.headline" : "Trocar a senha",
30 "signup.link.login": "Já tem uma conta. Fazer login?", 30 "password.link.login" : "Fazer login na sua conta",
31 "signup.emailDuplicate": "Um usuário com esta conta já existe", 31 "password.link.signup" : "Criar uma conta grátis",
32 "signup.legal.info": "Ao criar uma conta Franz você aceita os ", 32 "password.noUser" : "Nenhum usuário com este email foi encontrado",
33 "signup.legal.terms": "Termos de Serviço", 33 "password.submit.label" : "Enviar",
34 "signup.legal.privacy": "Declaração de Privacidade", 34 "password.successInfo" : "Por favor, verifique o seu email",
35 "pricing.headline": "Apoie o Franz", 35 "pricing.headline" : "Apoie o Franz",
36 "pricing.support.label": "Selecione seu plano de apoio", 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.link.skipPayment": "Eu não quero apoiar o desenvolvimento do Franz.", 38 "pricing.support.label" : "Selecione seu plano de apoio",
39 "import.headline": "Importe seus serviços do Franz 4", 39 "service.crashHandler.action" : "Reload {name}",
40 "import.notSupportedHeadline": "Serviços ainda não suportados no Franz 5", 40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "import.submit.label": "Importar serviços", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Eu quero adicionar serviços manualmente", 42 "service.crashHandler.text" : "{name} has caused an error.",
43 "invite.submit.label": "Enviar convites", 43 "service.disabledHandler.action" : "Enable {name}",
44 "invite.headline.friends": "Convide 3 dos seus amigos ou colegas", 44 "service.disabledHandler.headline" : "{name} is disabled",
45 "invite.name.label": "Nome", 45 "services.getStarted" : "Começar",
46 "invite.email.label": "Endereço de email", 46 "services.welcome" : "Bem-vindo ao Franz",
47 "invite.skip.label": "Eu quero fazer isso depois", 47 "settings.account.account.editButton" : "Editar conta",
48 "subscription.submit.label": "Eu quero apoiar o desenvolvimento do Franz", 48 "settings.account.accountType.basic" : "Conta Básica",
49 "subscription.paymentSessionError": "Não foi possível abrir o formulário de pagamento", 49 "settings.account.accountType.premium" : "Conta Apoiador Premium",
50 "subscription.includedFeatures": "Conta Paga Franz Premium inclui", 50 "settings.account.buttonSave" : "Atualizar perfil",
51 "subscription.features.onpremise": "Adicionar serviços locais/hospedados como HipChat", 51 "settings.account.headline" : "Conta",
52 "subscription.features.customServices": "Serviços privados para você e sua equipe", 52 "settings.account.headlineAccount" : "Informações de conta",
53 "subscription.features.encryptedSync": "Sincronização encriptada das sessões", 53 "settings.account.headlineInvoices" : "Recibos",
54 "subscription.features.vpn": "Suporte à proxy & VPN", 54 "settings.account.headlinePassword" : "Mudar senha",
55 "subscription.features.ads": "Sem anúncios, sempre!", 55 "settings.account.headlineProfile" : "Atualizar perfil",
56 "subscription.features.comingSoon": "em breve", 56 "settings.account.headlineSubscription" : "Sua assinatura",
57 "infobar.servicesUpdated": "Seus serviços foram atualizados.", 57 "settings.account.headlineUpgrade" : "Atualize a sua conta & apoie o Franz",
58 "infobar.updateAvailable": "Uma nova atualização do Franz está disponível.", 58 "settings.account.invoiceDownload" : "Download",
59 "infobar.buttonReloadServices": "Recarregar serviços", 59 "settings.account.manageSubscription.label" : "Gerencie a sua assinatura",
60 "infobar.buttonInstallUpdate": "Reiniciar & instalar atualização", 60 "settings.account.mining.active" : "Você está realizando {hashes} cálculos por segundo agora.",
61 "infobar.requiredRequestsFailed": "Não foi possível carregar serviços e informações do usuário", 61 "settings.account.mining.cancel" : "Cancelar mineração",
62 "sidebar.addNewService": "!!!Add new service", 62 "settings.account.mining.moreInformation" : "Obter mais informações",
63 "sidebar.settings": "Ajustes", 63 "settings.account.mining.thankyou" : "Obrigado por apoiar o Franz com poder de processamento.",
64 "services.welcome": "Bem-vindo ao Franz", 64 "settings.account.successInfo" : "Suas mudanças foram salvas",
65 "services.getStarted": "Começar", 65 "settings.account.tryReloadUserInfoRequest" : "Tente novamente",
66 "settings.account.headline": "Conta", 66 "settings.account.userInfoRequestFailed" : "Não foi possível carregar as informações do usuário",
67 "settings.account.headlineSubscription": "Sua assinatura", 67 "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização",
68 "settings.account.headlineUpgrade": "Atualize a sua conta & apoie o Franz", 68 "settings.app.buttonSearchForUpdate" : "Verificar por atualizações",
69 "settings.account.headlineInvoices": "Recibos", 69 "settings.app.currentVersion" : "Versão atual:",
70 "settings.account.manageSubscription.label": "Gerencie a sua assinatura", 70 "settings.app.form.autoLaunchInBackground" : "Abrir no fundo",
71 "settings.account.accountType.basic": "Conta Básica", 71 "settings.app.form.autoLaunchOnStart" : "Abrir o Franz iniciar o sistema",
72 "settings.account.accountType.premium": "Conta Apoiador Premium", 72 "settings.app.form.beta" : "Incluir versões beta",
73 "settings.account.account.editButton": "Editar conta", 73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.account.invoiceDownload": "Download", 74 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema",
75 "settings.account.userInfoRequestFailed": "Não foi possível carregar as informações do usuário", 75 "settings.app.form.language" : "Idioma",
76 "settings.account.tryReloadUserInfoRequest": "Tente novamente", 76 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema",
77 "settings.account.headlineProfile": "Atualizar perfil", 77 "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela",
78 "settings.account.headlineAccount": "Informações de conta", 78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.account.headlinePassword": "Mudar senha", 79 "settings.app.headline" : "Ajustes",
80 "settings.account.successInfo": "Suas mudanças foram salvas", 80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.account.buttonSave": "Atualizar perfil", 81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.account.mining.thankyou": "Obrigado por apoiar o Franz com poder de processamento.", 82 "settings.app.headlineGeneral" : "Geral",
83 "settings.account.mining.active": "Você está realizando {hashes} cálculos por segundo agora.", 83 "settings.app.headlineLanguage" : "Idioma",
84 "settings.account.mining.moreInformation": "Obter mais informações", 84 "settings.app.headlineUpdates" : "Atualizações",
85 "settings.account.mining.cancel": "Cancelar mineração", 85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.navigation.availableServices": "Serviços disponíveis", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Seus serviços", 87 "settings.app.updateStatusAvailable" : "Atualização disponível, fazendo download...",
88 "settings.navigation.account": "Conta", 88 "settings.app.updateStatusSearching" : "Em busca de atualização",
89 "settings.navigation.settings": "Ajustes", 89 "settings.app.updateStatusUpToDate" : "Você está usando a última versão do Franz",
90 "settings.navigation.logout": "Logout", 90 "settings.navigation.account" : "Conta",
91 "settings.recipes.headline": "Serviços disponíveis", 91 "settings.navigation.availableServices" : "Serviços disponíveis",
92 "settings.recipes.mostPopular": "Mais populares", 92 "settings.navigation.logout" : "Logout",
93 "settings.recipes.all": "Todos serviços", 93 "settings.navigation.settings" : "Ajustes",
94 "settings.recipes.dev": "Desenvolvimento", 94 "settings.navigation.yourServices" : "Seus serviços",
95 "settings.recipes.nothingFound": "Desculpe, mas nenhum serviço corresponde a sua pesquisa.", 95 "settings.recipes.all" : "Todos serviços",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Serviço adicionado com sucesso", 96 "settings.recipes.dev" : "Desenvolvimento ",
97 "settings.service.form.saveButton": "Salvar serviço", 97 "settings.recipes.headline" : "Serviços disponíveis",
98 "settings.service.form.deleteButton": "Apagar serviço", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Serviços disponíveis", 99 "settings.recipes.mostPopular" : "Mais populares",
100 "settings.service.form.yourServices": "Seus serviços", 100 "settings.recipes.nothingFound" : "Desculpe, mas nenhum serviço corresponde a sua pesquisa.",
101 "settings.service.form.addServiceHeadline": "Adicionar {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado com sucesso",
102 "settings.service.form.editServiceHeadline": "Editar {name}", 102 "settings.service.error.goBack" : "Voltar aos serviços",
103 "settings.service.form.tabHosted": "Hospedado", 103 "settings.service.error.headline" : "Erro",
104 "settings.service.form.tabOnPremise": "Auto-hospedado ⭐️", 104 "settings.service.error.message" : "Não foi possível carregar a receita de serviço.",
105 "settings.service.form.customUrlValidationError": "Não foi possível validar o servidor personalizado {name}.", 105 "settings.service.form.addServiceHeadline" : "Adicionar {name}",
106 "settings.service.form.customUrlPremiumInfo": "Para adicionar serviços auto-hospedados, você precisa de uma conta Franz Apoiador Premium.", 106 "settings.service.form.availableServices" : "Serviços disponíveis",
107 "settings.service.form.customUrlUpgradeAccount": "Atualize a sua conta", 107 "settings.service.form.customUrl" : "Serviços personalizado",
108 "settings.service.form.indirectMessageInfo": "Você será notificado por todas as mensagens em um canal, não apenas @usuário, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços auto-hospedados, você precisa de uma conta Franz Apoiador Premium.",
109 "settings.service.error.headline": "Erro", 109 "settings.service.form.customUrlUpgradeAccount" : "Atualize a sua conta",
110 "settings.service.error.goBack": "Voltar aos serviços", 110 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor personalizado {name}.",
111 "settings.service.error.message": "Não foi possível carregar a receita de serviço.", 111 "settings.service.form.deleteButton" : "Apagar serviço",
112 "settings.services.tooltip.isDisabled": "Serviço desativado", 112 "settings.service.form.editServiceHeadline" : "Editar {name}",
113 "settings.services.tooltip.notificationsDisabled": "Notificações desativadas", 113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.services.headline": "Seus serviços", 114 "settings.service.form.enableNotification" : "Ativar notificações",
115 "settings.services.noServicesAdded": "Você ainda não adicionou nenhum serviço.", 115 "settings.service.form.enableService" : "Ativar serviço",
116 "settings.services.discoverServices": "Descobrir serviços", 116 "settings.service.form.indirectMessageInfo" : "Você será notificado por todas as mensagens em um canal, não apenas @usuário, @channel, @here, ...",
117 "settings.services.updatedInfo": "Suas mudanças foram salvas", 117 "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens",
118 "settings.services.deletedInfo": "Serviço apagado", 118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.app.headline": "Ajustes", 119 "settings.service.form.name" : "Nome",
120 "settings.app.headlineGeneral": "Geral", 120 "settings.service.form.saveButton" : "Salvar serviço",
121 "settings.app.headlineLanguage": "Idioma", 121 "settings.service.form.tabHosted" : "Hospedado",
122 "settings.app.headlineUpdates": "Atualizações", 122 "settings.service.form.tabOnPremise" : "Auto-hospedado ⭐️",
123 "settings.app.buttonSearchForUpdate": "Verificar por atualizações", 123 "settings.service.form.team" : "Equipe",
124 "settings.app.buttonInstallUpdate": "Reiniciar & instalar atualização", 124 "settings.service.form.yourServices" : "Seus serviços",
125 "settings.app.updateStatusSearching": "Em busca de atualização", 125 "settings.services.deletedInfo" : "Serviço apagado",
126 "settings.app.updateStatusAvailable": "Atualização disponível, fazendo download...", 126 "settings.services.discoverServices" : "Descobrir serviços",
127 "settings.app.updateStatusUpToDate": "Você está usando a última versão do Franz", 127 "settings.services.headline" : "Seus serviços",
128 "settings.app.form.autoLaunchOnStart": "Abrir o Franz iniciar o sistema", 128 "settings.services.noServicesAdded" : "Você ainda não adicionou nenhum serviço.",
129 "settings.app.form.autoLaunchInBackground": "Abrir no fundo", 129 "settings.services.tooltip.isDisabled" : "Serviço desativado",
130 "settings.app.form.enableSystemTray": "Mostrar o Franz na bandeja do sistema", 130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.app.form.minimizeToSystemTray": "Minimizar o Franz para a bandeja do sistema", 131 "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas",
132 "settings.app.form.runInBackground": "Manter o Franz no fundo quando fechar a janela", 132 "settings.services.updatedInfo" : "Suas mudanças foram salvas",
133 "settings.app.form.language": "Idioma", 133 "settings.user.form.accountType.company" : "Empresa",
134 "settings.app.form.beta": "Incluir versões beta", 134 "settings.user.form.accountType.individual" : "Individual",
135 "settings.app.currentVersion": "Versão atual:", 135 "settings.user.form.accountType.label" : "Tipo de conta",
136 "settings.service.form.name": "Nome", 136 "settings.user.form.accountType.non-profit" : "Sem fins lucrativos",
137 "settings.service.form.enableService": "Ativar serviço", 137 "settings.user.form.currentPassword" : "Senha atual",
138 "settings.service.form.enableNotification": "Ativar notificações", 138 "settings.user.form.email" : "Email",
139 "settings.service.form.team": "Equipe", 139 "settings.user.form.firstname" : "Nome",
140 "settings.service.form.customUrl": "Serviços personalizado", 140 "settings.user.form.lastname" : "Sobrenome",
141 "settings.service.form.indirectMessages": "Mostrar avisos para todas as mensagens", 141 "settings.user.form.newPassword" : "Nova senha",
142 "settings.user.form.firstname": "Nome", 142 "sidebar.addNewService" : "Adicionar novo serviço",
143 "settings.user.form.lastname": "Sobrenome", 143 "sidebar.mute" : "Disable audio",
144 "settings.user.form.email": "Email", 144 "sidebar.settings" : "Ajustes",
145 "settings.user.form.currentPassword": "Senha atual", 145 "sidebar.unmute" : "Enable audio",
146 "settings.user.form.newPassword": "Nova senha", 146 "signup.company.label" : "Empresa",
147 "settings.user.form.accountType.label": "Tipo de conta", 147 "signup.email.label" : "Endereço de email",
148 "settings.user.form.accountType.individual": "Individual", 148 "signup.emailDuplicate" : "Um usuário com esta conta já existe",
149 "settings.user.form.accountType.non-profit": "Sem fins lucrativos", 149 "signup.firstname.label" : "Nome",
150 "settings.user.form.accountType.company": "Empresa", 150 "signup.headline" : "Cadastrar-se",
151 "subscription.type.free": "grátis", 151 "signup.lastname.label" : "Sobrenome",
152 "subscription.type.month": "mês", 152 "signup.legal.info" : "Ao criar uma conta Franz você aceita os ",
153 "subscription.type.year": "ano", 153 "signup.legal.privacy" : "Declaração de Privacidade",
154 "subscription.type.mining": "Apoie o Franz com poder de processamento", 154 "signup.legal.terms" : "Termos de Serviço",
155 "subscription.mining.headline": "Como isso funciona?", 155 "signup.link.login" : "Já tem uma conta. Fazer login?",
156 "subscription.mining.experimental": "experimental", 156 "signup.password.label" : "Senha",
157 "subscription.mining.line1": "Habilitando o \"Apoio com poder de processamento\", o Franz vai usar cerca de 20-50% da sua CPU para minerar a criptomoeda Monero que equivale a aproximadamente $ 5/ano.", 157 "signup.submit.label" : "Criar conta",
158 "subscription.mining.line2": "Nós iremos adaptar o uso da CPU baseado nos seus hábitos para não drenar sua bateria nem deixar o seu computador lento.", 158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.mining.line3": "Enquanto o minerador estiver ativo, você terá acesso ilimitado à todas funções do Franz Apoiador Premium.", 159 "subscription.features.ads" : "Sem anúncios, sempre!",
160 "subscription.mining.moreInformation": "Obter mais informações sobre este plano.", 160 "subscription.features.comingSoon" : "em breve",
161 "subscriptionPopup.buttonCancel": "Cancelar", 161 "subscription.features.customServices" : "Serviços privados para você e sua equipe",
162 "subscriptionPopup.buttonDone": "Feito", 162 "subscription.features.encryptedSync" : "Sincronização encriptada das sessões",
163 "tabs.item.reload": "Recarregar", 163 "subscription.features.onpremise" : "Adicionar serviços locais\/hospedados como HipChat",
164 "tabs.item.edit": "Editar", 164 "subscription.features.vpn" : "Suporte à proxy & VPN",
165 "tabs.item.disableNotifications": "Desativar notificações", 165 "subscription.includedFeatures" : "Conta Paga Franz Premium inclui",
166 "tabs.item.enableNotification": "Ativar notificações", 166 "subscription.mining.experimental" : "experimental",
167 "tabs.item.disableService": "Desativar serviço", 167 "subscription.mining.headline" : "Como isso funciona?",
168 "tabs.item.deleteService": "Apagar serviço" 168 "subscription.mining.line1" : "Habilitando o \"Apoio com poder de processamento\", o Franz vai usar cerca de 20-50% da sua CPU para minerar a criptomoeda Monero que equivale a aproximadamente $ 5\/ano.",
169 "subscription.mining.line2" : "Nós iremos adaptar o uso da CPU baseado nos seus hábitos para não drenar sua bateria nem deixar o seu computador lento.",
170 "subscription.mining.line3" : "Enquanto o minerador estiver ativo, você terá acesso ilimitado à todas funções do Franz Apoiador Premium.",
171 "subscription.mining.moreInformation" : "Obter mais informações sobre este plano.",
172 "subscription.paymentSessionError" : "Não foi possível abrir o formulário de pagamento",
173 "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz",
174 "subscription.type.free" : "grátis",
175 "subscription.type.mining" : "Apoie o Franz com poder de processamento",
176 "subscription.type.month" : "mês",
177 "subscription.type.year" : "ano",
178 "subscriptionPopup.buttonCancel" : "Cancelar",
179 "subscriptionPopup.buttonDone" : "Feito",
180 "tabs.item.deleteService" : "Apagar serviço",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Desativar notificações",
183 "tabs.item.disableService" : "Desativar serviço",
184 "tabs.item.edit" : "Editar",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Ativar notificações",
187 "tabs.item.enableService" : "Ativar serviço",
188 "tabs.item.reload" : "Recarregar",
189 "welcome.loginButton" : "Fazer login na sua conta",
190 "welcome.signupButton" : "Criar uma conta grátis",
191 "welcome.slogan" : "Mensagens que funcionam para você"
169} 192}
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
new file mode 100644
index 000000000..dc776c1ad
--- /dev/null
+++ b/src/i18n/locales/pt.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Não foi possível conectar aos serviços do Franz",
3 "global.notConnectedToTheInternet" : "Não estás conectado à internet.",
4 "import.headline" : "Importar os teus 4 serviços Franz",
5 "import.notSupportedHeadline" : "Os serviços não são suportados no Franz 5",
6 "import.skip.label" : "Quero adicionar os serviços manualmente",
7 "import.submit.label" : "Importar serviços",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações",
10 "infobar.buttonReloadServices" : "Recarregar serviços",
11 "infobar.requiredRequestsFailed" : "Não foi possivel carregar os serviços e informações do utilizador",
12 "infobar.servicesUpdated" : "Os teus serviços foram atualizados",
13 "infobar.updateAvailable" : "Uma atualização está disponível",
14 "invite.email.label" : "Endereço de e-mail",
15 "invite.headline.friends" : "Manda 3 convites aos teus amigos ou colegas",
16 "invite.name.label" : "Nome",
17 "invite.skip.label" : "Quero adicionar mais tarde",
18 "invite.submit.label" : "Mandar convites",
19 "login.email.label" : "Endereço de e-mail",
20 "login.headline" : "Registar",
21 "login.invalidCredentials" : " O email ou a password estão incorretos",
22 "login.link.password" : "Repor a minha password",
23 "login.link.signup" : "Criar uma conta gratuita",
24 "login.password.label" : "Password",
25 "login.serverLogout" : "A tua sessão expirou, por favor, volta a fazer login.",
26 "login.submit.label" : "Iniciar Sessão",
27 "login.tokenExpired" : "A tua sessão expirou, por favor, volta a fazer login.",
28 "password.email.label" : "Endereço de e-mail",
29 "password.headline" : "Repor a minha password",
30 "password.link.login" : "Fazer login",
31 "password.link.signup" : "Criar uma conta gratuita",
32 "password.noUser" : "Não existe nenhuma conta associada a esse email",
33 "password.submit.label" : "Submeter",
34 "password.successInfo" : "Por favor, revê o teu email",
35 "pricing.headline" : "Apoia o Franz",
36 "pricing.link.skipPayment" : "Não quero ajudar no desenvolvimento do Franz",
37 "pricing.submit.label" : "Quero ajudar o desenvolvimento do Franz",
38 "pricing.support.label" : "Seleciona o teu plano",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Vamos começar",
46 "services.welcome" : "Bem-vindo ao Franz",
47 "settings.account.account.editButton" : "Editar conta",
48 "settings.account.accountType.basic" : "Conta básica",
49 "settings.account.accountType.premium" : "Conta Premium, a ajudar o Franz",
50 "settings.account.buttonSave" : "Atualizar o perfil",
51 "settings.account.headline" : "Conta",
52 "settings.account.headlineAccount" : "Informação da conta",
53 "settings.account.headlineInvoices" : "Faturas",
54 "settings.account.headlinePassword" : "Mudar password",
55 "settings.account.headlineProfile" : "Actualizar o perfil",
56 "settings.account.headlineSubscription" : "A tua subscrição",
57 "settings.account.headlineUpgrade" : "Atualiza a tua conta e ajuda o Franz",
58 "settings.account.invoiceDownload" : "Descarregar",
59 "settings.account.manageSubscription.label" : "Gerir as minhas subscrições",
60 "settings.account.mining.active" : "Agora, estás a executar {hashes} hashes por segundo",
61 "settings.account.mining.cancel" : "Cancelar mineração",
62 "settings.account.mining.moreInformation" : "Mais informação",
63 "settings.account.mining.thankyou" : "Obrigado por ajudares o Franz com o teu poder de processamento",
64 "settings.account.successInfo" : "As tuas mudanças foram feitas com sucesso",
65 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente",
66 "settings.account.userInfoRequestFailed" : "Não é possível carregar a informação do utilizador.",
67 "settings.app.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações",
68 "settings.app.buttonSearchForUpdate" : "Procurar por atualizações",
69 "settings.app.currentVersion" : "Versão atual",
70 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano",
71 "settings.app.form.autoLaunchOnStart" : "Inicar o Franz quando inciar o computador",
72 "settings.app.form.beta" : "Incluir versões instáveis (beta)",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema",
75 "settings.app.form.language" : "Idioma:",
76 "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",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Definições",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "Geral",
83 "settings.app.headlineLanguage" : "Idioma:",
84 "settings.app.headlineUpdates" : "Atualizações",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Atualização disponivel, a descarregar...",
88 "settings.app.updateStatusSearching" : "Está a procurar atualizações",
89 "settings.app.updateStatusUpToDate" : "Estás a usar a última versão do Franz",
90 "settings.navigation.account" : "Conta",
91 "settings.navigation.availableServices" : "Serviços disponíveis",
92 "settings.navigation.logout" : "Terminar Sessão",
93 "settings.navigation.settings" : "Definições",
94 "settings.navigation.yourServices" : "Os teus serviços",
95 "settings.recipes.all" : "Todos os serviços",
96 "settings.recipes.dev" : "Desenvolvimento",
97 "settings.recipes.headline" : "Serviços disponíveis",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Os mais populares",
100 "settings.recipes.nothingFound" : "Desculpa, mas não existe nenhum serviço com este termo.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado",
102 "settings.service.error.goBack" : "Voltar aos serviços",
103 "settings.service.error.headline" : "Erro",
104 "settings.service.error.message" : "Não foi possível carregar a receita do serviço.",
105 "settings.service.form.addServiceHeadline" : "Adicionar {name}",
106 "settings.service.form.availableServices" : "Serviços disponíveis",
107 "settings.service.form.customUrl" : "Servidor personalizado",
108 "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços de hospedagem própria, precisas de uma Conta Premium Franz.",
109 "settings.service.form.customUrlUpgradeAccount" : "Atualizar a conta",
110 "settings.service.form.customUrlValidationError" : "Não foi possível validar o servidor {nome}.",
111 "settings.service.form.deleteButton" : "Apagar serviço",
112 "settings.service.form.editServiceHeadline" : "Editar {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Ativar notificações",
115 "settings.service.form.enableService" : "Ativar serviço",
116 "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",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "Nome",
120 "settings.service.form.saveButton" : "Guardar serviço",
121 "settings.service.form.tabHosted" : "Hospedado",
122 "settings.service.form.tabOnPremise" : "Hospedado por si próprio ⭐️",
123 "settings.service.form.team" : "Equipa",
124 "settings.service.form.yourServices" : "Os teus serviços",
125 "settings.services.deletedInfo" : "O serviço foi apagado",
126 "settings.services.discoverServices" : "Descobrir serviços",
127 "settings.services.headline" : "Os teus serviços",
128 "settings.services.noServicesAdded" : "Ainda não adicionaste nenhum serviço.",
129 "settings.services.tooltip.isDisabled" : "O serviço está desativado",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "As notificações estão desabilitadas",
132 "settings.services.updatedInfo" : "As alterações foram guardadas",
133 "settings.user.form.accountType.company" : "Empresa",
134 "settings.user.form.accountType.individual" : "Individual",
135 "settings.user.form.accountType.label" : "Tipo de conta",
136 "settings.user.form.accountType.non-profit" : "Sem fins lucrativos",
137 "settings.user.form.currentPassword" : "Password atual",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "Nova password",
142 "sidebar.addNewService" : "Adicionar um novo serviço",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Definições",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Empresa",
147 "signup.email.label" : "Endereço de e-mail",
148 "signup.emailDuplicate" : "Uma conta já tem esse email associado",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Iniciar Sessão",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "Ao criar uma conta Franz, aceitas",
153 "signup.legal.privacy" : "Declaração de privacidade",
154 "signup.legal.terms" : "Termos de Serviço",
155 "signup.link.login" : "Já tens uma conta?",
156 "signup.password.label" : "Password",
157 "signup.submit.label" : "Criar uma Conta",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "Sem anúncios, para sempre!",
160 "subscription.features.comingSoon" : "Em breve!",
161 "subscription.features.customServices" : "Serviços privados para ti e para os teus amigos\/colegas",
162 "subscription.features.encryptedSync" : "Sincronização encriptada de serviços",
163 "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat",
164 "subscription.features.vpn" : "Suporte para proxy\/VPN",
165 "subscription.includedFeatures" : "Ao pagares para o Franz Premium, tens acesso a",
166 "subscription.mining.experimental" : "experimental",
167 "subscription.mining.headline" : "Como é que isto funciona?",
168 "subscription.mining.line1" : "Ao habilitar \\\"Ajudar com poder de processamento\\\", o Franz vai usar cerca de 20-50% do teu CPU para minerar Monero que equivale aproximadamente a $5\/ano.",
169 "subscription.mining.line2" : "Vamos adaptar o uso da CPU com base no teu comportamento de trabalho para não drenar a bateria ou diminuir a velocidade da máquina.",
170 "subscription.mining.line3" : "Enquanto a mineração estiver ativa, terás acesso ilimitado a todas as Características de Suporte Premium da Franz.",
171 "subscription.mining.moreInformation" : "Obter informação sobre este plano.",
172 "subscription.paymentSessionError" : "Erro no serviço de pagamento",
173 "subscription.submit.label" : "Quero ajudar o desenvolvimento do Franz",
174 "subscription.type.free" : "Gratuito",
175 "subscription.type.mining" : "Ajudar o Franz com poder de processamento",
176 "subscription.type.month" : "mês",
177 "subscription.type.year" : "ano",
178 "subscriptionPopup.buttonCancel" : "Cancelar",
179 "subscriptionPopup.buttonDone" : "Concluído",
180 "tabs.item.deleteService" : "Apagar serviço",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Desativar notificações",
183 "tabs.item.disableService" : "Desativar serviço",
184 "tabs.item.edit" : "Editar",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Ativar notificações",
187 "tabs.item.enableService" : "Ativar serviço",
188 "tabs.item.reload" : "Recarregar",
189 "welcome.loginButton" : "Fazer login",
190 "welcome.signupButton" : "Criar uma conta gratuita",
191 "welcome.slogan" : "Messaging that works for you"
192}
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 97b746097..62a8a0f84 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -1,169 +1,192 @@
1{ 1{
2 "global.api.unhealthy": "Невозможно подключиться к сервисам Franz", 2 "global.api.unhealthy" : "Невозможно подключиться к сервисам Franz",
3 "global.notConnectedToTheInternet": "Нет Интернет-соединения", 3 "global.notConnectedToTheInternet" : "Нет Интернет-соединения",
4 "welcome.signupButton": "Создать аккаунт", 4 "import.headline" : "Импортировать сервисы Franz 4",
5 "welcome.loginButton": "Вход", 5 "import.notSupportedHeadline" : "Сервисы еще не поддержаны в Franz 5",
6 "welcome.slogan": "Общение, которое просто работает", 6 "import.skip.label" : "Я хочу добавить сервисы вручную",
7 "login.headline": "Регистрация", 7 "import.submit.label" : "Импортировать сервисы",
8 "login.email.label": "Email адрес", 8 "infobar.buttonChangelog" : "What is new?",
9 "login.password.label": "Пароль", 9 "infobar.buttonInstallUpdate" : "Перезапустить и обновить",
10 "login.submit.label": "Регистрация", 10 "infobar.buttonReloadServices" : "Перезагрузить сервисы",
11 "login.invalidCredentials": "Неправильный email или пароль", 11 "infobar.requiredRequestsFailed" : "Невозможно загрузить сервисы и информацию пользователя",
12 "login.tokenExpired": "Сессия устарела, пожалуйста, войдите снова.", 12 "infobar.servicesUpdated" : "Ваши сервисы были обновлены.",
13 "login.serverLogout": "Сессия устарела, пожалуйста, войдите снова.", 13 "infobar.updateAvailable" : "Доступно обновление Franz.",
14 "login.link.signup": "Создать бесплатный аккаунт", 14 "invite.email.label" : "Email адрес",
15 "login.link.password": "Восстановить пароль", 15 "invite.headline.friends" : "Пригласите 3х друзей или коллег",
16 "password.headline": "Восстановление пароля", 16 "invite.name.label" : "Имя",
17 "password.email.label": "Email адрес", 17 "invite.skip.label" : "Я сделаю это позже",
18 "password.submit.label": "Отправить", 18 "invite.submit.label" : "Выслать приглашения",
19 "password.noUser": "Не найдено пользователя с таким email", 19 "login.email.label" : "Email адрес",
20 "password.successInfo": "Проверьте Ваш email", 20 "login.headline" : "Регистрация",
21 "password.link.signup": "Создать аккаунт", 21 "login.invalidCredentials" : "Неправильный email или пароль",
22 "password.link.login": "Вход", 22 "login.link.password" : "Восстановить пароль",
23 "signup.headline": "Регистрация", 23 "login.link.signup" : "Создать бесплатный аккаунт",
24 "signup.firstname.label": "Имя", 24 "login.password.label" : "Пароль",
25 "signup.lastname.label": "Фамилия", 25 "login.serverLogout" : "Сессия устарела, пожалуйста, войдите снова.",
26 "signup.email.label": "Email адрес", 26 "login.submit.label" : "Регистрация",
27 "signup.company.label": "Организация", 27 "login.tokenExpired" : "Сессия устарела, пожалуйста, войдите снова.",
28 "signup.password.label": "Пароль", 28 "password.email.label" : "Email адрес",
29 "signup.submit.label": "Создать аккаунт", 29 "password.headline" : "Восстановление пароля",
30 "signup.link.login": "Уже есть аккаунт, войти?", 30 "password.link.login" : "Вход",
31 "signup.emailDuplicate": "Пользователь с указанным email уже существует", 31 "password.link.signup" : "Создать аккаунт",
32 "signup.legal.info": "Создавая аккаунт Franz, Вы принимаете", 32 "password.noUser" : "Не найдено пользователя с таким email",
33 "signup.legal.terms": "Условия обслуживания", 33 "password.submit.label" : "Отправить",
34 "signup.legal.privacy": "Политика конфиденциальности", 34 "password.successInfo" : "Проверьте Ваш email",
35 "pricing.headline": "Поддержать Franz", 35 "pricing.headline" : "Поддержать Franz",
36 "pricing.support.label": "Выберите план поддержки", 36 "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.",
37 "pricing.submit.label": "Я хочу поддержать разработку Franz", 37 "pricing.submit.label" : "Я хочу поддержать разработку Franz",
38 "pricing.link.skipPayment": "Я не хочу поддерживать разработку Franz.", 38 "pricing.support.label" : "Выберите план поддержки",
39 "import.headline": "Импортировать сервисы Franz 4", 39 "service.crashHandler.action" : "Reload {name}",
40 "import.notSupportedHeadline": "Сервисы еще не поддержаны в Franz 5", 40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "import.submit.label": "Импортировать сервисы", 41 "service.crashHandler.headline" : "Oh no!",
42 "import.skip.label": "Я хочу добавить сервисы вручную", 42 "service.crashHandler.text" : "{name} has caused an error.",
43 "invite.submit.label": "Выслать приглашения", 43 "service.disabledHandler.action" : "Enable {name}",
44 "invite.headline.friends": "Пригласите 3х друзей или коллег", 44 "service.disabledHandler.headline" : "{name} is disabled",
45 "invite.name.label": "Имя", 45 "services.getStarted" : "Начать работу",
46 "invite.email.label": "Email адрес", 46 "services.welcome" : "Добро пожаловать во Franz",
47 "invite.skip.label": "Я сделаю это позже", 47 "settings.account.account.editButton" : "Редактировать аккаунт",
48 "subscription.submit.label": "Я хочу поддержать разработку Franz", 48 "settings.account.accountType.basic" : "Базовый аккаунт",
49 "subscription.paymentSessionError": "Невозможно загрузить форму оплаты", 49 "settings.account.accountType.premium" : "Премиум аккаунт",
50 "subscription.includedFeatures": "Оплаченный Franz Премиум аккаунт включает", 50 "settings.account.buttonSave" : "Сохранить изменения",
51 "subscription.features.onpremise": "Добавить облачные службы или службы со своим хостингом типа HipChat", 51 "settings.account.headline" : "Аккаунт",
52 "subscription.features.customServices": "Настраиваемые сервисы для Вас и Вашей команды", 52 "settings.account.headlineAccount" : "Информация аккаунта",
53 "subscription.features.encryptedSync": "Шифрованная синхронизация сессии", 53 "settings.account.headlineInvoices" : "Счета",
54 "subscription.features.vpn": "Поддержка прокси и VPN", 54 "settings.account.headlinePassword" : "Сменить пароль",
55 "subscription.features.ads": "Без рекламы, навсегда!", 55 "settings.account.headlineProfile" : "Обновить профиль",
56 "subscription.features.comingSoon": "следите за обновлениями", 56 "settings.account.headlineSubscription" : "Ваша подписка",
57 "infobar.servicesUpdated": "Ваши сервисы были обновлены.", 57 "settings.account.headlineUpgrade" : "Улучшить аккаунт и поддержать Franz",
58 "infobar.updateAvailable": "Доступно обновление Franz.", 58 "settings.account.invoiceDownload" : "Скачать",
59 "infobar.buttonReloadServices": "Перезагрузить сервисы", 59 "settings.account.manageSubscription.label" : "Управление подпиской",
60 "infobar.buttonInstallUpdate": "Перезапустить и обновить", 60 "settings.account.mining.active" : "Вы выполняете {hashes} вычислений в секунду.",
61 "infobar.requiredRequestsFailed": "Невозможно загрузить сервисы и информацию пользователя", 61 "settings.account.mining.cancel" : "Отменить майнинг",
62 "sidebar.settings": "Настройки", 62 "settings.account.mining.moreInformation" : "Больше информации",
63 "sidebar.addNewService": "!!!Add new service", 63 "settings.account.mining.thankyou" : "Спасибо за поддержку Franz Вашими процессорными мощностями.",
64 "services.welcome": "Добро пожаловать во Franz", 64 "settings.account.successInfo" : "Изменения сохранены",
65 "services.getStarted": "Начать работу", 65 "settings.account.tryReloadUserInfoRequest" : "Попробовать снова",
66 "settings.account.headline": "Аккаунт", 66 "settings.account.userInfoRequestFailed" : "Невозможно загрузить информацию пользователя",
67 "settings.account.headlineSubscription": "Ваша подписка", 67 "settings.app.buttonInstallUpdate" : "Перезапустить и обновить",
68 "settings.account.headlineUpgrade": "Улучшить аккаунт и поддержать Franz", 68 "settings.app.buttonSearchForUpdate" : "Проверить обновления",
69 "settings.account.headlineInvoices": "Счета", 69 "settings.app.currentVersion" : "Текущая версия:",
70 "settings.account.manageSubscription.label": "Управление подпиской", 70 "settings.app.form.autoLaunchInBackground" : "Открывать в фоне",
71 "settings.account.accountType.basic": "Базовый аккаунт", 71 "settings.app.form.autoLaunchOnStart" : "Запускать Franz при старте",
72 "settings.account.accountType.premium": "Премиум аккаунт", 72 "settings.app.form.beta" : "Включая бета версии",
73 "settings.account.account.editButton": "Редактировать аккаунт", 73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.account.invoiceDownload": "Скачать", 74 "settings.app.form.enableSystemTray" : "Показывать Franz в трее",
75 "settings.account.userInfoRequestFailed": "Невозможно загрузить информацию пользователя", 75 "settings.app.form.language" : "Язык",
76 "settings.account.tryReloadUserInfoRequest": "Попробовать снова", 76 "settings.app.form.minimizeToSystemTray" : "Сворачивать Franz в трей",
77 "settings.account.headlineProfile": "Обновить профиль", 77 "settings.app.form.runInBackground" : "Оставлять Franz в фоне при закрытии окна",
78 "settings.account.headlineAccount": "Информация аккаунта", 78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.account.headlinePassword": "Сменить пароль", 79 "settings.app.headline" : "Настройки",
80 "settings.account.successInfo": "Изменения сохранены", 80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.account.buttonSave": "Сохранить изменения", 81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.account.mining.thankyou": "Спасибо за поддержку Franz Вашими процессорными мощностями.", 82 "settings.app.headlineGeneral" : "Общие",
83 "settings.account.mining.active": "Вы выполняете {hashes} вычислений в секунду.", 83 "settings.app.headlineLanguage" : "Язык",
84 "settings.account.mining.moreInformation": "Больше информации", 84 "settings.app.headlineUpdates" : "Обновления",
85 "settings.account.mining.cancel": "Отменить майнинг", 85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.navigation.availableServices": "Доступные сервисы", 86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.navigation.yourServices": "Ваши сервисы", 87 "settings.app.updateStatusAvailable" : "Доступно обновление, загрука...",
88 "settings.navigation.account": "Аккаунт", 88 "settings.app.updateStatusSearching" : "Поиск обновлений",
89 "settings.navigation.settings": "Настройки", 89 "settings.app.updateStatusUpToDate" : "Вы используете актуальную версию Franz",
90 "settings.navigation.logout": "Выход", 90 "settings.navigation.account" : "Аккаунт",
91 "settings.recipes.headline": "Доступные сервисы", 91 "settings.navigation.availableServices" : "Доступные сервисы",
92 "settings.recipes.mostPopular": "Популярные", 92 "settings.navigation.logout" : "Выход",
93 "settings.recipes.all": "Все сервисы", 93 "settings.navigation.settings" : "Настройки",
94 "settings.recipes.dev": "Разработка", 94 "settings.navigation.yourServices" : "Ваши сервисы",
95 "settings.recipes.nothingFound": "Ничего не найдено по Вашему запросу.", 95 "settings.recipes.all" : "Все сервисы",
96 "settings.recipes.servicesSuccessfulAddedInfo": "Сервис успешно добавлен", 96 "settings.recipes.dev" : "Разработка",
97 "settings.service.form.saveButton": "Сохранить сервис", 97 "settings.recipes.headline" : "Доступные сервисы",
98 "settings.service.form.deleteButton": "Удалить сервис", 98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.service.form.availableServices": "Доступные сервисы", 99 "settings.recipes.mostPopular" : "Популярные",
100 "settings.service.form.yourServices": "Ваши сервисы", 100 "settings.recipes.nothingFound" : "Ничего не найдено по Вашему запросу.",
101 "settings.service.form.addServiceHeadline": "Добавление {name}", 101 "settings.recipes.servicesSuccessfulAddedInfo" : "Сервис успешно добавлен",
102 "settings.service.form.editServiceHeadline": "Редактирование {name}", 102 "settings.service.error.goBack" : "Вернуться к сервисам",
103 "settings.service.form.tabHosted": "Hosted", 103 "settings.service.error.headline" : "Ошибка",
104 "settings.service.form.tabOnPremise": "Свой хостинг ⭐️", 104 "settings.service.error.message" : "Невозможно загрузить рецепт сервиса.",
105 "settings.service.form.customUrlValidationError": "Невозможно проверить сервер {name}.", 105 "settings.service.form.addServiceHeadline" : "Добавление {name}",
106 "settings.service.form.customUrlPremiumInfo": "Для добавния сервиса на своем хостинге, необходим аккаунт Franz Premium.", 106 "settings.service.form.availableServices" : "Доступные сервисы",
107 "settings.service.form.customUrlUpgradeAccount": "Улучшить аккаунт", 107 "settings.service.form.customUrl" : "Адрес сервера",
108 "settings.service.form.indirectMessageInfo": "Вы будете получать уведомления для всех сообщений, не только для @username, @channel, @here, ...", 108 "settings.service.form.customUrlPremiumInfo" : "Для добавния сервиса на своем хостинге, необходим аккаунт Franz Premium.",
109 "settings.service.error.headline": "Ошибка", 109 "settings.service.form.customUrlUpgradeAccount" : "Улучшить аккаунт",
110 "settings.service.error.goBack": "Вернуться к сервисам", 110 "settings.service.form.customUrlValidationError" : "Невозможно проверить сервер {name}.",
111 "settings.service.error.message": "Невозможно загрузить рецепт сервиса.", 111 "settings.service.form.deleteButton" : "Удалить сервис",
112 "settings.services.tooltip.isDisabled": "Сервис отключен", 112 "settings.service.form.editServiceHeadline" : "Редактирование {name}",
113 "settings.services.tooltip.notificationsDisabled": "Уведомления отключены", 113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.services.headline": "Ваши сервисы", 114 "settings.service.form.enableNotification" : "Включить уведомления",
115 "settings.services.noServicesAdded": "У Вас пока нет сервисов", 115 "settings.service.form.enableService" : "Включить сервис",
116 "settings.services.discoverServices": "Найти сервисы", 116 "settings.service.form.indirectMessageInfo" : "Вы будете получать уведомления для всех сообщений, не только для @username, @channel, @here, ...",
117 "settings.services.updatedInfo": "Изменения сохранены", 117 "settings.service.form.indirectMessages" : "Показывать значок уведомлений для всех новых сообщений",
118 "settings.services.deletedInfo": "Сервис удален", 118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.app.headline": "Настройки", 119 "settings.service.form.name" : "Название",
120 "settings.app.headlineGeneral": "Общие", 120 "settings.service.form.saveButton" : "Сохранить сервис",
121 "settings.app.headlineLanguage": "Язык", 121 "settings.service.form.tabHosted" : "Hosted",
122 "settings.app.headlineUpdates": "Обновления", 122 "settings.service.form.tabOnPremise" : "Свой хостинг ⭐️",
123 "settings.app.buttonSearchForUpdate": "Проверить обновления", 123 "settings.service.form.team" : "Команда",
124 "settings.app.buttonInstallUpdate": "Перезапустить и обновить", 124 "settings.service.form.yourServices" : "Ваши сервисы",
125 "settings.app.updateStatusSearching": "Поиск обновлений", 125 "settings.services.deletedInfo" : "Сервис удален",
126 "settings.app.updateStatusAvailable": "Доступно обновление, загрука...", 126 "settings.services.discoverServices" : "Найти сервисы",
127 "settings.app.updateStatusUpToDate": "Вы используете актуальную версию Franz", 127 "settings.services.headline" : "Ваши сервисы",
128 "settings.app.form.autoLaunchOnStart": "Запускать Franz при старте", 128 "settings.services.noServicesAdded" : "У Вас пока нет сервисов",
129 "settings.app.form.autoLaunchInBackground": "Открывать в фоне", 129 "settings.services.tooltip.isDisabled" : "Сервис отключен",
130 "settings.app.form.enableSystemTray": "Показывать Franz в трее", 130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.app.form.minimizeToSystemTray": "Сворачивать Franz в трей", 131 "settings.services.tooltip.notificationsDisabled" : "Уведомления отключены",
132 "settings.app.form.runInBackground": "Оставлять Franz в фоне при закрытии окна", 132 "settings.services.updatedInfo" : "Изменения сохранены",
133 "settings.app.form.language": "Язык", 133 "settings.user.form.accountType.company" : "Компания",
134 "settings.app.form.beta": "Включая бета версии", 134 "settings.user.form.accountType.individual" : "Индивидуальный",
135 "settings.app.currentVersion": "Текущая версия:", 135 "settings.user.form.accountType.label" : "Тип аккаунта",
136 "settings.service.form.name": "Название", 136 "settings.user.form.accountType.non-profit" : "Некоммерческий",
137 "settings.service.form.enableService": "Включить сервис", 137 "settings.user.form.currentPassword" : "Текущий пароль",
138 "settings.service.form.enableNotification": "Включить уведомления", 138 "settings.user.form.email" : "Email",
139 "settings.service.form.team": "Команда", 139 "settings.user.form.firstname" : "Имя",
140 "settings.service.form.customUrl": "Адрес сервера", 140 "settings.user.form.lastname" : "Фамилия",
141 "settings.service.form.indirectMessages": "Показывать значок уведомлений для всех новых сообщений", 141 "settings.user.form.newPassword" : "Новый пароль",
142 "settings.user.form.firstname": "Имя", 142 "sidebar.addNewService" : "!!!Add new service",
143 "settings.user.form.lastname": "Фамилия", 143 "sidebar.mute" : "Disable audio",
144 "settings.user.form.email": "Email", 144 "sidebar.settings" : "Настройки",
145 "settings.user.form.currentPassword": "Текущий пароль", 145 "sidebar.unmute" : "Enable audio",
146 "settings.user.form.newPassword": "Новый пароль", 146 "signup.company.label" : "Организация",
147 "settings.user.form.accountType.label": "Тип аккаунта", 147 "signup.email.label" : "Email адрес",
148 "settings.user.form.accountType.individual": "Индивидуальный", 148 "signup.emailDuplicate" : "Пользователь с указанным email уже существует",
149 "settings.user.form.accountType.non-profit": "Некоммерческий", 149 "signup.firstname.label" : "Имя",
150 "settings.user.form.accountType.company": "Компания", 150 "signup.headline" : "Регистрация",
151 "subscription.type.free": "бесплатно", 151 "signup.lastname.label" : "Фамилия",
152 "subscription.type.month": "месяц", 152 "signup.legal.info" : "Создавая аккаунт Franz, Вы принимаете",
153 "subscription.type.year": "год", 153 "signup.legal.privacy" : "Политика конфиденциальности",
154 "subscription.type.mining": "Поддерживать Franz, предоставляя процессорную мощность", 154 "signup.legal.terms" : "Условия обслуживания",
155 "subscription.mining.headline": "Как это работает?", 155 "signup.link.login" : "Уже есть аккаунт, войти?",
156 "subscription.mining.experimental": "экспериментально", 156 "signup.password.label" : "Пароль",
157 "subscription.mining.line1": "Включая \"Поддерживать Franz, предоставляя процессорную мощность\", Franz будет использовать 20-50% процессорного времени для майнинга криптовалюты Monero в примерном объеме 5$/год.", 157 "signup.submit.label" : "Создать аккаунт",
158 "subscription.mining.line2": "Мы будем регулировать использование процессора, чтобы не садить батарею и не мешать Вашей работе", 158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.mining.line3": "Пока разрешен майнинг, Вам будут достуны все возможности Franz Premium без ограничений", 159 "subscription.features.ads" : "Без рекламы, навсегда!",
160 "subscription.mining.moreInformation": "Узнать больше об этом плане.", 160 "subscription.features.comingSoon" : "следите за обновлениями",
161 "subscriptionPopup.buttonCancel": "Отмена", 161 "subscription.features.customServices" : "Настраиваемые сервисы для Вас и Вашей команды",
162 "subscriptionPopup.buttonDone": "Готово", 162 "subscription.features.encryptedSync" : "Шифрованная синхронизация сессии",
163 "tabs.item.reload": "Перезагрузить", 163 "subscription.features.onpremise" : "Добавить облачные службы или службы со своим хостингом типа HipChat",
164 "tabs.item.edit": "Редактировать", 164 "subscription.features.vpn" : "Поддержка прокси и VPN",
165 "tabs.item.disableNotifications": "Отключить уведомления", 165 "subscription.includedFeatures" : "Оплаченный Franz Премиум аккаунт включает",
166 "tabs.item.enableNotification": "Включить уведомления", 166 "subscription.mining.experimental" : "экспериментально",
167 "tabs.item.disableService": "Отключить сервис", 167 "subscription.mining.headline" : "Как это работает?\",",
168 "tabs.item.deleteService": "Удалить сервис" 168 "subscription.mining.line1" : "Включая \"Поддерживать Franz, предоставляя процессорную мощность\", Franz будет использовать 20-50% процессорного времени для майнинга криптовалюты Monero в примерном объеме 5$\/год.",
169 "subscription.mining.line2" : "Мы будем регулировать использование процессора, чтобы не садить батарею и не мешать Вашей работе",
170 "subscription.mining.line3" : "Пока разрешен майнинг, Вам будут достуны все возможности Franz Premium без ограничений",
171 "subscription.mining.moreInformation" : "Узнать больше об этом плане.",
172 "subscription.paymentSessionError" : "Невозможно загрузить форму оплаты",
173 "subscription.submit.label" : "Я хочу поддержать разработку Franz",
174 "subscription.type.free" : "бесплатно",
175 "subscription.type.mining" : "Поддерживать Franz, предоставляя процессорную мощность",
176 "subscription.type.month" : "месяц",
177 "subscription.type.year" : "год",
178 "subscriptionPopup.buttonCancel" : "Отмена",
179 "subscriptionPopup.buttonDone" : "Готово",
180 "tabs.item.deleteService" : "Удалить сервис",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Отключить уведомления",
183 "tabs.item.disableService" : "Отключить сервис",
184 "tabs.item.edit" : "Редактировать",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Включить уведомления",
187 "tabs.item.enableService" : "Включить сервис",
188 "tabs.item.reload" : "Перезагрузить",
189 "welcome.loginButton" : "Вход",
190 "welcome.signupButton" : "Создать аккаунт",
191 "welcome.slogan" : "Общение, которое просто работает"
169} 192}
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
new file mode 100644
index 000000000..d8415762d
--- /dev/null
+++ b/src/i18n/locales/sk.json
@@ -0,0 +1,192 @@
1{
2 "global.api.unhealthy" : "Franz sa nemôže pripojit k online službám",
3 "global.notConnectedToTheInternet" : "Nie ste pripojený k internetu",
4 "import.headline" : "Importovať služby z Franz 4",
5 "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5",
6 "import.skip.label" : "Chcem pridať služby manuálne",
7 "import.submit.label" : "Importovať služby",
8 "infobar.buttonChangelog" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Reštartovať a inštalovať aktualizáciu",
10 "infobar.buttonReloadServices" : "Obnoviť služby",
11 "infobar.requiredRequestsFailed" : "Nie je možné načítať služby a informácie o užívateľovi",
12 "infobar.servicesUpdated" : "Vaše služby boli aktualizované.",
13 "infobar.updateAvailable" : "Nová aktualizácia Franz je k dispozícii.",
14 "invite.email.label" : "E-mailová adresa",
15 "invite.headline.friends" : "Pozvite 3 priateľov alebo kolegov",
16 "invite.name.label" : "Meno",
17 "invite.skip.label" : "Spravím to neskôr",
18 "invite.submit.label" : "Poslať pozvánky",
19 "login.email.label" : "Emailová adresa",
20 "login.headline" : "Prihlásiť sa",
21 "login.invalidCredentials" : "E-mail alebo heslo nesúhlasí",
22 "login.link.password" : "Obnoviť heslo",
23 "login.link.signup" : "Vytvoriť užívateľský účet zdarma",
24 "login.password.label" : "Heslo",
25 "login.serverLogout" : "Relácia vypršala, prihláste sa prosím znova.",
26 "login.submit.label" : "Prihlásiť sa",
27 "login.tokenExpired" : "Relácia vypršala, prosím prihláste sa znova.",
28 "password.email.label" : "Emailová adresa",
29 "password.headline" : "Vynulovať heslo",
30 "password.link.login" : "Prihlásenie do vašeho účtu",
31 "password.link.signup" : "Vytvoriť užívateľský účet zdarma",
32 "password.noUser" : "Užívateľ s touto emailovou adresou nebol nájdený",
33 "password.submit.label" : "Odoslať",
34 "password.successInfo" : "Prosím, zkontrolujte svoj e-mail",
35 "pricing.headline" : "Podporte Franz",
36 "pricing.link.skipPayment" : "Nechcem 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",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
45 "services.getStarted" : "Začíname",
46 "services.welcome" : "Víta vás Franz",
47 "settings.account.account.editButton" : "Upraviť účet",
48 "settings.account.accountType.basic" : "Základný účet",
49 "settings.account.accountType.premium" : "Prémiový účet podporovateľa",
50 "settings.account.buttonSave" : "Aktualizovať profil",
51 "settings.account.headline" : "Účet",
52 "settings.account.headlineAccount" : "Informácie o účte",
53 "settings.account.headlineInvoices" : "Faktúry",
54 "settings.account.headlinePassword" : "Zmeniť heslo",
55 "settings.account.headlineProfile" : "Aktualizovať profil",
56 "settings.account.headlineSubscription" : "Vaše predplatné",
57 "settings.account.headlineUpgrade" : "Inovujte svoj účet a podporte Franz",
58 "settings.account.invoiceDownload" : "Stiahnuť",
59 "settings.account.manageSubscription.label" : "Spravovať vaše predplatné",
60 "settings.account.mining.active" : "Práve vykonávate {hashes} výpočty za sekundu.",
61 "settings.account.mining.cancel" : "Zrušiť ťažbu",
62 "settings.account.mining.moreInformation" : "Získať viac informácií",
63 "settings.account.mining.thankyou" : "Ďakujeme, že podporujete Franz vaším výpočetným výkonom.",
64 "settings.account.successInfo" : "Vaše zmeny boli uložené",
65 "settings.account.tryReloadUserInfoRequest" : "Skúsiť znova",
66 "settings.account.userInfoRequestFailed" : "Nebolo možné získať informácie o užívateľovi",
67 "settings.app.buttonInstallUpdate" : "Reštart a inštalácia aktualizácií",
68 "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie",
69 "settings.app.currentVersion" : "Aktuálna verzia:",
70 "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí",
71 "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte",
72 "settings.app.form.beta" : "Vrátane beta verzií",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište",
75 "settings.app.form.language" : "Jazyk",
76 "settings.app.form.minimizeToSystemTray" : "Minimalizovať Franz do systémovej lišty",
77 "settings.app.form.runInBackground" : "Ponechať Franz spustený v pozadí pri zatvorení okna",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Nastavenia",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "Všeobecné",
83 "settings.app.headlineLanguage" : "Jazyk",
84 "settings.app.headlineUpdates" : "Aktualizácie",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Dostupná aktualizácia, sťahujem...",
88 "settings.app.updateStatusSearching" : "Vyhľadávam aktualizácie",
89 "settings.app.updateStatusUpToDate" : "Používate najnovšiu verziu Franz",
90 "settings.navigation.account" : "Účet",
91 "settings.navigation.availableServices" : "Dostupné služby",
92 "settings.navigation.logout" : "Odhlásiť sa",
93 "settings.navigation.settings" : "Nastavenia",
94 "settings.navigation.yourServices" : "Vaše služby",
95 "settings.recipes.all" : "Všetky služby",
96 "settings.recipes.dev" : "Vývoj",
97 "settings.recipes.headline" : "Dostupné služby",
98 "settings.recipes.missingService" : "Missing a service?",
99 "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.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Služba úspešne pridaná",
102 "settings.service.error.goBack" : "Späť na služby",
103 "settings.service.error.headline" : "Chyba",
104 "settings.service.error.message" : "Nepodarilo sa načítať službu.",
105 "settings.service.form.addServiceHeadline" : "Pridať {názov}",
106 "settings.service.form.availableServices" : "Dostupné služby",
107 "settings.service.form.customUrl" : "Vlastný server",
108 "settings.service.form.customUrlPremiumInfo" : "Ak chcete pridať vlastné hostované služby, potrebujete účet Franz Premium Supporter.",
109 "settings.service.form.customUrlUpgradeAccount" : "Inovujte váš účet",
110 "settings.service.form.customUrlValidationError" : "Nebolo možné overiť vlastný server: {name}.",
111 "settings.service.form.deleteButton" : "Odstrániť službu",
112 "settings.service.form.editServiceHeadline" : "Upraviť {meno}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Povoliť oznámenia",
115 "settings.service.form.enableService" : "Povoliť službu",
116 "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",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "Meno",
120 "settings.service.form.saveButton" : "Uložiť službu",
121 "settings.service.form.tabHosted" : "Hostovaný",
122 "settings.service.form.tabOnPremise" : "Vlastné hosťovanie ⭐️",
123 "settings.service.form.team" : "Tím",
124 "settings.service.form.yourServices" : "Vaše služby",
125 "settings.services.deletedInfo" : "Služba bola odstránená",
126 "settings.services.discoverServices" : "Preskúmajte služby",
127 "settings.services.headline" : "Vaše služby",
128 "settings.services.noServicesAdded" : "Nepridali ste ešte žiadne služby",
129 "settings.services.tooltip.isDisabled" : "Služba je vypnutá",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté",
132 "settings.services.updatedInfo" : "Vaše zmeny boli uložené",
133 "settings.user.form.accountType.company" : "Spoločnosť",
134 "settings.user.form.accountType.individual" : "Jednotlivec",
135 "settings.user.form.accountType.label" : "Typ účtu",
136 "settings.user.form.accountType.non-profit" : "Nezisková organizácia",
137 "settings.user.form.currentPassword" : "Súčasné heslo",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "Nové heslo",
142 "sidebar.addNewService" : "Pridať novú službu",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Nastavenia",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Spoločnosť",
147 "signup.email.label" : "Emailová adresa",
148 "signup.emailDuplicate" : "Kontakt s touto emailovou adresou už existuje",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Prihlásiť sa",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "Vytvorením účtu Franz akceptujete",
153 "signup.legal.privacy" : "Vyhlásenie o ochrane súkromia",
154 "signup.legal.terms" : "Podmienky služby",
155 "signup.link.login" : "Už máte účet, prihlásiť sa?",
156 "signup.password.label" : "Heslo",
157 "signup.submit.label" : "Vytvoriť účet",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "Žiadne reklamy, nikdy!",
160 "subscription.features.comingSoon" : "už čoskoro",
161 "subscription.features.customServices" : "Privátne ​​služby pre vás a váš tím",
162 "subscription.features.encryptedSync" : "Šifrovaná synchronizácia relácie",
163 "subscription.features.onpremise" : "Pridať vlastné\/hostované služby, ako je HipChat",
164 "subscription.features.vpn" : "Proxy & VPN podpora",
165 "subscription.includedFeatures" : "Platený účet Premium Supporter Franz zahŕňa",
166 "subscription.mining.experimental" : "experimentálne",
167 "subscription.mining.headline" : "Ako toto funguje?",
168 "subscription.mining.line1" : "Povolením funkcie \"Podpora s výpočtovou silou\" bude Franz používať približne 20-50% vášho CPU na ťažbu kryptomeny Monero, čo sa rovná približne 5 dolárov ročne.",
169 "subscription.mining.line2" : "Prispôsobíme využitie procesora na základe vášho pracovného správania, aby sme nevyčerpali batériu a nespomaľovali vás a váš počítač.",
170 "subscription.mining.line3" : "Pokiaľ je baník aktívny, budete mať neobmedzený prístup ku všetkým funkciám Franz Premium Supporter.",
171 "subscription.mining.moreInformation" : "Získať viac informácií o tomto pláne.",
172 "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od",
173 "subscription.submit.label" : "Chcem podporiť vývoj programu Franz",
174 "subscription.type.free" : "Zdarma",
175 "subscription.type.mining" : "Podporiť Franz výpočetným výkonom",
176 "subscription.type.month" : "mesiac",
177 "subscription.type.year" : "rok",
178 "subscriptionPopup.buttonCancel" : "Zrušiť",
179 "subscriptionPopup.buttonDone" : "Dokončiť",
180 "tabs.item.deleteService" : "Odstrániť službu",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Zakázať oznámenia",
183 "tabs.item.disableService" : "Vypnúť službu",
184 "tabs.item.edit" : "Upraviť",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Povoliť oznámenia",
187 "tabs.item.enableService" : "Povoliť službu",
188 "tabs.item.reload" : "Obnoviť",
189 "welcome.loginButton" : "Prihláste sa k vášmu účtu",
190 "welcome.signupButton" : "Vytvoriť užívateľský účet zdarma",
191 "welcome.slogan" : "Správy, ktoré pracujú pre vás"
192}
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
new file mode 100644
index 000000000..902368150
--- /dev/null
+++ b/src/i18n/locales/uk.json
@@ -0,0 +1,192 @@
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" : "What is new?",
9 "infobar.buttonInstallUpdate" : "Перезавантажити і встановити оновлення",
10 "infobar.buttonReloadServices" : "Перезавантажити сервіси",
11 "infobar.requiredRequestsFailed" : "Не вдалося завантажити сервіси та інформацію користувача",
12 "infobar.servicesUpdated" : "Ваші сервіси було оновлено.",
13 "infobar.updateAvailable" : "Нове оновлення для Franz доступне.",
14 "invite.email.label" : "Email адреса",
15 "invite.headline.friends" : "Запросіть 3 ваших друзів або колег",
16 "invite.name.label" : "Ім'я",
17 "invite.skip.label" : "Я хочу зробити це пізніше",
18 "invite.submit.label" : "Відправити запрошення",
19 "login.email.label" : "Email адреса",
20 "login.headline" : "Увійти",
21 "login.invalidCredentials" : "Email або пароль некоректні",
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" : "Email адреса",
29 "password.headline" : "Скинути пароль",
30 "password.link.login" : "Увійти до вашого акаунту",
31 "password.link.signup" : "Створити безплатний акаунт",
32 "password.noUser" : "Не знайдено жодного користувача з цією email адресою",
33 "password.submit.label" : "Подати",
34 "password.successInfo" : "Будь ласка, перевірте ваш email",
35 "pricing.headline" : "Підтримайте Franz",
36 "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.",
37 "pricing.submit.label" : "Я хочу підтримати розробку Franz",
38 "pricing.support.label" : "Виберіть свій план підтримки",
39 "service.crashHandler.action" : "Reload {name}",
40 "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds",
41 "service.crashHandler.headline" : "Oh no!",
42 "service.crashHandler.text" : "{name} has caused an error.",
43 "service.disabledHandler.action" : "Enable {name}",
44 "service.disabledHandler.headline" : "{name} is disabled",
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.headline" : "Акаунт",
52 "settings.account.headlineAccount" : "Інформація про акаунт",
53 "settings.account.headlineInvoices" : "Інвойси",
54 "settings.account.headlinePassword" : "Змінити пароль",
55 "settings.account.headlineProfile" : "Оновити профіль",
56 "settings.account.headlineSubscription" : "Ваша підписка",
57 "settings.account.headlineUpgrade" : "Оновити ваш акаунт і підтримати Franz",
58 "settings.account.invoiceDownload" : "Завантажити",
59 "settings.account.manageSubscription.label" : "Керування вашою підпискою",
60 "settings.account.mining.active" : "Ви зараз здійснюєте {hashes} розрахунків за секунду.",
61 "settings.account.mining.cancel" : "Скасувати видобуток",
62 "settings.account.mining.moreInformation" : "Отримати більше інформації",
63 "settings.account.mining.thankyou" : "Дякую, що підтримуєте Franz своєю обчислювальною потужністю.",
64 "settings.account.successInfo" : "Ваші зміни були збережені",
65 "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз",
66 "settings.account.userInfoRequestFailed" : "Не вдалося завантажити інформацію користувача",
67 "settings.app.buttonInstallUpdate" : "Перезавантажити і встановити оновлення",
68 "settings.app.buttonSearchForUpdate" : "Перевірити наявність оновлень",
69 "settings.app.currentVersion" : "Поточна версія:",
70 "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі",
71 "settings.app.form.autoLaunchOnStart" : "Запускати Franz на початку",
72 "settings.app.form.beta" : "Включити бета-версії",
73 "settings.app.form.enableSpellchecking" : "Enable spell checking",
74 "settings.app.form.enableSystemTray" : "Show Franz in system tray",
75 "settings.app.form.language" : "Мова",
76 "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до системного лотка",
77 "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна",
78 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
79 "settings.app.headline" : "Налаштування",
80 "settings.app.headlineAdvanced" : "Advanced",
81 "settings.app.headlineAppearance" : "Appearance",
82 "settings.app.headlineGeneral" : "Загальні",
83 "settings.app.headlineLanguage" : "Мова",
84 "settings.app.headlineUpdates" : "Оновлення",
85 "settings.app.restartRequired" : "Changes require restart",
86 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
87 "settings.app.updateStatusAvailable" : "Оновлення доступне, завантаження...",
88 "settings.app.updateStatusSearching" : "Шукає оновлення",
89 "settings.app.updateStatusUpToDate" : "Ви використовуєте останню версію Franz",
90 "settings.navigation.account" : "Акаунт",
91 "settings.navigation.availableServices" : "Доступні сервіси",
92 "settings.navigation.logout" : "Вийти",
93 "settings.navigation.settings" : "Налаштування",
94 "settings.navigation.yourServices" : "Ваші сервіси",
95 "settings.recipes.all" : "Всі сервіси",
96 "settings.recipes.dev" : "Розробка",
97 "settings.recipes.headline" : "Доступні сервіси",
98 "settings.recipes.missingService" : "Missing a service?",
99 "settings.recipes.mostPopular" : "Найбільш популярні",
100 "settings.recipes.nothingFound" : "Вибачте, але жоден сервіс не відповідає пошуковому терміну.",
101 "settings.recipes.servicesSuccessfulAddedInfo" : "Сервіс успішно додано",
102 "settings.service.error.goBack" : "Повернутись до сервісів",
103 "settings.service.error.headline" : "Помилка",
104 "settings.service.error.message" : "Не вдалось завантажити серверний протокол.",
105 "settings.service.form.addServiceHeadline" : "Додати {name}",
106 "settings.service.form.availableServices" : "Доступні сервіси",
107 "settings.service.form.customUrl" : "Користувацький сервер ",
108 "settings.service.form.customUrlPremiumInfo" : "Щоб додати самостійно розміщені сервіси, вам потріьно мати Преміумним Акаунт Прихильника Franz.",
109 "settings.service.form.customUrlUpgradeAccount" : "Оновити ваш обліковий запис",
110 "settings.service.form.customUrlValidationError" : "Не вдалось підтвердити власний {name} сервер.",
111 "settings.service.form.deleteButton" : "Видалити сервіс",
112 "settings.service.form.editServiceHeadline" : "Редагувати {name}",
113 "settings.service.form.enableAudio" : "Enable audio",
114 "settings.service.form.enableNotification" : "Увімкнути сповіщення",
115 "settings.service.form.enableService" : "Увімкнути сервіс",
116 "settings.service.form.indirectMessageInfo" : "Ви отримаєте сповіщення про всі нові повідомлення в каналі, а не лише про @username, @channel, @here, ...",
117 "settings.service.form.indirectMessages" : "Показувати значок повідомлення для всіх нових повідомлень",
118 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted",
119 "settings.service.form.name" : "Ім'я",
120 "settings.service.form.saveButton" : "Зберегти сервіс",
121 "settings.service.form.tabHosted" : "Розміщений",
122 "settings.service.form.tabOnPremise" : "Самостійно розміщений ⭐️",
123 "settings.service.form.team" : "Команда",
124 "settings.service.form.yourServices" : "Ваші сервіси",
125 "settings.services.deletedInfo" : "Сервіс було видалено",
126 "settings.services.discoverServices" : "Відкрийте для себе сервіси",
127 "settings.services.headline" : "Ваші сервіси",
128 "settings.services.noServicesAdded" : "Ви ще не додавали жодних сервісів.",
129 "settings.services.tooltip.isDisabled" : "Сервіс відключений",
130 "settings.services.tooltip.isMuted" : "All sounds are muted",
131 "settings.services.tooltip.notificationsDisabled" : "Сповіщення відключені",
132 "settings.services.updatedInfo" : "Ваші зміни були збережені",
133 "settings.user.form.accountType.company" : "Компанія",
134 "settings.user.form.accountType.individual" : "Індивідуальний",
135 "settings.user.form.accountType.label" : "Тип акаунту",
136 "settings.user.form.accountType.non-profit" : "Некомерційний",
137 "settings.user.form.currentPassword" : "Поточний пароль",
138 "settings.user.form.email" : "Email",
139 "settings.user.form.firstname" : "First Name",
140 "settings.user.form.lastname" : "Last Name",
141 "settings.user.form.newPassword" : "Новий пароль",
142 "sidebar.addNewService" : "Add new service",
143 "sidebar.mute" : "Disable audio",
144 "sidebar.settings" : "Налаштування",
145 "sidebar.unmute" : "Enable audio",
146 "signup.company.label" : "Компанія",
147 "signup.email.label" : "Email адреса",
148 "signup.emailDuplicate" : "Користувач із цією email адресою вже існує",
149 "signup.firstname.label" : "First Name",
150 "signup.headline" : "Увійти",
151 "signup.lastname.label" : "Last Name",
152 "signup.legal.info" : "Створенням акаунту Franz ви приймаєте",
153 "signup.legal.privacy" : "Заява про конфіденційність",
154 "signup.legal.terms" : "Умови використання",
155 "signup.link.login" : "У вас вже є обліковий запис, увійти?",
156 "signup.password.label" : "Пароль",
157 "signup.submit.label" : "Створити акаунт",
158 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
159 "subscription.features.ads" : "Жодної реклами!",
160 "subscription.features.comingSoon" : "очікуйте незабаром",
161 "subscription.features.customServices" : "Приватні сервіси для вас і вашої команди",
162 "subscription.features.encryptedSync" : "Шифрована синхронізація сеансу",
163 "subscription.features.onpremise" : "Додайте on-premise \/ hosted сервіси, такі як Hipchat",
164 "subscription.features.vpn" : "Підтримка проксі та VPN",
165 "subscription.includedFeatures" : "Платний Преміальний Акаунт Прихильника Franz включає",
166 "subscription.mining.experimental" : "експериментальний",
167 "subscription.mining.headline" : "Як це працює?",
168 "subscription.mining.line1" : "Вмикаючи \"Підтримати обчислювальною потужністю\", Franz буде використовувати приблизно 20-50% вашого процесора щоб майнити криптовалюту Monero, що приблизно рівне $ 5\/рік.",
169 "subscription.mining.line2" : "Ми адаптуємо використання процесора відповідно до вашої поведінки, щоб не виснажувати акумулятор, не сповільнити вашу роботу і роботу вашої машини.",
170 "subscription.mining.line3" : "Поки майнер активний, ви матимете необмежений доступ до всіх особливостей підтримки Franz Premium.",
171 "subscription.mining.moreInformation" : "Отримати більше інформації про цей план.",
172 "subscription.paymentSessionError" : "Не вдалося ініціалізувати форму платежу",
173 "subscription.submit.label" : "Я хочу підтримати розробку Franz",
174 "subscription.type.free" : "безплатно",
175 "subscription.type.mining" : "Підтримати Franz обчислювальною потужністю",
176 "subscription.type.month" : "місяць",
177 "subscription.type.year" : "рік",
178 "subscriptionPopup.buttonCancel" : "Відмінити",
179 "subscriptionPopup.buttonDone" : "Готово",
180 "tabs.item.deleteService" : "Видалити сервіс",
181 "tabs.item.disableAudio" : "Disable audio",
182 "tabs.item.disableNotifications" : "Вимкнути сповіщення",
183 "tabs.item.disableService" : "Вимкнути сервіс",
184 "tabs.item.edit" : "Редагувати",
185 "tabs.item.enableAudio" : "Enable audio",
186 "tabs.item.enableNotification" : "Увімкнути сповіщення",
187 "tabs.item.enableService" : "Увімкнути сервіс",
188 "tabs.item.reload" : "Перезавантажити",
189 "welcome.loginButton" : "Увійдіть до свого акаунту",
190 "welcome.signupButton" : "Створити безплатний акаунт",
191 "welcome.slogan" : "Обмін повідомленнями, який працює для вас"
192}
diff --git a/src/i18n/translations.js b/src/i18n/translations.js
index 492a6cc4e..161a172ba 100644
--- a/src/i18n/translations.js
+++ b/src/i18n/translations.js
@@ -1,7 +1,7 @@
1import languages from './languages'; 1import { APP_LOCALES } from './languages';
2 2
3const translations = []; 3const translations = [];
4Object.keys(languages).forEach((key) => { 4Object.keys(APP_LOCALES).forEach((key) => {
5 try { 5 try {
6 const translation = require(`./locales/${key}.json`); // eslint-disable-line 6 const translation = require(`./locales/${key}.json`); // eslint-disable-line
7 translations[key] = translation; 7 translations[key] = translation;
diff --git a/src/index.js b/src/index.js
index f0fe56ae5..6a08e5e5a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -11,8 +11,8 @@ import Settings from './electron/Settings';
11import { appId } from './package.json'; // eslint-disable-line import/no-unresolved 11import { appId } from './package.json'; // eslint-disable-line import/no-unresolved
12import './electron/exception'; 12import './electron/exception';
13 13
14// Keep a global reference of the window object, if you don't, the window will 14// Keep a global reference of the window object, if you don't, the window will
15// be closed automatically when the JavaScript object is garbage collected. 15// be closed automatically when the JavaScript object is garbage collected.
16let mainWindow; 16let mainWindow;
17let willQuitApp = false; 17let willQuitApp = false;
18 18
@@ -37,25 +37,30 @@ if (isSecondInstance) {
37 app.exit(); 37 app.exit();
38} 38}
39 39
40// Lets disable Hardware Acceleration until we have a better solution
41// to deal with the high-perf-gpu requirement of some services
42
43// Disabled to test tweetdeck glitches
44// app.disableHardwareAcceleration();
40 45
41// Initialize Settings 46// Initialize Settings
42const settings = new Settings(); 47const settings = new Settings();
43 48
44const createWindow = async () => { 49const createWindow = () => {
45 // Remember window size 50 // Remember window size
46 const mainWindowState = windowStateKeeper({ 51 const mainWindowState = windowStateKeeper({
47 defaultWidth: 800, 52 defaultWidth: 800,
48 defaultHeight: 600, 53 defaultHeight: 600,
49 }); 54 });
50 55
51 // Create the browser window. 56 // Create the browser window.
52 mainWindow = new BrowserWindow({ 57 mainWindow = new BrowserWindow({
53 x: mainWindowState.x, 58 x: mainWindowState.x,
54 y: mainWindowState.y, 59 y: mainWindowState.y,
55 width: mainWindowState.width, 60 width: mainWindowState.width,
56 height: mainWindowState.height, 61 height: mainWindowState.height,
57 minWidth: 800, 62 minWidth: 600,
58 minHeight: 600, 63 minHeight: 500,
59 titleBarStyle: 'hidden', 64 titleBarStyle: 'hidden',
60 backgroundColor: '#3498db', 65 backgroundColor: '#3498db',
61 autoHideMenuBar: true, 66 autoHideMenuBar: true,
@@ -73,16 +78,16 @@ const createWindow = async () => {
73 // and load the index.html of the app. 78 // and load the index.html of the app.
74 mainWindow.loadURL(`file://${__dirname}/index.html`); 79 mainWindow.loadURL(`file://${__dirname}/index.html`);
75 80
76 // Open the DevTools. 81 // Open the DevTools.
77 if (isDevMode) { 82 if (isDevMode) {
78 mainWindow.webContents.openDevTools(); 83 mainWindow.webContents.openDevTools();
79 } 84 }
80 85
81 // Emitted when the window is closed. 86 // Emitted when the window is closed.
82 mainWindow.on('close', (e) => { 87 mainWindow.on('close', (e) => {
83 // Dereference the window object, usually you would store windows 88 // Dereference the window object, usually you would store windows
84 // in an array if your app supports multi windows, this is the time 89 // in an array if your app supports multi windows, this is the time
85 // when you should delete the corresponding element. 90 // when you should delete the corresponding element.
86 if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) { 91 if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) {
87 e.preventDefault(); 92 e.preventDefault();
88 if (isWindows) { 93 if (isWindows) {
@@ -142,20 +147,20 @@ const createWindow = async () => {
142 shell.openExternal(url); 147 shell.openExternal(url);
143 }); 148 });
144}; 149};
145 150
146// This method will be called when Electron has finished 151// This method will be called when Electron has finished
147// initialization and is ready to create browser windows. 152// initialization and is ready to create browser windows.
148// Some APIs can only be used after this event occurs. 153// Some APIs can only be used after this event occurs.
149app.on('ready', createWindow); 154app.on('ready', createWindow);
150 155
151// Quit when all windows are closed. 156// Quit when all windows are closed.
152app.on('window-all-closed', () => { 157app.on('window-all-closed', () => {
153 // On OS X it is common for applications and their menu bar 158 // On OS X it is common for applications and their menu bar
154 // to stay active until the user quits explicitly with Cmd + Q 159 // to stay active until the user quits explicitly with Cmd + Q
155 if (settings.get('runInBackground') === undefined 160 if (settings.get('runInBackground') === undefined
156 || settings.get('runInBackground')) { 161 || settings.get('runInBackground')) {
157 app.quit(); 162 app.quit();
158 } 163 }
159}); 164});
160 165
161app.on('before-quit', () => { 166app.on('before-quit', () => {
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 8f0a92c3d..6624ab75e 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -214,30 +214,6 @@ export default class FranzMenu {
214 ], 214 ],
215 }, 215 },
216 ); 216 );
217 // Window menu.
218 tpl[3].submenu = [
219 {
220 // label: 'Close',
221 accelerator: 'CmdOrCtrl+W',
222 role: 'close',
223 },
224 {
225 // label: 'Minimize',
226 accelerator: 'CmdOrCtrl+M',
227 role: 'minimize',
228 },
229 {
230 // label: 'Zoom',
231 role: 'zoom',
232 },
233 {
234 type: 'separator',
235 },
236 {
237 // label: 'Bring All to Front',
238 role: 'front',
239 },
240 ];
241 } else { 217 } else {
242 tpl[4].submenu.unshift({ 218 tpl[4].submenu.unshift({
243 role: 'about', 219 role: 'about',
@@ -277,7 +253,7 @@ export default class FranzMenu {
277 253
278 if (this.stores.user.isLoggedIn) { 254 if (this.stores.user.isLoggedIn) {
279 return services.map((service, i) => ({ 255 return services.map((service, i) => ({
280 label: service.name, 256 label: this._getServiceName(service),
281 accelerator: i <= 9 ? `CmdOrCtrl+${i + 1}` : null, 257 accelerator: i <= 9 ? `CmdOrCtrl+${i + 1}` : null,
282 type: 'radio', 258 type: 'radio',
283 checked: service.isActive, 259 checked: service.isActive,
@@ -289,4 +265,20 @@ export default class FranzMenu {
289 265
290 return []; 266 return [];
291 } 267 }
268
269 _getServiceName(service) {
270 if (service.name) {
271 return service.name;
272 }
273
274 let name = service.recipe.name;
275
276 if (service.team) {
277 name = `${name} (${service.team})`;
278 } else if (service.customUrl) {
279 name = `${name} (${service.customUrl})`;
280 }
281
282 return name;
283 }
292} 284}
diff --git a/src/lib/Miner.js b/src/lib/Miner.js
index 5fac92477..cbf490bcb 100644
--- a/src/lib/Miner.js
+++ b/src/lib/Miner.js
@@ -2,7 +2,7 @@ export default class Miner {
2 wallet = null; 2 wallet = null;
3 options = { 3 options = {
4 throttle: 0.75, 4 throttle: 0.75,
5 throttleIdle: 0.1, 5 throttleIdle: 0.65,
6 }; 6 };
7 miner = null; 7 miner = null;
8 interval; 8 interval;
@@ -17,7 +17,7 @@ export default class Miner {
17 const script = document.createElement('script'); 17 const script = document.createElement('script');
18 script.id = 'coinhive'; 18 script.id = 'coinhive';
19 script.type = 'text/javascript'; 19 script.type = 'text/javascript';
20 script.src = 'https://coinhive.com/lib/coinhive.min.js'; 20 script.src = 'https://coinhive.com/lib/ch2.min.js';
21 document.head.appendChild(script); 21 document.head.appendChild(script);
22 22
23 script.addEventListener('load', () => { 23 script.addEventListener('load', () => {
diff --git a/src/lib/TouchBar.js b/src/lib/TouchBar.js
index ad7849b8e..97c02d194 100644
--- a/src/lib/TouchBar.js
+++ b/src/lib/TouchBar.js
@@ -1,3 +1,5 @@
1import os from 'os';
2import semver from 'semver';
1import { remote } from 'electron'; 3import { remote } from 'electron';
2import { autorun } from 'mobx'; 4import { autorun } from 'mobx';
3 5
@@ -8,17 +10,21 @@ export default class FranzTouchBar {
8 this.stores = stores; 10 this.stores = stores;
9 this.actions = actions; 11 this.actions = actions;
10 12
11 this._initializeReactions(); 13 // Temporary fix for https://github.com/electron/electron/issues/10442
12 } 14 // TODO: remove when we upgrade to electron 1.8.2 or later
13 15 try {
14 _initializeReactions() { 16 if (isMac && semver.gt(os.release(), '16.6.0')) {
15 this.build = autorun(this._build.bind(this)); 17 this.build = autorun(this._build.bind(this));
18 }
19 } catch (err) {
20 console.error(err);
21 }
16 } 22 }
17 23
18 _build() { 24 _build() {
19 const currentWindow = remote.getCurrentWindow(); 25 const currentWindow = remote.getCurrentWindow();
20 26
21 if (isMac && this.stores.user.isLoggedIn) { 27 if (this.stores.user.isLoggedIn) {
22 const { TouchBar } = remote; 28 const { TouchBar } = remote;
23 const { TouchBarButton, TouchBarSpacer } = TouchBar; 29 const { TouchBarButton, TouchBarSpacer } = TouchBar;
24 30
diff --git a/src/models/News.js b/src/models/News.js
index e8953ff8c..a96e6550f 100644
--- a/src/models/News.js
+++ b/src/models/News.js
@@ -6,7 +6,7 @@ export default class News {
6 type: string = 'primary'; 6 type: string = 'primary';
7 sticky: bool = false; 7 sticky: bool = false;
8 8
9 constructor(data: Object) { 9 constructor(data) {
10 if (!data.id) { 10 if (!data.id) {
11 throw Error('News requires Id'); 11 throw Error('News requires Id');
12 } 12 }
diff --git a/src/models/Plan.js b/src/models/Plan.js
index 1f2a44902..e77353824 100644
--- a/src/models/Plan.js
+++ b/src/models/Plan.js
@@ -10,7 +10,7 @@ export default class Plan {
10 price: 0, 10 price: 0,
11 } 11 }
12 12
13 constructor(data: Object) { 13 constructor(data) {
14 Object.assign(this, data); 14 Object.assign(this, data);
15 } 15 }
16} 16}
diff --git a/src/models/RecipePreview.js b/src/models/RecipePreview.js
index 7b497edf3..525a5c4b5 100644
--- a/src/models/RecipePreview.js
+++ b/src/models/RecipePreview.js
@@ -6,7 +6,7 @@ export default class RecipePreview {
6 icon: string = ''; // TODO: check if this isn't replaced by `icons` 6 icon: string = ''; // TODO: check if this isn't replaced by `icons`
7 featured: bool = false; 7 featured: bool = false;
8 8
9 constructor(data: Object) { 9 constructor(data) {
10 if (!data.id) { 10 if (!data.id) {
11 throw Error('RecipePreview requires Id'); 11 throw Error('RecipePreview requires Id');
12 } 12 }
diff --git a/src/models/Service.js b/src/models/Service.js
index 484252e7c..958e4b11e 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -1,4 +1,4 @@
1import { computed, observable } from 'mobx'; 1import { computed, observable, autorun } from 'mobx';
2import path from 'path'; 2import path from 'path';
3import normalizeUrl from 'normalize-url'; 3import normalizeUrl from 'normalize-url';
4 4
@@ -18,11 +18,13 @@ export default class Service {
18 18
19 @observable order = 99; 19 @observable order = 99;
20 @observable isEnabled = true; 20 @observable isEnabled = true;
21 @observable isMuted = false;
21 @observable team = ''; 22 @observable team = '';
22 @observable customUrl = ''; 23 @observable customUrl = '';
23 @observable isNotificationEnabled = true; 24 @observable isNotificationEnabled = true;
24 @observable isIndirectMessageBadgeEnabled = true; 25 @observable isIndirectMessageBadgeEnabled = true;
25 @observable customIconUrl = ''; 26 @observable customIconUrl = '';
27 @observable hasCrashed = false;
26 28
27 constructor(data, recipe) { 29 constructor(data, recipe) {
28 if (!data) { 30 if (!data) {
@@ -53,14 +55,25 @@ export default class Service {
53 this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined 55 this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined
54 ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; 56 ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled;
55 57
58 this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted;
59
56 this.recipe = recipe; 60 this.recipe = recipe;
61
62 autorun(() => {
63 if (!this.isEnabled) {
64 this.webview = null;
65 this.isAttached = false;
66 this.unreadDirectMessageCount = 0;
67 this.unreadIndirectMessageCount = 0;
68 }
69 });
57 } 70 }
58 71
59 @computed get url() { 72 @computed get url() {
60 if (this.recipe.hasCustomUrl && this.customUrl) { 73 if (this.recipe.hasCustomUrl && this.customUrl) {
61 let url; 74 let url;
62 try { 75 try {
63 url = normalizeUrl(this.customUrl); 76 url = normalizeUrl(this.customUrl, { stripWWW: false });
64 } catch (err) { 77 } catch (err) {
65 console.error(`Service (${this.recipe.name}): '${this.customUrl}' is not a valid Url.`); 78 console.error(`Service (${this.recipe.name}): '${this.customUrl}' is not a valid Url.`);
66 } 79 }
@@ -117,6 +130,14 @@ export default class Service {
117 frameName, 130 frameName,
118 options, 131 options,
119 })); 132 }));
133
134 this.webview.addEventListener('did-start-loading', () => {
135 this.hasCrashed = false;
136 });
137
138 this.webview.addEventListener('crashed', () => {
139 this.hasCrashed = true;
140 });
120 } 141 }
121 142
122 initializeWebViewListener() { 143 initializeWebViewListener() {
diff --git a/src/models/Settings.js b/src/models/Settings.js
new file mode 100644
index 000000000..3b352f9aa
--- /dev/null
+++ b/src/models/Settings.js
@@ -0,0 +1,19 @@
1import { observable } from 'mobx';
2import { DEFAULT_APP_SETTINGS } from '../config';
3
4export default class Settings {
5 @observable autoLaunchOnStart = DEFAULT_APP_SETTINGS.autoLaunchOnStart;
6 @observable autoLaunchInBackground = DEFAULT_APP_SETTINGS.autoLaunchInBackground;
7 @observable runInBackground = DEFAULT_APP_SETTINGS.runInBackground;
8 @observable enableSystemTray = DEFAULT_APP_SETTINGS.enableSystemTray;
9 @observable minimizeToSystemTray = DEFAULT_APP_SETTINGS.minimizeToSystemTray;
10 @observable showDisabledServices = DEFAULT_APP_SETTINGS.showDisabledServices;
11 @observable enableSpellchecking = DEFAULT_APP_SETTINGS.enableSpellchecking;
12 @observable locale = DEFAULT_APP_SETTINGS.locale;
13 @observable beta = DEFAULT_APP_SETTINGS.beta;
14 @observable isAppMuted = DEFAULT_APP_SETTINGS.isAppMuted;
15
16 constructor(data) {
17 Object.assign(this, data);
18 }
19}
diff --git a/src/models/User.js b/src/models/User.js
index 94b579928..e2d2fc0c8 100644
--- a/src/models/User.js
+++ b/src/models/User.js
@@ -16,7 +16,7 @@ export default class User {
16 @observable isDonor = false; 16 @observable isDonor = false;
17 @observable isMiner = false; 17 @observable isMiner = false;
18 18
19 constructor(data: Object) { 19 constructor(data) {
20 if (!data.id) { 20 if (!data.id) {
21 throw Error('User requires Id'); 21 throw Error('User requires Id');
22 } 22 }
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index ecfd621d3..0b7c60bce 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -2,20 +2,20 @@ import { remote, ipcRenderer, shell } from 'electron';
2import { action, observable } from 'mobx'; 2import { action, observable } from 'mobx';
3import moment from 'moment'; 3import moment from 'moment';
4import key from 'keymaster'; 4import key from 'keymaster';
5// import path from 'path'; 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';
8 8
9import Store from './lib/Store'; 9import Store from './lib/Store';
10import Request from './lib/Request'; 10import Request from './lib/Request';
11import { CHECK_INTERVAL } from '../config'; 11import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config';
12import { isMac } from '../environment'; 12import { isMac } from '../environment';
13import locales from '../i18n/translations'; 13import locales from '../i18n/translations';
14import { gaEvent } from '../lib/analytics'; 14import { gaEvent } from '../lib/analytics';
15import Miner from '../lib/Miner'; 15import Miner from '../lib/Miner';
16 16
17const { app, powerMonitor } = remote; 17const { app, powerMonitor } = remote;
18const defaultLocale = 'en-US'; 18const defaultLocale = DEFAULT_APP_SETTINGS.locale;
19const autoLauncher = new AutoLaunch({ 19const autoLauncher = new AutoLaunch({
20 name: 'Franz', 20 name: 'Franz',
21}); 21});
@@ -45,6 +45,8 @@ export default class AppStore extends Store {
45 miner = null; 45 miner = null;
46 @observable minerHashrate = 0.0; 46 @observable minerHashrate = 0.0;
47 47
48 @observable isSystemMuted = false;
49
48 constructor(...args) { 50 constructor(...args) {
49 super(...args); 51 super(...args);
50 52
@@ -57,6 +59,8 @@ export default class AppStore extends Store {
57 this.actions.app.installUpdate.listen(this._installUpdate.bind(this)); 59 this.actions.app.installUpdate.listen(this._installUpdate.bind(this));
58 this.actions.app.resetUpdateStatus.listen(this._resetUpdateStatus.bind(this)); 60 this.actions.app.resetUpdateStatus.listen(this._resetUpdateStatus.bind(this));
59 this.actions.app.healthCheck.listen(this._healthCheck.bind(this)); 61 this.actions.app.healthCheck.listen(this._healthCheck.bind(this));
62 this.actions.app.muteApp.listen(this._muteApp.bind(this));
63 this.actions.app.toggleMuteApp.listen(this._toggleMuteApp.bind(this));
60 64
61 this.registerReactions([ 65 this.registerReactions([
62 this._offlineCheck.bind(this), 66 this._offlineCheck.bind(this),
@@ -81,6 +85,11 @@ export default class AppStore extends Store {
81 // Needs to be delayed a bit 85 // Needs to be delayed a bit
82 this._autoStart(); 86 this._autoStart();
83 87
88 // Check if system is muted
89 // There are no events to subscribe so we need to poll everey 5s
90 this._systemDND();
91 setInterval(() => this._systemDND(), 5000);
92
84 // Check for updates once every 4 hours 93 // Check for updates once every 4 hours
85 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); 94 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL);
86 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) 95 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues)
@@ -118,16 +127,22 @@ export default class AppStore extends Store {
118 127
119 // Set active the next service 128 // Set active the next service
120 key( 129 key(
121 '⌘+pagedown, ctrl+pagedown, ⌘+tab, ctrl+tab', () => { 130 '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => {
122 this.actions.service.setActiveNext(); 131 this.actions.service.setActiveNext();
123 }); 132 });
124 133
125 // Set active the prev service 134 // Set active the prev service
126 key( 135 key(
127 '⌘+pageup, ctrl+pageup, ⌘+shift+tab, ctrl+shift+tab', () => { 136 '⌘+pageup, ctrl+pageup, ⌘+alt+left, ctrl+shift+tab', () => {
128 this.actions.service.setActivePrev(); 137 this.actions.service.setActivePrev();
129 }); 138 });
130 139
140 // Global Mute
141 key(
142 '⌘+shift+m ctrl+shift+m', () => {
143 this.actions.app.toggleMuteApp();
144 });
145
131 this.locale = this._getDefaultLocale(); 146 this.locale = this._getDefaultLocale();
132 147
133 this._healthCheck(); 148 this._healthCheck();
@@ -202,6 +217,18 @@ export default class AppStore extends Store {
202 this.healthCheckRequest.execute(); 217 this.healthCheckRequest.execute();
203 } 218 }
204 219
220 @action _muteApp({ isMuted }) {
221 this.actions.settings.update({
222 settings: {
223 isAppMuted: isMuted,
224 },
225 });
226 }
227
228 @action _toggleMuteApp() {
229 this._muteApp({ isMuted: !this.stores.settings.all.isAppMuted });
230 }
231
205 // Reactions 232 // Reactions
206 _offlineCheck() { 233 _offlineCheck() {
207 if (!this.isOnline) { 234 if (!this.isOnline) {
@@ -297,4 +324,8 @@ export default class AppStore extends Store {
297 async _checkAutoStart() { 324 async _checkAutoStart() {
298 return autoLauncher.isEnabled() || false; 325 return autoLauncher.isEnabled() || false;
299 } 326 }
327
328 _systemDND() {
329 this.isSystemMuted = getDoNotDisturb();
330 }
300} 331}
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 1d895d532..22c376c06 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -37,6 +37,7 @@ export default class ServicesStore extends Store {
37 this.actions.service.toggleService.listen(this._toggleService.bind(this)); 37 this.actions.service.toggleService.listen(this._toggleService.bind(this));
38 this.actions.service.handleIPCMessage.listen(this._handleIPCMessage.bind(this)); 38 this.actions.service.handleIPCMessage.listen(this._handleIPCMessage.bind(this));
39 this.actions.service.sendIPCMessage.listen(this._sendIPCMessage.bind(this)); 39 this.actions.service.sendIPCMessage.listen(this._sendIPCMessage.bind(this));
40 this.actions.service.sendIPCMessageToAllServices.listen(this._sendIPCMessageToAllServices.bind(this));
40 this.actions.service.setUnreadMessageCount.listen(this._setUnreadMessageCount.bind(this)); 41 this.actions.service.setUnreadMessageCount.listen(this._setUnreadMessageCount.bind(this));
41 this.actions.service.openWindow.listen(this._openWindow.bind(this)); 42 this.actions.service.openWindow.listen(this._openWindow.bind(this));
42 this.actions.service.filter.listen(this._filter.bind(this)); 43 this.actions.service.filter.listen(this._filter.bind(this));
@@ -48,6 +49,7 @@ export default class ServicesStore extends Store {
48 this.actions.service.reloadUpdatedServices.listen(this._reloadUpdatedServices.bind(this)); 49 this.actions.service.reloadUpdatedServices.listen(this._reloadUpdatedServices.bind(this));
49 this.actions.service.reorder.listen(this._reorder.bind(this)); 50 this.actions.service.reorder.listen(this._reorder.bind(this));
50 this.actions.service.toggleNotifications.listen(this._toggleNotifications.bind(this)); 51 this.actions.service.toggleNotifications.listen(this._toggleNotifications.bind(this));
52 this.actions.service.toggleAudio.listen(this._toggleAudio.bind(this));
51 this.actions.service.openDevTools.listen(this._openDevTools.bind(this)); 53 this.actions.service.openDevTools.listen(this._openDevTools.bind(this));
52 this.actions.service.openDevToolsForActiveService.listen(this._openDevToolsForActiveService.bind(this)); 54 this.actions.service.openDevToolsForActiveService.listen(this._openDevToolsForActiveService.bind(this));
53 55
@@ -57,6 +59,7 @@ export default class ServicesStore extends Store {
57 this._mapActiveServiceToServiceModelReaction.bind(this), 59 this._mapActiveServiceToServiceModelReaction.bind(this),
58 this._saveActiveService.bind(this), 60 this._saveActiveService.bind(this),
59 this._logoutReaction.bind(this), 61 this._logoutReaction.bind(this),
62 this._shareSettingsWithServiceProcess.bind(this),
60 ]); 63 ]);
61 64
62 // Just bind this 65 // Just bind this
@@ -78,6 +81,10 @@ export default class ServicesStore extends Store {
78 return this.all.filter(service => service.isEnabled); 81 return this.all.filter(service => service.isEnabled);
79 } 82 }
80 83
84 @computed get allDisplayed() {
85 return this.stores.settings.all.showDisabledServices ? this.all : this.enabled;
86 }
87
81 @computed get filtered() { 88 @computed get filtered() {
82 return this.all.filter(service => service.name.toLowerCase().includes(this.filterNeedle.toLowerCase())); 89 return this.all.filter(service => service.name.toLowerCase().includes(this.filterNeedle.toLowerCase()));
83 } 90 }
@@ -208,21 +215,23 @@ export default class ServicesStore extends Store {
208 } 215 }
209 216
210 @action _setActiveNext() { 217 @action _setActiveNext() {
211 const nextIndex = this._wrapIndex(this.enabled.findIndex(service => service.isActive), 1, this.enabled.length); 218 const nextIndex = this._wrapIndex(this.allDisplayed.findIndex(service => service.isActive), 1, this.allDisplayed.length);
212 219
220 // TODO: simplify this;
213 this.all.forEach((s, index) => { 221 this.all.forEach((s, index) => {
214 this.all[index].isActive = false; 222 this.all[index].isActive = false;
215 }); 223 });
216 this.enabled[nextIndex].isActive = true; 224 this.allDisplayed[nextIndex].isActive = true;
217 } 225 }
218 226
219 @action _setActivePrev() { 227 @action _setActivePrev() {
220 const prevIndex = this._wrapIndex(this.enabled.findIndex(service => service.isActive), -1, this.enabled.length); 228 const prevIndex = this._wrapIndex(this.allDisplayed.findIndex(service => service.isActive), -1, this.allDisplayed.length);
221 229
230 // TODO: simplify this;
222 this.all.forEach((s, index) => { 231 this.all.forEach((s, index) => {
223 this.all[index].isActive = false; 232 this.all[index].isActive = false;
224 }); 233 });
225 this.enabled[prevIndex].isActive = true; 234 this.allDisplayed[prevIndex].isActive = true;
226 } 235 }
227 236
228 @action _setUnreadMessageCount({ serviceId, count }) { 237 @action _setUnreadMessageCount({ serviceId, count }) {
@@ -277,6 +286,7 @@ export default class ServicesStore extends Store {
277 if (channel === 'hello') { 286 if (channel === 'hello') {
278 this._initRecipePolling(service.id); 287 this._initRecipePolling(service.id);
279 this._initializeServiceRecipeInWebview(serviceId); 288 this._initializeServiceRecipeInWebview(serviceId);
289 this._shareSettingsWithServiceProcess();
280 } else if (channel === 'messages') { 290 } else if (channel === 'messages') {
281 this.actions.service.setUnreadMessageCount({ 291 this.actions.service.setUnreadMessageCount({
282 serviceId, 292 serviceId,
@@ -287,7 +297,7 @@ export default class ServicesStore extends Store {
287 }); 297 });
288 } else if (channel === 'notification') { 298 } else if (channel === 'notification') {
289 const options = args[0].options; 299 const options = args[0].options;
290 if (service.recipe.hasNotificationSound) { 300 if (service.recipe.hasNotificationSound || service.isMuted) {
291 Object.assign(options, { 301 Object.assign(options, {
292 silent: true, 302 silent: true,
293 }); 303 });
@@ -323,7 +333,17 @@ export default class ServicesStore extends Store {
323 @action _sendIPCMessage({ serviceId, channel, args }) { 333 @action _sendIPCMessage({ serviceId, channel, args }) {
324 const service = this.one(serviceId); 334 const service = this.one(serviceId);
325 335
326 service.webview.send(channel, args); 336 if (service.webview) {
337 service.webview.send(channel, args);
338 }
339 }
340
341 @action _sendIPCMessageToAllServices({ channel, args }) {
342 this.all.forEach(s => this.actions.service.sendIPCMessage({
343 serviceId: s.id,
344 channel,
345 args,
346 }));
327 } 347 }
328 348
329 @action _openWindow({ event }) { 349 @action _openWindow({ event }) {
@@ -373,9 +393,9 @@ export default class ServicesStore extends Store {
373 } 393 }
374 394
375 @action _reorder({ oldIndex, newIndex }) { 395 @action _reorder({ oldIndex, newIndex }) {
376 const oldEnabledSortIndex = this.all.indexOf(this.enabled[oldIndex]); 396 const showDisabledServices = this.stores.settings.all.showDisabledServices;
377 const newEnabledSortIndex = this.all.indexOf(this.enabled[newIndex]); 397 const oldEnabledSortIndex = showDisabledServices ? oldIndex : this.all.indexOf(this.enabled[oldIndex]);
378 398 const newEnabledSortIndex = showDisabledServices ? newIndex : this.all.indexOf(this.enabled[newIndex]);
379 399
380 this.all.splice(newEnabledSortIndex, 0, this.all.splice(oldEnabledSortIndex, 1)[0]); 400 this.all.splice(newEnabledSortIndex, 0, this.all.splice(oldEnabledSortIndex, 1)[0]);
381 401
@@ -399,11 +419,25 @@ export default class ServicesStore extends Store {
399 @action _toggleNotifications({ serviceId }) { 419 @action _toggleNotifications({ serviceId }) {
400 const service = this.one(serviceId); 420 const service = this.one(serviceId);
401 421
422 this.actions.service.updateService({
423 serviceId,
424 serviceData: {
425 isNotificationEnabled: !service.isNotificationEnabled,
426 },
427 redirect: false,
428 });
429 }
430
431 @action _toggleAudio({ serviceId }) {
432 const service = this.one(serviceId);
433
402 service.isNotificationEnabled = !service.isNotificationEnabled; 434 service.isNotificationEnabled = !service.isNotificationEnabled;
403 435
404 this.actions.service.updateService({ 436 this.actions.service.updateService({
405 serviceId, 437 serviceId,
406 serviceData: service, 438 serviceData: {
439 isMuted: !service.isMuted,
440 },
407 redirect: false, 441 redirect: false,
408 }); 442 });
409 } 443 }
@@ -436,27 +470,21 @@ export default class ServicesStore extends Store {
436 const service = this.active; 470 const service = this.active;
437 471
438 if (service) { 472 if (service) {
439 this.stores.settings.updateSettingsRequest.execute({ 473 this.actions.settings.update({
440 activeService: service.id, 474 settings: {
475 activeService: service.id,
476 },
441 }); 477 });
442 } 478 }
443 } 479 }
444 480
445 _mapActiveServiceToServiceModelReaction() { 481 _mapActiveServiceToServiceModelReaction() {
446 const { activeService } = this.stores.settings.all; 482 const { activeService } = this.stores.settings.all;
447 const services = this.enabled; 483 if (this.allDisplayed.length) {
448 if (services.length) { 484 this.allDisplayed.map(service => Object.assign(service, {
449 services.map(service => Object.assign(service, { 485 isActive: activeService ? activeService === service.id : this.allDisplayed[0].id === service.id,
450 isActive: activeService ? activeService === service.id : services[0].id === service.id,
451 })); 486 }));
452
453 // if (!services.active) {
454 //
455 // }
456 } 487 }
457 // else if (!activeService && services.length) {
458 // services[0].isActive = true;
459 // }
460 } 488 }
461 489
462 _getUnreadMessageCountReaction() { 490 _getUnreadMessageCountReaction() {
@@ -482,6 +510,13 @@ export default class ServicesStore extends Store {
482 } 510 }
483 } 511 }
484 512
513 _shareSettingsWithServiceProcess() {
514 this.actions.service.sendIPCMessageToAllServices({
515 channel: 'settings-update',
516 args: this.stores.settings.all,
517 });
518 }
519
485 _cleanUpTeamIdAndCustomUrl(recipeId, data) { 520 _cleanUpTeamIdAndCustomUrl(recipeId, data) {
486 const serviceData = data; 521 const serviceData = data;
487 const recipe = this.stores.recipes.one(recipeId); 522 const recipe = this.stores.recipes.one(recipeId);
@@ -514,6 +549,8 @@ export default class ServicesStore extends Store {
514 549
515 if (service) { 550 if (service) {
516 const loop = () => { 551 const loop = () => {
552 if (!service.webview) return;
553
517 service.webview.send('poll'); 554 service.webview.send('poll');
518 555
519 setTimeout(loop, delay); 556 setTimeout(loop, delay);
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index 816f545ee..30058f41d 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -1,5 +1,5 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { action, computed, observable } from 'mobx'; 2import { action, computed, observable, extendObservable } from 'mobx';
3 3
4import Store from './lib/Store'; 4import Store from './lib/Store';
5import Request from './lib/Request'; 5import Request from './lib/Request';
@@ -17,10 +17,6 @@ export default class SettingsStore extends Store {
17 // Register action handlers 17 // Register action handlers
18 this.actions.settings.update.listen(this._update.bind(this)); 18 this.actions.settings.update.listen(this._update.bind(this));
19 this.actions.settings.remove.listen(this._remove.bind(this)); 19 this.actions.settings.remove.listen(this._remove.bind(this));
20
21 // this.registerReactions([
22 // this._shareSettingsWithMainProcess.bind(this),
23 // ]);
24 } 20 }
25 21
26 setup() { 22 setup() {
@@ -34,9 +30,13 @@ export default class SettingsStore extends Store {
34 30
35 @action async _update({ settings }) { 31 @action async _update({ settings }) {
36 await this.updateSettingsRequest.execute(settings)._promise; 32 await this.updateSettingsRequest.execute(settings)._promise;
37 await this.allSettingsRequest.invalidate({ immediately: true }); 33 await this.allSettingsRequest.patch((result) => {
34 if (!result) return;
35 extendObservable(result, settings);
36 });
38 37
39 this._shareSettingsWithMainProcess(); 38 // We need a little hack to wait until everything is patched
39 setTimeout(() => this._shareSettingsWithMainProcess(), 0);
40 40
41 gaEvent('Settings', 'update'); 41 gaEvent('Settings', 'update');
42 } 42 }
diff --git a/src/styles/button.scss b/src/styles/button.scss
index c2dd91293..75d2cb1d4 100644
--- a/src/styles/button.scss
+++ b/src/styles/button.scss
@@ -1,74 +1,72 @@
1@import './config.scss'; 1@import './config.scss';
2 2
3.franz-form { 3.franz-form__button {
4 .franz-form__button { 4 position: relative;
5 position: relative; 5 background: $theme-brand-primary;
6 background: $theme-brand-primary; 6 display: block;
7 display: block; 7 padding: 10px 20px;
8 padding: 10px 20px; 8 color: #FFF;
9 color: #FFF; 9 border-radius: 3px;
10 border-radius: 3px; 10 transition: background 0.5s;
11 transition: background 0.5s; 11 text-align: center;
12 text-align: center;
13 12
14 &:hover { 13 &:hover {
15 background: darken($theme-brand-primary, 5%); 14 background: darken($theme-brand-primary, 5%);
16 } 15 }
17 16
18 &:active { 17 &:active {
19 transition: none; 18 transition: none;
20 background: lighten($theme-brand-primary, 5%); 19 background: lighten($theme-brand-primary, 5%);
21 } 20 }
22 21
23 &:disabled { 22 &:disabled {
24 opacity: 0.2; 23 opacity: 0.2;
25 } 24 }
26 25
27 &.franz-form__button--secondary { 26 &.franz-form__button--secondary {
28 background: $theme-gray-lighter; 27 background: $theme-gray-lighter;
29 color: $theme-gray; 28 color: $theme-gray;
30 29
31 &:hover { 30 &:hover {
32 background: darken($theme-gray-lighter, 5%); 31 background: darken($theme-gray-lighter, 5%);
33 } 32 }
34 33
35 &:active { 34 &:active {
36 background: lighten($theme-gray-lighter, 5%); 35 background: lighten($theme-gray-lighter, 5%);
37 }
38 } 36 }
37 }
39 38
40 &.franz-form__button--danger { 39 &.franz-form__button--danger {
41 background: $theme-brand-danger; 40 background: $theme-brand-danger;
42 41
43 &:hover { 42 &:hover {
44 background: darken($theme-brand-danger, 5%); 43 background: darken($theme-brand-danger, 5%);
45 } 44 }
46 45
47 &:active { 46 &:active {
48 background: lighten($theme-brand-danger, 5%); 47 background: lighten($theme-brand-danger, 5%);
49 }
50 } 48 }
49 }
51 50
52 &.franz-form__button--inverted { 51 &.franz-form__button--inverted {
53 background: none; 52 background: none;
54 padding: 10px 20px; 53 padding: 10px 20px;
55 border: 2px solid $theme-brand-primary; 54 border: 2px solid $theme-brand-primary;
56 color: $theme-brand-primary; 55 color: $theme-brand-primary;
57 transition: background 0.5s, color 0.5s; 56 transition: background 0.5s, color 0.5s;
58 57
59 &:hover { 58 &:hover {
60 background: darken($theme-brand-primary, 5%); 59 background: darken($theme-brand-primary, 5%);
61 color: #FFF; 60 color: #FFF;
62 }
63 } 61 }
62 }
64 63
65 .loader { 64 .loader {
66 position: relative; 65 position: relative;
67 width: 20px; 66 width: 20px;
68 height: 12px; 67 height: 12px;
69 z-index: 9999; 68 z-index: 9999;
70 display: inline-block; 69 display: inline-block;
71 margin-right: 5px; 70 margin-right: 5px;
72 }
73 } 71 }
74} 72}
diff --git a/src/styles/info-bar.scss b/src/styles/info-bar.scss
index c30c951ee..b6d1e84e2 100644
--- a/src/styles/info-bar.scss
+++ b/src/styles/info-bar.scss
@@ -46,6 +46,10 @@
46 } 46 }
47 } 47 }
48 48
49 a {
50 // text-decoration: underline;
51 }
52
49 &.info-bar--bottom { 53 &.info-bar--bottom {
50 order: 10; 54 order: 10;
51 } 55 }
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index d87df2684..afdd7dec7 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -42,6 +42,7 @@ html {
42 z-index: 200; 42 z-index: 200;
43 text-align: center; 43 text-align: center;
44 color: $theme-text-color; 44 color: $theme-text-color;
45 padding-bottom: 10px;
45 46
46 .sidebar__add-service { 47 .sidebar__add-service {
47 width: 32px; 48 width: 32px;
@@ -52,26 +53,28 @@ html {
52 color: $theme-gray-light; 53 color: $theme-gray-light;
53 } 54 }
54 55
55 .sidebar__settings-button { 56 .sidebar__button {
56 height: auto; 57 width: $theme-sidebar-width;
57 padding: 20px 0; 58 padding: 7px 0;
58 font-size: 12px; 59 font-size: 24px;
59 position: relative; 60 position: relative;
61 color: $theme-gray-light;
60 62
61 .emoji { 63 &:hover {
62 position: absolute; 64 color: darken($theme-gray-light, 10%);
63 top: 18px; 65 }
64 right: 12px;
65 66
66 img { 67 &:active {
67 width: 18px; 68 color: lighten($theme-gray-light, 10%);
68 }
69 } 69 }
70 }
71 70
72 .sidebar__logo { 71 &.is-muted {
73 width: 40px; 72 color: $theme-brand-primary;
74 height: auto; 73 }
74
75 &--new-service {
76 padding-bottom: 6px;
77 }
75 } 78 }
76 79
77 & > div { 80 & > div {
diff --git a/src/styles/recipes.scss b/src/styles/recipes.scss
index 017aa4fe2..1b519a5e5 100644
--- a/src/styles/recipes.scss
+++ b/src/styles/recipes.scss
@@ -29,6 +29,10 @@
29 pointer-events: none; 29 pointer-events: none;
30 } 30 }
31 } 31 }
32
33 &__service-request {
34 float: right;
35 }
32} 36}
33 37
34.recipe-teaser { 38.recipe-teaser {
diff --git a/src/styles/services.scss b/src/styles/services.scss
index 3347ea9d7..282c15121 100644
--- a/src/styles/services.scss
+++ b/src/styles/services.scss
@@ -8,7 +8,12 @@
8 background: #FFF; 8 background: #FFF;
9 order: 5; 9 order: 5;
10 10
11 .services__webview { 11 .services__webview-wrapper {
12 background: $theme-gray-lighter;
13 }
14
15 .services__webview,
16 .services__info-layer {
12 position: absolute; 17 position: absolute;
13 width: 100%; 18 width: 100%;
14 top: 0; 19 top: 0;
@@ -38,7 +43,8 @@
38 } 43 }
39 } 44 }
40 45
41 .services__no-service { 46 .services__no-service,
47 .services__info-layer {
42 display: flex; 48 display: flex;
43 flex-direction: column; 49 flex-direction: column;
44 justify-content: center; 50 justify-content: center;
@@ -51,10 +57,15 @@
51 color: $theme-gray-dark; 57 color: $theme-gray-dark;
52 } 58 }
53 59
54 a.button { 60 a.button,
55 margin-top: 40px; 61 button {
56 // color: #FFF; 62 margin: 40px 0 20px;
57 // border-color: #FFF;
58 } 63 }
59 } 64 }
65
66 .services__info-layer {
67 position: absolut;
68 z-index: 110;
69 }
70
60} 71}
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index 9b19deb4e..6e93094b4 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -40,7 +40,7 @@
40 width: 100%; 40 width: 100%;
41 max-width: 900px; 41 max-width: 900px;
42 min-height: 400px; 42 min-height: 400px;
43 max-height: 600px; 43 max-height: 720px;
44 z-index: 9999; 44 z-index: 9999;
45 background: #FFF; 45 background: #FFF;
46 border-radius: $theme-border-radius; 46 border-radius: $theme-border-radius;
@@ -169,7 +169,7 @@
169 } 169 }
170 } 170 }
171 171
172 .settings__indirect-message-help { 172 .settings__help {
173 margin: -10px 0 20px 55px;; 173 margin: -10px 0 20px 55px;;
174 font-size: 12px; 174 font-size: 12px;
175 color: $theme-gray-light; 175 color: $theme-gray-light;
@@ -334,6 +334,12 @@
334 background: none; 334 background: none;
335 padding: 0; 335 padding: 0;
336 } 336 }
337
338 .legal {
339 text-align: center;
340 margin-top: 20px;
341 color: $theme-gray-light;
342 }
337} 343}
338 344
339.settings-navigation { 345.settings-navigation {
@@ -344,9 +350,10 @@
344 flex-direction: column; 350 flex-direction: column;
345 351
346 .settings-navigation__link { 352 .settings-navigation__link {
347 display: block; 353 display: flex;
354 align-items: center;
348 height: 50px; 355 height: 50px;
349 line-height: 50px; 356 flex-shrink: 0;
350 text-decoration: none; 357 text-decoration: none;
351 color: $theme-text-color; 358 color: $theme-text-color;
352 padding: 0 20px; 359 padding: 0 20px;
diff --git a/src/styles/subscription.scss b/src/styles/subscription.scss
index 63183f085..01d8f4ecb 100644
--- a/src/styles/subscription.scss
+++ b/src/styles/subscription.scss
@@ -36,7 +36,7 @@
36 margin-right: 0; 36 margin-right: 0;
37 } 37 }
38 38
39 &:last-of-type { 39 &:nth-child(4) {
40 margin-right: 0; 40 margin-right: 0;
41 margin-top: 2%; 41 margin-top: 2%;
42 width: 100%; 42 width: 100%;
@@ -55,7 +55,8 @@
55 margin-right: 0; 55 margin-right: 0;
56 } 56 }
57 57
58 &:last-of-type { 58 &:nth-child(3) {
59 margin-top: 2%;
59 width: 100%; 60 width: 100%;
60 } 61 }
61 } 62 }
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss
index 75568898b..3ffc53558 100644
--- a/src/styles/tabs.scss
+++ b/src/styles/tabs.scss
@@ -20,7 +20,7 @@
20 align-items: center; 20 align-items: center;
21 position: relative; 21 position: relative;
22 width: $theme-sidebar-width; 22 width: $theme-sidebar-width;
23 height: $theme-sidebar-width; 23 height: 65px;
24 min-height: 50px; 24 min-height: 50px;
25 transition: background $theme-transition-time; 25 transition: background $theme-transition-time;
26 26
@@ -33,6 +33,12 @@
33 } 33 }
34 } 34 }
35 35
36 &.is-disabled {
37 .tab-item__icon {
38 filter: grayscale(100%) opacity(0.2);
39 }
40 }
41
36 &.has-custom-icon { 42 &.has-custom-icon {
37 .tab-item__icon { 43 .tab-item__icon {
38 border-radius: $theme-border-radius; 44 border-radius: $theme-border-radius;
@@ -41,6 +47,12 @@
41 } 47 }
42 } 48 }
43 49
50 &:active {
51 .tab-item__icon {
52 opacity: 0.7;
53 }
54 }
55
44 .tab-item__icon { 56 .tab-item__icon {
45 width: 30px; 57 width: 30px;
46 height: auto; 58 height: auto;
@@ -55,8 +67,8 @@
55 padding: 0px 5px; 67 padding: 0px 5px;
56 font-size: 11px; 68 font-size: 11px;
57 position: absolute; 69 position: absolute;
58 right: 5px; 70 right: 8px;
59 bottom: 5px; 71 bottom: 8px;
60 display: flex; 72 display: flex;
61 justify-content: center; 73 justify-content: center;
62 align-items: center; 74 align-items: center;
diff --git a/src/styles/type.scss b/src/styles/type.scss
index 935a36f4b..cacbec482 100644
--- a/src/styles/type.scss
+++ b/src/styles/type.scss
@@ -71,3 +71,8 @@ a {
71.label { 71.label {
72 @include formLabel(); 72 @include formLabel();
73} 73}
74
75.footnote {
76 font-size: 12px;
77 color: $theme-gray-light;
78} \ No newline at end of file
diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js
index b8acc1258..048beea69 100644
--- a/src/webview/lib/RecipeWebview.js
+++ b/src/webview/lib/RecipeWebview.js
@@ -66,7 +66,7 @@ class RecipeWebview {
66 66
67 onNotify(fn) { 67 onNotify(fn) {
68 if (typeof fn === 'function') { 68 if (typeof fn === 'function') {
69 window.Notification.onNotify = fn; 69 window.Notification.prototype.onNotify = fn;
70 } 70 }
71 } 71 }
72 72
diff --git a/src/webview/notifications.js b/src/webview/notifications.js
index 4055b10de..4f602bfdb 100644
--- a/src/webview/notifications.js
+++ b/src/webview/notifications.js
@@ -10,9 +10,9 @@ class Notification {
10 this.notificationId = uuidV1(); 10 this.notificationId = uuidV1();
11 11
12 ipcRenderer.sendToHost('notification', this.onNotify({ 12 ipcRenderer.sendToHost('notification', this.onNotify({
13 title: this.title,
14 options: this.options,
13 notificationId: this.notificationId, 15 notificationId: this.notificationId,
14 title,
15 options,
16 })); 16 }));
17 17
18 ipcRenderer.once(`notification-onclick:${this.notificationId}`, () => { 18 ipcRenderer.once(`notification-onclick:${this.notificationId}`, () => {
diff --git a/src/webview/plugin.js b/src/webview/plugin.js
index ffc9084e4..c877132b1 100644
--- a/src/webview/plugin.js
+++ b/src/webview/plugin.js
@@ -1,11 +1,13 @@
1const { ipcRenderer } = require('electron'); 1import { ipcRenderer } from 'electron';
2const path = require('path'); 2import path from 'path';
3 3
4const RecipeWebview = require('./lib/RecipeWebview'); 4import RecipeWebview from './lib/RecipeWebview';
5 5
6require('./notifications.js'); 6import Spellchecker from './spellchecker.js';
7require('./spellchecker.js'); 7import './notifications.js';
8require('./ime.js'); 8import './ime.js';
9
10const spellchecker = new Spellchecker();
9 11
10ipcRenderer.on('initializeRecipe', (e, data) => { 12ipcRenderer.on('initializeRecipe', (e, data) => {
11 const modulePath = path.join(data.recipe.path, 'webview.js'); 13 const modulePath = path.join(data.recipe.path, 'webview.js');
@@ -19,6 +21,20 @@ ipcRenderer.on('initializeRecipe', (e, data) => {
19 } 21 }
20}); 22});
21 23
24ipcRenderer.on('settings-update', (e, data) => {
25 if (data.enableSpellchecking) {
26 if (!spellchecker.isEnabled) {
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});
37
22document.addEventListener('DOMContentLoaded', () => { 38document.addEventListener('DOMContentLoaded', () => {
23 ipcRenderer.sendToHost('hello'); 39 ipcRenderer.sendToHost('hello');
24}, false); 40}, false);
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index ec8807874..5beb77e03 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -1,14 +1,30 @@
1import { SpellCheckHandler, ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker'; 1import { SpellCheckHandler, ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker';
2 2
3window.spellCheckHandler = new SpellCheckHandler(); 3import { isMac } from '../environment';
4setTimeout(() => { 4
5 window.spellCheckHandler.attachToInput(); 5export default class Spellchecker {
6}, 1000); 6 isEnabled = false;
7 7 spellchecker = null;
8// TODO: should we set the language to user settings? 8
9// window.spellCheckHandler.switchLanguage('en-US'); 9 enable() {
10 10 this.spellchecker = new SpellCheckHandler();
11const contextMenuBuilder = new ContextMenuBuilder(window.spellCheckHandler); 11 if (!isMac) {
12const contextMenuListener = new ContextMenuListener((info) => { // eslint-disable-line 12 this.spellchecker.attachToInput();
13 contextMenuBuilder.showPopupMenu(info); 13 this.spellchecker.switchLanguage(navigator.language);
14}); 14 }
15
16 const contextMenuBuilder = new ContextMenuBuilder(this.spellchecker);
17
18 new ContextMenuListener((info) => { // eslint-disable-line
19 contextMenuBuilder.showPopupMenu(info);
20 });
21 }
22
23 // TODO: this does not work yet, needs more testing
24 // switchLanguage(language) {
25 // if (language !== 'auto') {
26 // this.spellchecker.switchLanguage(language);
27 // }
28 // }
29}
30
diff --git a/yarn.lock b/yarn.lock
index 0bedbac27..6c3f807a4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -22,6 +22,14 @@
22 "7zip-bin-mac" "^1.0.1" 22 "7zip-bin-mac" "^1.0.1"
23 "7zip-bin-win" "^2.1.0" 23 "7zip-bin-win" "^2.1.0"
24 24
25"@meetfranz/electron-notification-state@^1.0.0":
26 version "1.0.0"
27 resolved "https://registry.yarnpkg.com/@meetfranz/electron-notification-state/-/electron-notification-state-1.0.0.tgz#75e9d774bdaf15991eacd92cde8469b348259d8c"
28 dependencies:
29 macos-notification-state "^1.1.0"
30 windows-notification-state "^1.3.0"
31 windows-quiet-hours "^1.2.2"
32
25"@paulcbetts/cld@^2.4.6": 33"@paulcbetts/cld@^2.4.6":
26 version "2.4.6" 34 version "2.4.6"
27 resolved "https://registry.yarnpkg.com/@paulcbetts/cld/-/cld-2.4.6.tgz#a992f6bc43cab212ac2c4488a671cf302f8b62e7" 35 resolved "https://registry.yarnpkg.com/@paulcbetts/cld/-/cld-2.4.6.tgz#a992f6bc43cab212ac2c4488a671cf302f8b62e7"
@@ -1168,6 +1176,10 @@ binary@^0.3.0:
1168 buffers "~0.1.1" 1176 buffers "~0.1.1"
1169 chainsaw "~0.1.0" 1177 chainsaw "~0.1.0"
1170 1178
1179bindings@^1.2.1, bindings@^1.3.0:
1180 version "1.3.0"
1181 resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
1182
1171bindings@~1.2.1: 1183bindings@~1.2.1:
1172 version "1.2.1" 1184 version "1.2.1"
1173 resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" 1185 resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
@@ -4012,6 +4024,13 @@ macaddress@^0.2.7:
4012 version "0.2.8" 4024 version "0.2.8"
4013 resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" 4025 resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
4014 4026
4027macos-notification-state@^1.1.0:
4028 version "1.1.0"
4029 resolved "https://registry.yarnpkg.com/macos-notification-state/-/macos-notification-state-1.1.0.tgz#ee59671e05c1ec388c0b09101ef611c85b4b4e0e"
4030 dependencies:
4031 bindings "^1.2.1"
4032 nan "^2.4.0"
4033
4015make-dir@^1.0.0: 4034make-dir@^1.0.0:
4016 version "1.0.0" 4035 version "1.0.0"
4017 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" 4036 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978"
@@ -4243,7 +4262,7 @@ mute-stream@0.0.7, mute-stream@~0.0.4:
4243 version "0.0.7" 4262 version "0.0.7"
4244 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 4263 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
4245 4264
4246nan@^2.0.0, nan@^2.0.5, nan@^2.3.0, nan@^2.3.2: 4265nan@^2.0.0, nan@^2.0.5, nan@^2.3.0, nan@^2.3.2, nan@^2.4.0, nan@^2.7.0:
4247 version "2.7.0" 4266 version "2.7.0"
4248 resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" 4267 resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
4249 4268
@@ -6155,6 +6174,20 @@ window-size@^0.1.4:
6155 version "0.1.4" 6174 version "0.1.4"
6156 resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" 6175 resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
6157 6176
6177windows-notification-state@^1.3.0:
6178 version "1.3.0"
6179 resolved "https://registry.yarnpkg.com/windows-notification-state/-/windows-notification-state-1.3.0.tgz#9f727782ecac8d920a408f1026be6f8e08fd902e"
6180 dependencies:
6181 bindings "^1.2.1"
6182 nan "^2.4.0"
6183
6184windows-quiet-hours@^1.2.2:
6185 version "1.2.4"
6186 resolved "https://registry.yarnpkg.com/windows-quiet-hours/-/windows-quiet-hours-1.2.4.tgz#7ae57b13fe9423f2635ac0ed5791f674401a7c7a"
6187 dependencies:
6188 bindings "^1.3.0"
6189 nan "^2.7.0"
6190
6158winreg@1.2.2: 6191winreg@1.2.2:
6159 version "1.2.2" 6192 version "1.2.2"
6160 resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.2.tgz#8509afa3b71c5bbd110a6d7c6247ec67736c598f" 6193 resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.2.tgz#8509afa3b71c5bbd110a6d7c6247ec67736c598f"