diff options
Diffstat (limited to 'src')
61 files changed, 769 insertions, 576 deletions
diff --git a/src/actions/service.js b/src/actions/service.js index ce62560a9..68c62d594 100644 --- a/src/actions/service.js +++ b/src/actions/service.js | |||
@@ -4,6 +4,7 @@ import ServiceModel from '../models/Service'; | |||
4 | export default { | 4 | export default { |
5 | setActive: { | 5 | setActive: { |
6 | serviceId: PropTypes.string.isRequired, | 6 | serviceId: PropTypes.string.isRequired, |
7 | keepActiveRoute: PropTypes.bool, | ||
7 | }, | 8 | }, |
8 | blurActive: {}, | 9 | blurActive: {}, |
9 | setActiveNext: {}, | 10 | setActiveNext: {}, |
diff --git a/src/app.js b/src/app.js index f6092bf60..cb3e37c64 100644 --- a/src/app.js +++ b/src/app.js | |||
@@ -43,6 +43,8 @@ import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopup | |||
43 | import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen'; | 43 | import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen'; |
44 | import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen'; | 44 | import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen'; |
45 | import { WORKSPACES_ROUTES } from './features/workspaces'; | 45 | import { WORKSPACES_ROUTES } from './features/workspaces'; |
46 | import AnnouncementScreen from './features/announcements/components/AnnouncementScreen'; | ||
47 | import { ANNOUNCEMENTS_ROUTES } from './features/announcements'; | ||
46 | 48 | ||
47 | // Add Polyfills | 49 | // Add Polyfills |
48 | smoothScroll.polyfill(); | 50 | smoothScroll.polyfill(); |
@@ -73,6 +75,7 @@ window.addEventListener('load', () => { | |||
73 | <I18N> | 75 | <I18N> |
74 | <Router history={history}> | 76 | <Router history={history}> |
75 | <Route path="/" component={AppLayoutContainer}> | 77 | <Route path="/" component={AppLayoutContainer}> |
78 | <Route path={ANNOUNCEMENTS_ROUTES.TARGET} component={AnnouncementScreen} /> | ||
76 | <Route path="/settings" component={SettingsWindow}> | 79 | <Route path="/settings" component={SettingsWindow}> |
77 | <IndexRedirect to="/settings/recipes" /> | 80 | <IndexRedirect to="/settings/recipes" /> |
78 | <Route path="/settings/recipes" component={RecipesScreen} /> | 81 | <Route path="/settings/recipes" component={RecipesScreen} /> |
diff --git a/src/assets/images/tray/win32/tray-unread.ico b/src/assets/images/tray/win32/tray-unread.ico index a59428cfb..507845120 100644 --- a/src/assets/images/tray/win32/tray-unread.ico +++ b/src/assets/images/tray/win32/tray-unread.ico | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/win32/tray-unread@2x.ico b/src/assets/images/tray/win32/tray-unread@2x.ico deleted file mode 100644 index f6fe65093..000000000 --- a/src/assets/images/tray/win32/tray-unread@2x.ico +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/win32/tray.ico b/src/assets/images/tray/win32/tray.ico index d3aa25d68..1f0057a8c 100644 --- a/src/assets/images/tray/win32/tray.ico +++ b/src/assets/images/tray/win32/tray.ico | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/win32/tray@2x.ico b/src/assets/images/tray/win32/tray@2x.ico deleted file mode 100644 index c1b7a73a5..000000000 --- a/src/assets/images/tray/win32/tray@2x.ico +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/components/AppUpdateInfoBar.js b/src/components/AppUpdateInfoBar.js new file mode 100644 index 000000000..4fb3a8b71 --- /dev/null +++ b/src/components/AppUpdateInfoBar.js | |||
@@ -0,0 +1,66 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { defineMessages, intlShape } from 'react-intl'; | ||
4 | |||
5 | import { announcementActions } from '../features/announcements/actions'; | ||
6 | import InfoBar from './ui/InfoBar'; | ||
7 | |||
8 | const messages = defineMessages({ | ||
9 | updateAvailable: { | ||
10 | id: 'infobar.updateAvailable', | ||
11 | defaultMessage: '!!!A new update for Franz is available.', | ||
12 | }, | ||
13 | changelog: { | ||
14 | id: 'infobar.buttonChangelog', | ||
15 | defaultMessage: '!!!Changelog', | ||
16 | }, | ||
17 | buttonInstallUpdate: { | ||
18 | id: 'infobar.buttonInstallUpdate', | ||
19 | defaultMessage: '!!!Restart & install update', | ||
20 | }, | ||
21 | }); | ||
22 | |||
23 | class AppUpdateInfoBar extends Component { | ||
24 | static propTypes = { | ||
25 | onInstallUpdate: PropTypes.func.isRequired, | ||
26 | nextAppReleaseVersion: PropTypes.string, | ||
27 | }; | ||
28 | |||
29 | static defaultProps = { | ||
30 | nextAppReleaseVersion: null, | ||
31 | }; | ||
32 | |||
33 | static contextTypes = { | ||
34 | intl: intlShape, | ||
35 | }; | ||
36 | |||
37 | render() { | ||
38 | const { intl } = this.context; | ||
39 | const { | ||
40 | onInstallUpdate, | ||
41 | nextAppReleaseVersion, | ||
42 | } = this.props; | ||
43 | |||
44 | return ( | ||
45 | <InfoBar | ||
46 | type="primary" | ||
47 | ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)} | ||
48 | onClick={onInstallUpdate} | ||
49 | sticky | ||
50 | > | ||
51 | <span className="mdi mdi-information" /> | ||
52 | {intl.formatMessage(messages.updateAvailable)} | ||
53 | {' '} | ||
54 | <button | ||
55 | className="info-bar__inline-button" | ||
56 | type="button" | ||
57 | onClick={() => announcementActions.show({ targetVersion: nextAppReleaseVersion })} | ||
58 | > | ||
59 | <u>{intl.formatMessage(messages.changelog)}</u> | ||
60 | </button> | ||
61 | </InfoBar> | ||
62 | ); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | export default AppUpdateInfoBar; | ||
diff --git a/src/components/auth/AuthLayout.js b/src/components/auth/AuthLayout.js index ac8fdbe5b..3d43d4e5c 100644 --- a/src/components/auth/AuthLayout.js +++ b/src/components/auth/AuthLayout.js | |||
@@ -11,6 +11,7 @@ import { oneOrManyChildElements, globalError as globalErrorPropType } from '../. | |||
11 | import globalMessages from '../../i18n/globalMessages'; | 11 | import globalMessages from '../../i18n/globalMessages'; |
12 | 12 | ||
13 | import { isWindows } from '../../environment'; | 13 | import { isWindows } from '../../environment'; |
14 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; | ||
14 | 15 | ||
15 | export default @observer class AuthLayout extends Component { | 16 | export default @observer class AuthLayout extends Component { |
16 | static propTypes = { | 17 | static propTypes = { |
@@ -22,6 +23,13 @@ export default @observer class AuthLayout extends Component { | |||
22 | isHealthCheckLoading: PropTypes.bool.isRequired, | 23 | isHealthCheckLoading: PropTypes.bool.isRequired, |
23 | isFullScreen: PropTypes.bool.isRequired, | 24 | isFullScreen: PropTypes.bool.isRequired, |
24 | darkMode: PropTypes.bool.isRequired, | 25 | darkMode: PropTypes.bool.isRequired, |
26 | nextAppReleaseVersion: PropTypes.string, | ||
27 | installAppUpdate: PropTypes.func.isRequired, | ||
28 | appUpdateIsDownloaded: PropTypes.bool.isRequired, | ||
29 | }; | ||
30 | |||
31 | static defaultProps = { | ||
32 | nextAppReleaseVersion: null, | ||
25 | }; | 33 | }; |
26 | 34 | ||
27 | static contextTypes = { | 35 | static contextTypes = { |
@@ -38,6 +46,9 @@ export default @observer class AuthLayout extends Component { | |||
38 | isHealthCheckLoading, | 46 | isHealthCheckLoading, |
39 | isFullScreen, | 47 | isFullScreen, |
40 | darkMode, | 48 | darkMode, |
49 | nextAppReleaseVersion, | ||
50 | installAppUpdate, | ||
51 | appUpdateIsDownloaded, | ||
41 | } = this.props; | 52 | } = this.props; |
42 | const { intl } = this.context; | 53 | const { intl } = this.context; |
43 | 54 | ||
@@ -53,6 +64,12 @@ export default @observer class AuthLayout extends Component { | |||
53 | {intl.formatMessage(globalMessages.notConnectedToTheInternet)} | 64 | {intl.formatMessage(globalMessages.notConnectedToTheInternet)} |
54 | </InfoBar> | 65 | </InfoBar> |
55 | )} | 66 | )} |
67 | {appUpdateIsDownloaded && ( | ||
68 | <AppUpdateInfoBar | ||
69 | nextAppReleaseVersion={nextAppReleaseVersion} | ||
70 | onInstallUpdate={installAppUpdate} | ||
71 | /> | ||
72 | )} | ||
56 | {isOnline && !isAPIHealthy && ( | 73 | {isOnline && !isAPIHealthy && ( |
57 | <InfoBar | 74 | <InfoBar |
58 | type="danger" | 75 | type="danger" |
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index d0476ef04..c66004183 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -13,10 +13,9 @@ import ErrorBoundary from '../util/ErrorBoundary'; | |||
13 | // import globalMessages from '../../i18n/globalMessages'; | 13 | // import globalMessages from '../../i18n/globalMessages'; |
14 | 14 | ||
15 | import { isWindows } from '../../environment'; | 15 | import { isWindows } from '../../environment'; |
16 | import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen'; | ||
17 | import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; | 16 | import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; |
18 | import { workspaceStore } from '../../features/workspaces'; | 17 | import { workspaceStore } from '../../features/workspaces'; |
19 | import { announcementActions } from '../../features/announcements/actions'; | 18 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; |
20 | 19 | ||
21 | function createMarkup(HTMLString) { | 20 | function createMarkup(HTMLString) { |
22 | return { __html: HTMLString }; | 21 | return { __html: HTMLString }; |
@@ -27,22 +26,10 @@ const messages = defineMessages({ | |||
27 | id: 'infobar.servicesUpdated', | 26 | id: 'infobar.servicesUpdated', |
28 | defaultMessage: '!!!Your services have been updated.', | 27 | defaultMessage: '!!!Your services have been updated.', |
29 | }, | 28 | }, |
30 | updateAvailable: { | ||
31 | id: 'infobar.updateAvailable', | ||
32 | defaultMessage: '!!!A new update for Franz is available.', | ||
33 | }, | ||
34 | buttonReloadServices: { | 29 | buttonReloadServices: { |
35 | id: 'infobar.buttonReloadServices', | 30 | id: 'infobar.buttonReloadServices', |
36 | defaultMessage: '!!!Reload services', | 31 | defaultMessage: '!!!Reload services', |
37 | }, | 32 | }, |
38 | changelog: { | ||
39 | id: 'infobar.buttonChangelog', | ||
40 | defaultMessage: '!!!Changelog', | ||
41 | }, | ||
42 | buttonInstallUpdate: { | ||
43 | id: 'infobar.buttonInstallUpdate', | ||
44 | defaultMessage: '!!!Restart & install update', | ||
45 | }, | ||
46 | requiredRequestsFailed: { | 33 | requiredRequestsFailed: { |
47 | id: 'infobar.requiredRequestsFailed', | 34 | id: 'infobar.requiredRequestsFailed', |
48 | defaultMessage: '!!!Could not load services and user information', | 35 | defaultMessage: '!!!Could not load services and user information', |
@@ -82,7 +69,6 @@ class AppLayout extends Component { | |||
82 | areRequiredRequestsLoading: PropTypes.bool.isRequired, | 69 | areRequiredRequestsLoading: PropTypes.bool.isRequired, |
83 | darkMode: PropTypes.bool.isRequired, | 70 | darkMode: PropTypes.bool.isRequired, |
84 | isDelayAppScreenVisible: PropTypes.bool.isRequired, | 71 | isDelayAppScreenVisible: PropTypes.bool.isRequired, |
85 | isAnnouncementVisible: PropTypes.bool.isRequired, | ||
86 | }; | 72 | }; |
87 | 73 | ||
88 | static defaultProps = { | 74 | static defaultProps = { |
@@ -116,7 +102,6 @@ class AppLayout extends Component { | |||
116 | areRequiredRequestsLoading, | 102 | areRequiredRequestsLoading, |
117 | darkMode, | 103 | darkMode, |
118 | isDelayAppScreenVisible, | 104 | isDelayAppScreenVisible, |
119 | isAnnouncementVisible, | ||
120 | } = this.props; | 105 | } = this.props; |
121 | 106 | ||
122 | const { intl } = this.context; | 107 | const { intl } = this.context; |
@@ -175,32 +160,18 @@ class AppLayout extends Component { | |||
175 | </InfoBar> | 160 | </InfoBar> |
176 | )} | 161 | )} |
177 | {appUpdateIsDownloaded && ( | 162 | {appUpdateIsDownloaded && ( |
178 | <InfoBar | 163 | <AppUpdateInfoBar |
179 | type="primary" | 164 | nextAppReleaseVersion={nextAppReleaseVersion} |
180 | ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)} | 165 | onInstallUpdate={installAppUpdate} |
181 | onClick={installAppUpdate} | 166 | /> |
182 | sticky | ||
183 | > | ||
184 | <span className="mdi mdi-information" /> | ||
185 | {intl.formatMessage(messages.updateAvailable)} | ||
186 | {' '} | ||
187 | <button | ||
188 | className="info-bar__inline-button" | ||
189 | type="button" | ||
190 | onClick={() => announcementActions.show({ targetVersion: nextAppReleaseVersion })} | ||
191 | > | ||
192 | <u>{intl.formatMessage(messages.changelog)}</u> | ||
193 | </button> | ||
194 | </InfoBar> | ||
195 | )} | 167 | )} |
196 | <BasicAuth /> | 168 | <BasicAuth /> |
197 | <ShareFranz /> | 169 | <ShareFranz /> |
198 | {isAnnouncementVisible && (<AnnouncementScreen />)} | ||
199 | {services} | 170 | {services} |
171 | {children} | ||
200 | </div> | 172 | </div> |
201 | </div> | 173 | </div> |
202 | </div> | 174 | </div> |
203 | {children} | ||
204 | </div> | 175 | </div> |
205 | </ErrorBoundary> | 176 | </ErrorBoundary> |
206 | ); | 177 | ); |
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js index e63f40c06..1f9c1ea61 100644 --- a/src/containers/auth/AuthLayoutContainer.js +++ b/src/containers/auth/AuthLayoutContainer.js | |||
@@ -51,6 +51,9 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer | |||
51 | isHealthCheckLoading={app.healthCheckRequest.isExecuting} | 51 | isHealthCheckLoading={app.healthCheckRequest.isExecuting} |
52 | isFullScreen={app.isFullScreen} | 52 | isFullScreen={app.isFullScreen} |
53 | darkMode={app.isSystemDarkModeEnabled} | 53 | darkMode={app.isSystemDarkModeEnabled} |
54 | installAppUpdate={actions.app.installUpdate} | ||
55 | nextAppReleaseVersion={app.nextAppReleaseVersion} | ||
56 | appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} | ||
54 | > | 57 | > |
55 | {children} | 58 | {children} |
56 | </AuthLayout> | 59 | </AuthLayout> |
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index d2891a6a4..d290a6094 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js | |||
@@ -23,7 +23,6 @@ import { state as delayAppState } from '../../features/delayApp'; | |||
23 | import { workspaceActions } from '../../features/workspaces/actions'; | 23 | import { workspaceActions } from '../../features/workspaces/actions'; |
24 | import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; | 24 | import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; |
25 | import { workspaceStore } from '../../features/workspaces'; | 25 | import { workspaceStore } from '../../features/workspaces'; |
26 | import { announcementsStore } from '../../features/announcements'; | ||
27 | 26 | ||
28 | export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { | 27 | export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { |
29 | static defaultProps = { | 28 | static defaultProps = { |
@@ -151,7 +150,6 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
151 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} | 150 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} |
152 | darkMode={settings.all.app.darkMode} | 151 | darkMode={settings.all.app.darkMode} |
153 | isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} | 152 | isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} |
154 | isAnnouncementVisible={announcementsStore.isAnnouncementVisible} | ||
155 | > | 153 | > |
156 | {React.Children.count(children) > 0 ? children : null} | 154 | {React.Children.count(children) > 0 ? children : null} |
157 | </AppLayout> | 155 | </AppLayout> |
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index b3f967353..66076504f 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -27,7 +27,6 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
27 | const { actions, stores } = this.props; | 27 | const { actions, stores } = this.props; |
28 | 28 | ||
29 | const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`; | 29 | const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`; |
30 | console.log(url); | ||
31 | 30 | ||
32 | actions.app.openExternalUrl({ url }); | 31 | actions.app.openExternalUrl({ url }); |
33 | } | 32 | } |
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index cb67ee7f2..aa1166f5e 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js | |||
@@ -56,6 +56,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre | |||
56 | minWidth: 600, | 56 | minWidth: 600, |
57 | webPreferences: { | 57 | webPreferences: { |
58 | nodeIntegration: true, | 58 | nodeIntegration: true, |
59 | webviewTag: true, | ||
59 | }, | 60 | }, |
60 | }); | 61 | }); |
61 | paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`); | 62 | paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`); |
diff --git a/src/containers/subscription/SubscriptionPopupScreen.js b/src/containers/subscription/SubscriptionPopupScreen.js index 6641f236d..f76d6c5a6 100644 --- a/src/containers/subscription/SubscriptionPopupScreen.js +++ b/src/containers/subscription/SubscriptionPopupScreen.js | |||
@@ -13,7 +13,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionPopupScr | |||
13 | completeCheck(event) { | 13 | completeCheck(event) { |
14 | const { url } = event; | 14 | const { url } = event; |
15 | 15 | ||
16 | if (url.includes('recurly') && url.includes('confirmation')) { | 16 | if ((url.includes('recurly') && url.includes('confirmation')) || (url.includes('meetfranz') && url.includes('success'))) { |
17 | this.setState({ | 17 | this.setState({ |
18 | complete: true, | 18 | complete: true, |
19 | }); | 19 | }); |
diff --git a/src/dev-app-update.yml b/src/dev-app-update.yml new file mode 100644 index 000000000..8ddca71e3 --- /dev/null +++ b/src/dev-app-update.yml | |||
@@ -0,0 +1,3 @@ | |||
1 | owner: meetfranz | ||
2 | repo: franz | ||
3 | provider: github | ||
diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js index dfce6cdd5..03bd5ba41 100644 --- a/src/features/announcements/components/AnnouncementScreen.js +++ b/src/features/announcements/components/AnnouncementScreen.js | |||
@@ -28,7 +28,7 @@ const smallScreen = '1000px'; | |||
28 | const styles = theme => ({ | 28 | const styles = theme => ({ |
29 | container: { | 29 | container: { |
30 | background: theme.colorBackground, | 30 | background: theme.colorBackground, |
31 | position: 'absolute', | 31 | position: 'relative', |
32 | top: 0, | 32 | top: 0, |
33 | zIndex: 140, | 33 | zIndex: 140, |
34 | width: '100%', | 34 | width: '100%', |
@@ -268,7 +268,7 @@ class AnnouncementScreen extends Component { | |||
268 | <div className={classes.changelog}> | 268 | <div className={classes.changelog}> |
269 | <h1 className={classes.headline}> | 269 | <h1 className={classes.headline}> |
270 | {intl.formatMessage(messages.headline, { | 270 | {intl.formatMessage(messages.headline, { |
271 | version: announcementsStore.currentVersion, | 271 | version: announcementsStore.targetVersion, |
272 | })} | 272 | })} |
273 | </h1> | 273 | </h1> |
274 | <div | 274 | <div |
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js index 4658b976f..f14e7c9a5 100644 --- a/src/features/announcements/index.js +++ b/src/features/announcements/index.js | |||
@@ -7,6 +7,10 @@ export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements'; | |||
7 | 7 | ||
8 | export const announcementsStore = new AnnouncementsStore(); | 8 | export const announcementsStore = new AnnouncementsStore(); |
9 | 9 | ||
10 | export const ANNOUNCEMENTS_ROUTES = { | ||
11 | TARGET: '/announcements/:id', | ||
12 | }; | ||
13 | |||
10 | export default function initAnnouncements(stores, actions) { | 14 | export default function initAnnouncements(stores, actions) { |
11 | // const { features } = stores; | 15 | // const { features } = stores; |
12 | 16 | ||
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js index 7ecc0e346..de7ed2596 100644 --- a/src/features/announcements/store.js +++ b/src/features/announcements/store.js | |||
@@ -2,18 +2,19 @@ import { | |||
2 | action, | 2 | action, |
3 | computed, | 3 | computed, |
4 | observable, | 4 | observable, |
5 | reaction, | ||
6 | } from 'mobx'; | 5 | } from 'mobx'; |
7 | import semver from 'semver'; | 6 | import semver from 'semver'; |
8 | import localStorage from 'mobx-localstorage'; | 7 | import localStorage from 'mobx-localstorage'; |
9 | 8 | ||
10 | import { FeatureStore } from '../utils/FeatureStore'; | 9 | import { FeatureStore } from '../utils/FeatureStore'; |
11 | import { GA_CATEGORY_ANNOUNCEMENTS } from '.'; | 10 | import { ANNOUNCEMENTS_ROUTES, GA_CATEGORY_ANNOUNCEMENTS } from '.'; |
12 | import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; | 11 | import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api'; |
13 | import { announcementActions } from './actions'; | 12 | import { announcementActions } from './actions'; |
14 | import { createActionBindings } from '../utils/ActionBinding'; | 13 | import { createActionBindings } from '../utils/ActionBinding'; |
15 | import { createReactions } from '../../stores/lib/Reaction'; | 14 | import { createReactions } from '../../stores/lib/Reaction'; |
16 | import { gaEvent } from '../../lib/analytics'; | 15 | import { gaEvent } from '../../lib/analytics'; |
16 | import { matchRoute } from '../../helpers/routing-helpers'; | ||
17 | import { DEFAULT_APP_SETTINGS } from '../../config'; | ||
17 | 18 | ||
18 | const LOCAL_STORAGE_KEY = 'announcements'; | 19 | const LOCAL_STORAGE_KEY = 'announcements'; |
19 | 20 | ||
@@ -22,8 +23,6 @@ const debug = require('debug')('Franz:feature:announcements:store'); | |||
22 | export class AnnouncementsStore extends FeatureStore { | 23 | export class AnnouncementsStore extends FeatureStore { |
23 | @observable targetVersion = null; | 24 | @observable targetVersion = null; |
24 | 25 | ||
25 | @observable isAnnouncementVisible = false; | ||
26 | |||
27 | @observable isFeatureActive = false; | 26 | @observable isFeatureActive = false; |
28 | 27 | ||
29 | @computed get changelog() { | 28 | @computed get changelog() { |
@@ -31,7 +30,15 @@ export class AnnouncementsStore extends FeatureStore { | |||
31 | } | 30 | } |
32 | 31 | ||
33 | @computed get announcement() { | 32 | @computed get announcement() { |
34 | return getAnnouncementRequest.result; | 33 | if (!this.stores || !getAnnouncementRequest.result) return null; |
34 | const { locale } = this.stores.app; | ||
35 | const announcement = getAnnouncementRequest.result; | ||
36 | // User locale | ||
37 | if (announcement[locale]) return announcement[locale]; | ||
38 | // Default locale | ||
39 | if (announcement[DEFAULT_APP_SETTINGS.fallbackLocale]) return announcement[DEFAULT_APP_SETTINGS.fallbackLocale]; | ||
40 | // No locales specified | ||
41 | return announcement; | ||
35 | } | 42 | } |
36 | 43 | ||
37 | @computed get areNewsAvailable() { | 44 | @computed get areNewsAvailable() { |
@@ -67,8 +74,9 @@ export class AnnouncementsStore extends FeatureStore { | |||
67 | ])); | 74 | ])); |
68 | 75 | ||
69 | this._reactions = createReactions([ | 76 | this._reactions = createReactions([ |
70 | this._fetchAnnouncements, | 77 | this._showAnnouncementOnRouteMatch, |
71 | this._showAnnouncementToUsersWhoUpdatedApp, | 78 | this._showAnnouncementToUsersWhoUpdatedApp, |
79 | this._fetchAnnouncements, | ||
72 | ]); | 80 | ]); |
73 | this._registerReactions(this._reactions); | 81 | this._registerReactions(this._reactions); |
74 | this.isFeatureActive = true; | 82 | this.isFeatureActive = true; |
@@ -78,7 +86,6 @@ export class AnnouncementsStore extends FeatureStore { | |||
78 | super.stop(); | 86 | super.stop(); |
79 | debug('AnnouncementsStore::stop'); | 87 | debug('AnnouncementsStore::stop'); |
80 | this.isFeatureActive = false; | 88 | this.isFeatureActive = false; |
81 | this.isAnnouncementVisible = false; | ||
82 | } | 89 | } |
83 | 90 | ||
84 | // ======= HELPERS ======= // | 91 | // ======= HELPERS ======= // |
@@ -93,39 +100,29 @@ export class AnnouncementsStore extends FeatureStore { | |||
93 | // ======= ACTIONS ======= // | 100 | // ======= ACTIONS ======= // |
94 | 101 | ||
95 | @action _showAnnouncement = ({ targetVersion } = {}) => { | 102 | @action _showAnnouncement = ({ targetVersion } = {}) => { |
96 | if (!this.areNewsAvailable) return; | 103 | const { router } = this.stores; |
97 | this.targetVersion = targetVersion || this.currentVersion; | 104 | this.targetVersion = targetVersion || this.currentVersion; |
98 | this.isAnnouncementVisible = true; | ||
99 | this.actions.service.blurActive(); | ||
100 | this._updateSettings({ | 105 | this._updateSettings({ |
101 | lastSeenAnnouncementVersion: this.currentVersion, | 106 | lastSeenAnnouncementVersion: this.currentVersion, |
102 | }); | 107 | }); |
103 | const dispose = reaction( | 108 | const targetRoute = `/announcements/${this.targetVersion}`; |
104 | () => this.stores.services.active, | 109 | if (router.location.pathname !== targetRoute) { |
105 | () => { | 110 | this.stores.router.push(targetRoute); |
106 | this._hideAnnouncement(); | 111 | } |
107 | dispose(); | ||
108 | }, | ||
109 | ); | ||
110 | |||
111 | gaEvent(GA_CATEGORY_ANNOUNCEMENTS, 'show'); | 112 | gaEvent(GA_CATEGORY_ANNOUNCEMENTS, 'show'); |
112 | }; | 113 | }; |
113 | 114 | ||
114 | @action _hideAnnouncement() { | ||
115 | this.isAnnouncementVisible = false; | ||
116 | } | ||
117 | |||
118 | // ======= REACTIONS ======== | 115 | // ======= REACTIONS ======== |
119 | 116 | ||
120 | _showAnnouncementToUsersWhoUpdatedApp = () => { | 117 | _showAnnouncementToUsersWhoUpdatedApp = () => { |
121 | const { announcement, isNewUser } = this; | 118 | const { announcement, isNewUser } = this; |
122 | // Check if there is an announcement and on't show announcements to new users | 119 | // Check if there is an announcement and don't show announcements to new users |
123 | if (!announcement || isNewUser) return; | 120 | if (!announcement || isNewUser) return; |
124 | 121 | ||
125 | // Check if the user has already used current version (= has seen the announcement) | 122 | // Check if the user has already used current version (= has seen the announcement) |
126 | const { currentVersion, lastSeenAnnouncementVersion } = this; | 123 | const { currentVersion, lastSeenAnnouncementVersion } = this; |
127 | if (semver.gt(currentVersion, lastSeenAnnouncementVersion || '0.0.0')) { | 124 | if (semver.gt(currentVersion, lastSeenAnnouncementVersion || '0.0.0')) { |
128 | debug(`${currentVersion} < ${lastSeenAnnouncementVersion}: announcement is shown`); | 125 | debug(`${currentVersion} > ${lastSeenAnnouncementVersion}: announcement is shown`); |
129 | this._showAnnouncement(); | 126 | this._showAnnouncement(); |
130 | } | 127 | } |
131 | }; | 128 | }; |
@@ -133,12 +130,16 @@ export class AnnouncementsStore extends FeatureStore { | |||
133 | _fetchAnnouncements = () => { | 130 | _fetchAnnouncements = () => { |
134 | const targetVersion = this.targetVersion || this.currentVersion; | 131 | const targetVersion = this.targetVersion || this.currentVersion; |
135 | if (!targetVersion) return; | 132 | if (!targetVersion) return; |
136 | getChangelogRequest.execute(targetVersion); | 133 | getChangelogRequest.reset().execute(targetVersion); |
137 | // We only fetch announcements for current / older versions | 134 | getAnnouncementRequest.reset().execute(targetVersion); |
138 | if (targetVersion <= this.currentVersion) { | 135 | }; |
139 | getAnnouncementRequest.execute(targetVersion); | 136 | |
140 | } else { | 137 | _showAnnouncementOnRouteMatch = () => { |
141 | getAnnouncementRequest.reset(); | 138 | const { router } = this.stores; |
139 | const match = matchRoute(ANNOUNCEMENTS_ROUTES.TARGET, router.location.pathname); | ||
140 | if (match) { | ||
141 | const targetVersion = match.id; | ||
142 | this._showAnnouncement({ targetVersion }); | ||
142 | } | 143 | } |
143 | } | 144 | } |
144 | } | 145 | } |
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index e11513d1f..07b16ff23 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js | |||
@@ -57,6 +57,10 @@ export default class WorkspacesStore extends FeatureStore { | |||
57 | return !this.isPremiumUpgradeRequired; | 57 | return !this.isPremiumUpgradeRequired; |
58 | } | 58 | } |
59 | 59 | ||
60 | @computed get isAnyWorkspaceActive() { | ||
61 | return !!this.activeWorkspace; | ||
62 | } | ||
63 | |||
60 | // ========== PRIVATE PROPERTIES ========= // | 64 | // ========== PRIVATE PROPERTIES ========= // |
61 | 65 | ||
62 | _wasDrawerOpenBeforeSettingsRoute = null; | 66 | _wasDrawerOpenBeforeSettingsRoute = null; |
@@ -229,6 +233,14 @@ export default class WorkspacesStore extends FeatureStore { | |||
229 | this.actions.ui.openSettings({ path: 'workspaces' }); | 233 | this.actions.ui.openSettings({ path: 'workspaces' }); |
230 | }; | 234 | }; |
231 | 235 | ||
236 | @action reorderServicesOfActiveWorkspace = async ({ oldIndex, newIndex }) => { | ||
237 | const { activeWorkspace } = this; | ||
238 | const { services } = activeWorkspace; | ||
239 | // Move services from the old to the new position | ||
240 | services.splice(newIndex, 0, services.splice(oldIndex, 1)[0]); | ||
241 | await updateWorkspaceRequest.execute(activeWorkspace); | ||
242 | }; | ||
243 | |||
232 | // Reactions | 244 | // Reactions |
233 | 245 | ||
234 | _setFeatureEnabledReaction = () => { | 246 | _setFeatureEnabledReaction = () => { |
@@ -255,13 +267,15 @@ export default class WorkspacesStore extends FeatureStore { | |||
255 | _setActiveServiceOnWorkspaceSwitchReaction = () => { | 267 | _setActiveServiceOnWorkspaceSwitchReaction = () => { |
256 | if (!this.isFeatureActive) return; | 268 | if (!this.isFeatureActive) return; |
257 | if (this.activeWorkspace) { | 269 | if (this.activeWorkspace) { |
258 | const services = this.stores.services.allDisplayed; | 270 | const activeService = this.stores.services.active; |
259 | const activeService = services.find(s => s.isActive); | ||
260 | const workspaceServices = this.getWorkspaceServices(this.activeWorkspace); | 271 | const workspaceServices = this.getWorkspaceServices(this.activeWorkspace); |
261 | if (workspaceServices.length <= 0) return; | 272 | if (workspaceServices.length <= 0) return; |
262 | const isActiveServiceInWorkspace = workspaceServices.includes(activeService); | 273 | const isActiveServiceInWorkspace = workspaceServices.includes(activeService); |
263 | if (!isActiveServiceInWorkspace) { | 274 | if (!isActiveServiceInWorkspace) { |
264 | this.actions.service.setActive({ serviceId: workspaceServices[0].id }); | 275 | this.actions.service.setActive({ |
276 | serviceId: workspaceServices[0].id, | ||
277 | keepActiveRoute: true, | ||
278 | }); | ||
265 | } | 279 | } |
266 | } | 280 | } |
267 | }; | 281 | }; |
@@ -298,17 +312,16 @@ export default class WorkspacesStore extends FeatureStore { | |||
298 | 312 | ||
299 | _cleanupInvalidServiceReferences = () => { | 313 | _cleanupInvalidServiceReferences = () => { |
300 | const { services } = this.stores; | 314 | const { services } = this.stores; |
301 | let invalidServiceReferencesExist = false; | 315 | const { allServicesRequest } = services; |
316 | const servicesHaveBeenLoaded = allServicesRequest.wasExecuted && !allServicesRequest.isError; | ||
317 | // Loop through all workspaces and remove invalid service ids (locally) | ||
302 | this.workspaces.forEach((workspace) => { | 318 | this.workspaces.forEach((workspace) => { |
303 | workspace.services.forEach((serviceId) => { | 319 | workspace.services.forEach((serviceId) => { |
304 | if (!services.one(serviceId)) { | 320 | if (servicesHaveBeenLoaded && !services.one(serviceId)) { |
305 | invalidServiceReferencesExist = true; | 321 | workspace.services.remove(serviceId); |
306 | } | 322 | } |
307 | }); | 323 | }); |
308 | }); | 324 | }); |
309 | if (invalidServiceReferencesExist) { | ||
310 | getUserWorkspacesRequest.execute(); | ||
311 | } | ||
312 | }; | 325 | }; |
313 | 326 | ||
314 | _stopPremiumActionsAndReactions = () => { | 327 | _stopPremiumActionsAndReactions = () => { |
diff --git a/src/helpers/validation-helpers.js b/src/helpers/validation-helpers.js index 2f762437d..ab2376b1b 100644 --- a/src/helpers/validation-helpers.js +++ b/src/helpers/validation-helpers.js | |||
@@ -1,4 +1,5 @@ | |||
1 | import { defineMessages } from 'react-intl'; | 1 | import { defineMessages } from 'react-intl'; |
2 | import isEmail from 'validator/lib/isEmail'; | ||
2 | 3 | ||
3 | const messages = defineMessages({ | 4 | const messages = defineMessages({ |
4 | required: { | 5 | required: { |
@@ -30,14 +31,7 @@ export function required({ field }) { | |||
30 | 31 | ||
31 | export function email({ field }) { | 32 | export function email({ field }) { |
32 | const value = field.value.trim(); | 33 | const value = field.value.trim(); |
33 | let isValid = false; | 34 | const isValid = isEmail(value); |
34 | |||
35 | if (value !== '') { | ||
36 | isValid = Boolean(value.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}/i)); | ||
37 | } else { | ||
38 | isValid = true; | ||
39 | } | ||
40 | |||
41 | return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })]; | 35 | return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })]; |
42 | } | 36 | } |
43 | 37 | ||
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index b2aaaa070..50d2223dd 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -7,16 +7,16 @@ | |||
7 | "feature.delayApp.text" : "Franz continuarà en {seconds} segons", | 7 | "feature.delayApp.text" : "Franz continuarà en {seconds} segons", |
8 | "feature.shareFranz.action.email" : "Envia com a correu", | 8 | "feature.shareFranz.action.email" : "Envia com a correu", |
9 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", | 9 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 10 | "feature.shareFranz.action.twitter" : "Compartir a Twitter", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Junts millorem Franz!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta per a Whatsapp, Messenger, Slack, Skype a www,meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta de Whatsapp, Messenger, Slack, Skype i altres a www.meetfranz.com\/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Digues als teus amics i col·legues l'increïble que és Franz i ajuda'ns a còrrer la veu ", |
15 | "global.api.unhealthy" : "No es pot connectar amb els serveis en línia de Franz", | 15 | "global.api.unhealthy" : "No es pot connectar amb els serveis en línia de Franz", |
16 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", | 16 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", |
17 | "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", | 17 | "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 18 | "global.spellchecking.autodetect" : "Detectar l'idioma automàticament", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 19 | "global.spellchecking.autodetect.short" : "Automàtic", |
20 | "global.spellchecking.language" : "Corrector ortogràfic", | 20 | "global.spellchecking.language" : "Corrector ortogràfic", |
21 | "import.headline" : "Importa els teus serveis Franz 4", | 21 | "import.headline" : "Importa els teus serveis Franz 4", |
22 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", | 22 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Accedir", | 44 | "login.submit.label" : "Accedir", |
45 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", | 45 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", |
46 | "menu.app.about" : "Sobre Franz", | 46 | "menu.app.about" : "Sobre Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "Què hi ha de nou?", |
48 | "menu.app.checkForUpdates" : "Comprova si hi ha actualitzacions", | ||
48 | "menu.app.hide" : "Amaga", | 49 | "menu.app.hide" : "Amaga", |
49 | "menu.app.hideOthers" : "Amaga altres", | 50 | "menu.app.hideOthers" : "Amaga altres", |
50 | "menu.app.quit" : "Surt", | 51 | "menu.app.quit" : "Surt", |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index aadfeffbc..809c5d5a8 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -1,7 +1,7 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Obnovit", | 2 | "app.errorHandler.action" : "Obnovit", |
3 | "app.errorHandler.headline" : "Něco se pokazilo", | 3 | "app.errorHandler.headline" : "Něco se pokazilo", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Změny ve Franz {version}", |
5 | "feature.delayApp.action" : "Podpoř Franz a získej Supporter licenci", | 5 | "feature.delayApp.action" : "Podpoř Franz a získej Supporter licenci", |
6 | "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeš už muset čekat", | 6 | "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeš už muset čekat", |
7 | "feature.delayApp.text" : "Franz bude pokračovat v {seconds} sekundách.", | 7 | "feature.delayApp.text" : "Franz bude pokračovat v {seconds} sekundách.", |
@@ -9,7 +9,7 @@ | |||
9 | "feature.shareFranz.action.facebook" : "Sdílet na Facebooku", | 9 | "feature.shareFranz.action.facebook" : "Sdílet na Facebooku", |
10 | "feature.shareFranz.action.twitter" : "Sdílet na Twitteru", | 10 | "feature.shareFranz.action.twitter" : "Sdílet na Twitteru", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Franz is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Přidali jsme {count} služeb do Franze. Získejte zdarma aplikace pro WhatsApp, Messenger, SLack, Skype a další na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Nemůžeme připojit Franz k online službám", | 15 | "global.api.unhealthy" : "Nemůžeme připojit Franz k online službám", |
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Sezení vypršelo, prosím přihlaste se znovu", | 45 | "login.tokenExpired" : "Sezení vypršelo, prosím přihlaste se znovu", |
46 | "menu.app.about" : "O aplikaci", | 46 | "menu.app.about" : "O aplikaci", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Zkontrolovat aktualizace", | ||
48 | "menu.app.hide" : "Skrýt", | 49 | "menu.app.hide" : "Skrýt", |
49 | "menu.app.hideOthers" : "Skryt ostatní", | 50 | "menu.app.hideOthers" : "Skryt ostatní", |
50 | "menu.app.quit" : "Ukončit", | 51 | "menu.app.quit" : "Ukončit", |
@@ -139,7 +140,7 @@ | |||
139 | "settings.account.manageSubscription.label" : "Spravovat vaše předplatné", | 140 | "settings.account.manageSubscription.label" : "Spravovat vaše předplatné", |
140 | "settings.account.successInfo" : "Vaše změny byly uloženy", | 141 | "settings.account.successInfo" : "Vaše změny byly uloženy", |
141 | "settings.account.tryReloadServices" : "Zkusit opět", | 142 | "settings.account.tryReloadServices" : "Zkusit opět", |
142 | "settings.account.tryReloadUserInfoRequest" : "Zkusit opět", | 143 | "settings.account.tryReloadUserInfoRequest" : "Zkusit znovu", |
143 | "settings.account.userInfoRequestFailed" : "Nelze načíst informace o uživateli.", | 144 | "settings.account.userInfoRequestFailed" : "Nelze načíst informace o uživateli.", |
144 | "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti", | 145 | "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti", |
145 | "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", | 146 | "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", |
@@ -262,7 +263,7 @@ | |||
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Your workspaces", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Zkusit opět", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Zkusit znovu", |
266 | "settings.workspaces.updatedInfo" : "Vaše změny byly uloženy", | 267 | "settings.workspaces.updatedInfo" : "Vaše změny byly uloženy", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index bd5193177..4d06e17e4 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -9,10 +9,10 @@ | |||
9 | "feature.shareFranz.action.facebook" : "Auf Facebook teilen", | 9 | "feature.shareFranz.action.facebook" : "Auf Facebook teilen", |
10 | "feature.shareFranz.action.twitter" : "Auf Twitter teilen", | 10 | "feature.shareFranz.action.twitter" : "Auf Twitter teilen", |
11 | "feature.shareFranz.headline" : "Gemeinsam ist Franz noch besser!", | 11 | "feature.shareFranz.headline" : "Gemeinsam ist Franz noch besser!", |
12 | "feature.shareFranz.shareText.email" : "Ich verwende Franz! Hol dir jetzt die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Ich habe {count} Services zu Franz hinzugefügt! Hol dir jetzt die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ich habe {count} Services zu Franz hinzugefügt! Hol dir die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Ich habe {count} Services zu Franz hinzugefügt! Hol dir die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Bitte erzähle deinen Freunden und Kolleginnen, warum du Franz toll findest.", | 14 | "feature.shareFranz.text" : "Bitte erzähle deinen Freunden und Kolleginnen, warum du Franz toll findest.", |
15 | "global.api.unhealthy" : "Verbindung zum Franz Online Service fehlgeschlagen", | 15 | "global.api.unhealthy" : "Verbindung zum Franz-Online-Service fehlgeschlagen", |
16 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", | 16 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", |
17 | "global.spellchecker.useDefault" : "Standard benutzen ({default})", | 17 | "global.spellchecker.useDefault" : "Standard benutzen ({default})", |
18 | "global.spellchecking.autodetect" : "Sprache automatisch erkennen", | 18 | "global.spellchecking.autodetect" : "Sprache automatisch erkennen", |
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", | 45 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", |
46 | "menu.app.about" : "Über Franz", | 46 | "menu.app.about" : "Über Franz", |
47 | "menu.app.announcement" : "Was ist neu?", | 47 | "menu.app.announcement" : "Was ist neu?", |
48 | "menu.app.checkForUpdates" : "Nach Updates suchen", | ||
48 | "menu.app.hide" : "Ausblenden", | 49 | "menu.app.hide" : "Ausblenden", |
49 | "menu.app.hideOthers" : "Andere ausblenden", | 50 | "menu.app.hideOthers" : "Andere ausblenden", |
50 | "menu.app.quit" : "Beenden", | 51 | "menu.app.quit" : "Beenden", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 632eb38fd..d517b456b 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -2,6 +2,50 @@ | |||
2 | { | 2 | { |
3 | "descriptors": [ | 3 | "descriptors": [ |
4 | { | 4 | { |
5 | "defaultMessage": "!!!A new update for Franz is available.", | ||
6 | "end": { | ||
7 | "column": 3, | ||
8 | "line": 12 | ||
9 | }, | ||
10 | "file": "src/components/AppUpdateInfoBar.js", | ||
11 | "id": "infobar.updateAvailable", | ||
12 | "start": { | ||
13 | "column": 19, | ||
14 | "line": 9 | ||
15 | } | ||
16 | }, | ||
17 | { | ||
18 | "defaultMessage": "!!!Changelog", | ||
19 | "end": { | ||
20 | "column": 3, | ||
21 | "line": 16 | ||
22 | }, | ||
23 | "file": "src/components/AppUpdateInfoBar.js", | ||
24 | "id": "infobar.buttonChangelog", | ||
25 | "start": { | ||
26 | "column": 13, | ||
27 | "line": 13 | ||
28 | } | ||
29 | }, | ||
30 | { | ||
31 | "defaultMessage": "!!!Restart & install update", | ||
32 | "end": { | ||
33 | "column": 3, | ||
34 | "line": 20 | ||
35 | }, | ||
36 | "file": "src/components/AppUpdateInfoBar.js", | ||
37 | "id": "infobar.buttonInstallUpdate", | ||
38 | "start": { | ||
39 | "column": 23, | ||
40 | "line": 17 | ||
41 | } | ||
42 | } | ||
43 | ], | ||
44 | "path": "src/components/AppUpdateInfoBar.json" | ||
45 | }, | ||
46 | { | ||
47 | "descriptors": [ | ||
48 | { | ||
5 | "defaultMessage": "!!!Import your Franz 4 services", | 49 | "defaultMessage": "!!!Import your Franz 4 services", |
6 | "end": { | 50 | "end": { |
7 | "column": 3, | 51 | "column": 3, |
@@ -625,78 +669,39 @@ | |||
625 | "defaultMessage": "!!!Your services have been updated.", | 669 | "defaultMessage": "!!!Your services have been updated.", |
626 | "end": { | 670 | "end": { |
627 | "column": 3, | 671 | "column": 3, |
628 | "line": 30 | 672 | "line": 29 |
629 | }, | 673 | }, |
630 | "file": "src/components/layout/AppLayout.js", | 674 | "file": "src/components/layout/AppLayout.js", |
631 | "id": "infobar.servicesUpdated", | 675 | "id": "infobar.servicesUpdated", |
632 | "start": { | 676 | "start": { |
633 | "column": 19, | 677 | "column": 19, |
634 | "line": 27 | 678 | "line": 26 |
635 | } | ||
636 | }, | ||
637 | { | ||
638 | "defaultMessage": "!!!A new update for Franz is available.", | ||
639 | "end": { | ||
640 | "column": 3, | ||
641 | "line": 34 | ||
642 | }, | ||
643 | "file": "src/components/layout/AppLayout.js", | ||
644 | "id": "infobar.updateAvailable", | ||
645 | "start": { | ||
646 | "column": 19, | ||
647 | "line": 31 | ||
648 | } | 679 | } |
649 | }, | 680 | }, |
650 | { | 681 | { |
651 | "defaultMessage": "!!!Reload services", | 682 | "defaultMessage": "!!!Reload services", |
652 | "end": { | 683 | "end": { |
653 | "column": 3, | 684 | "column": 3, |
654 | "line": 38 | 685 | "line": 33 |
655 | }, | 686 | }, |
656 | "file": "src/components/layout/AppLayout.js", | 687 | "file": "src/components/layout/AppLayout.js", |
657 | "id": "infobar.buttonReloadServices", | 688 | "id": "infobar.buttonReloadServices", |
658 | "start": { | 689 | "start": { |
659 | "column": 24, | 690 | "column": 24, |
660 | "line": 35 | 691 | "line": 30 |
661 | } | ||
662 | }, | ||
663 | { | ||
664 | "defaultMessage": "!!!Changelog", | ||
665 | "end": { | ||
666 | "column": 3, | ||
667 | "line": 42 | ||
668 | }, | ||
669 | "file": "src/components/layout/AppLayout.js", | ||
670 | "id": "infobar.buttonChangelog", | ||
671 | "start": { | ||
672 | "column": 13, | ||
673 | "line": 39 | ||
674 | } | ||
675 | }, | ||
676 | { | ||
677 | "defaultMessage": "!!!Restart & install update", | ||
678 | "end": { | ||
679 | "column": 3, | ||
680 | "line": 46 | ||
681 | }, | ||
682 | "file": "src/components/layout/AppLayout.js", | ||
683 | "id": "infobar.buttonInstallUpdate", | ||
684 | "start": { | ||
685 | "column": 23, | ||
686 | "line": 43 | ||
687 | } | 692 | } |
688 | }, | 693 | }, |
689 | { | 694 | { |
690 | "defaultMessage": "!!!Could not load services and user information", | 695 | "defaultMessage": "!!!Could not load services and user information", |
691 | "end": { | 696 | "end": { |
692 | "column": 3, | 697 | "column": 3, |
693 | "line": 50 | 698 | "line": 37 |
694 | }, | 699 | }, |
695 | "file": "src/components/layout/AppLayout.js", | 700 | "file": "src/components/layout/AppLayout.js", |
696 | "id": "infobar.requiredRequestsFailed", | 701 | "id": "infobar.requiredRequestsFailed", |
697 | "start": { | 702 | "start": { |
698 | "column": 26, | 703 | "column": 26, |
699 | "line": 47 | 704 | "line": 34 |
700 | } | 705 | } |
701 | } | 706 | } |
702 | ], | 707 | ], |
@@ -3759,65 +3764,65 @@ | |||
3759 | "defaultMessage": "!!!Field is required", | 3764 | "defaultMessage": "!!!Field is required", |
3760 | "end": { | 3765 | "end": { |
3761 | "column": 3, | 3766 | "column": 3, |
3762 | "line": 7 | 3767 | "line": 8 |
3763 | }, | 3768 | }, |
3764 | "file": "src/helpers/validation-helpers.js", | 3769 | "file": "src/helpers/validation-helpers.js", |
3765 | "id": "validation.required", | 3770 | "id": "validation.required", |
3766 | "start": { | 3771 | "start": { |
3767 | "column": 12, | 3772 | "column": 12, |
3768 | "line": 4 | 3773 | "line": 5 |
3769 | } | 3774 | } |
3770 | }, | 3775 | }, |
3771 | { | 3776 | { |
3772 | "defaultMessage": "!!!Email not valid", | 3777 | "defaultMessage": "!!!Email not valid", |
3773 | "end": { | 3778 | "end": { |
3774 | "column": 3, | 3779 | "column": 3, |
3775 | "line": 11 | 3780 | "line": 12 |
3776 | }, | 3781 | }, |
3777 | "file": "src/helpers/validation-helpers.js", | 3782 | "file": "src/helpers/validation-helpers.js", |
3778 | "id": "validation.email", | 3783 | "id": "validation.email", |
3779 | "start": { | 3784 | "start": { |
3780 | "column": 9, | 3785 | "column": 9, |
3781 | "line": 8 | 3786 | "line": 9 |
3782 | } | 3787 | } |
3783 | }, | 3788 | }, |
3784 | { | 3789 | { |
3785 | "defaultMessage": "!!!Not a valid URL", | 3790 | "defaultMessage": "!!!Not a valid URL", |
3786 | "end": { | 3791 | "end": { |
3787 | "column": 3, | 3792 | "column": 3, |
3788 | "line": 15 | 3793 | "line": 16 |
3789 | }, | 3794 | }, |
3790 | "file": "src/helpers/validation-helpers.js", | 3795 | "file": "src/helpers/validation-helpers.js", |
3791 | "id": "validation.url", | 3796 | "id": "validation.url", |
3792 | "start": { | 3797 | "start": { |
3793 | "column": 7, | 3798 | "column": 7, |
3794 | "line": 12 | 3799 | "line": 13 |
3795 | } | 3800 | } |
3796 | }, | 3801 | }, |
3797 | { | 3802 | { |
3798 | "defaultMessage": "!!!Too few characters", | 3803 | "defaultMessage": "!!!Too few characters", |
3799 | "end": { | 3804 | "end": { |
3800 | "column": 3, | 3805 | "column": 3, |
3801 | "line": 19 | 3806 | "line": 20 |
3802 | }, | 3807 | }, |
3803 | "file": "src/helpers/validation-helpers.js", | 3808 | "file": "src/helpers/validation-helpers.js", |
3804 | "id": "validation.minLength", | 3809 | "id": "validation.minLength", |
3805 | "start": { | 3810 | "start": { |
3806 | "column": 13, | 3811 | "column": 13, |
3807 | "line": 16 | 3812 | "line": 17 |
3808 | } | 3813 | } |
3809 | }, | 3814 | }, |
3810 | { | 3815 | { |
3811 | "defaultMessage": "!!!At least one is required", | 3816 | "defaultMessage": "!!!At least one is required", |
3812 | "end": { | 3817 | "end": { |
3813 | "column": 3, | 3818 | "column": 3, |
3814 | "line": 23 | 3819 | "line": 24 |
3815 | }, | 3820 | }, |
3816 | "file": "src/helpers/validation-helpers.js", | 3821 | "file": "src/helpers/validation-helpers.js", |
3817 | "id": "validation.oneRequired", | 3822 | "id": "validation.oneRequired", |
3818 | "start": { | 3823 | "start": { |
3819 | "column": 15, | 3824 | "column": 15, |
3820 | "line": 20 | 3825 | "line": 21 |
3821 | } | 3826 | } |
3822 | } | 3827 | } |
3823 | ], | 3828 | ], |
@@ -4416,185 +4421,198 @@ | |||
4416 | } | 4421 | } |
4417 | }, | 4422 | }, |
4418 | { | 4423 | { |
4419 | "defaultMessage": "!!!Hide", | 4424 | "defaultMessage": "!!!Check for updates", |
4420 | "end": { | 4425 | "end": { |
4421 | "column": 3, | 4426 | "column": 3, |
4422 | "line": 174 | 4427 | "line": 174 |
4423 | }, | 4428 | }, |
4424 | "file": "src/lib/Menu.js", | 4429 | "file": "src/lib/Menu.js", |
4430 | "id": "menu.app.checkForUpdates", | ||
4431 | "start": { | ||
4432 | "column": 19, | ||
4433 | "line": 171 | ||
4434 | } | ||
4435 | }, | ||
4436 | { | ||
4437 | "defaultMessage": "!!!Hide", | ||
4438 | "end": { | ||
4439 | "column": 3, | ||
4440 | "line": 178 | ||
4441 | }, | ||
4442 | "file": "src/lib/Menu.js", | ||
4425 | "id": "menu.app.hide", | 4443 | "id": "menu.app.hide", |
4426 | "start": { | 4444 | "start": { |
4427 | "column": 8, | 4445 | "column": 8, |
4428 | "line": 171 | 4446 | "line": 175 |
4429 | } | 4447 | } |
4430 | }, | 4448 | }, |
4431 | { | 4449 | { |
4432 | "defaultMessage": "!!!Hide Others", | 4450 | "defaultMessage": "!!!Hide Others", |
4433 | "end": { | 4451 | "end": { |
4434 | "column": 3, | 4452 | "column": 3, |
4435 | "line": 178 | 4453 | "line": 182 |
4436 | }, | 4454 | }, |
4437 | "file": "src/lib/Menu.js", | 4455 | "file": "src/lib/Menu.js", |
4438 | "id": "menu.app.hideOthers", | 4456 | "id": "menu.app.hideOthers", |
4439 | "start": { | 4457 | "start": { |
4440 | "column": 14, | 4458 | "column": 14, |
4441 | "line": 175 | 4459 | "line": 179 |
4442 | } | 4460 | } |
4443 | }, | 4461 | }, |
4444 | { | 4462 | { |
4445 | "defaultMessage": "!!!Unhide", | 4463 | "defaultMessage": "!!!Unhide", |
4446 | "end": { | 4464 | "end": { |
4447 | "column": 3, | 4465 | "column": 3, |
4448 | "line": 182 | 4466 | "line": 186 |
4449 | }, | 4467 | }, |
4450 | "file": "src/lib/Menu.js", | 4468 | "file": "src/lib/Menu.js", |
4451 | "id": "menu.app.unhide", | 4469 | "id": "menu.app.unhide", |
4452 | "start": { | 4470 | "start": { |
4453 | "column": 10, | 4471 | "column": 10, |
4454 | "line": 179 | 4472 | "line": 183 |
4455 | } | 4473 | } |
4456 | }, | 4474 | }, |
4457 | { | 4475 | { |
4458 | "defaultMessage": "!!!Quit", | 4476 | "defaultMessage": "!!!Quit", |
4459 | "end": { | 4477 | "end": { |
4460 | "column": 3, | 4478 | "column": 3, |
4461 | "line": 186 | 4479 | "line": 190 |
4462 | }, | 4480 | }, |
4463 | "file": "src/lib/Menu.js", | 4481 | "file": "src/lib/Menu.js", |
4464 | "id": "menu.app.quit", | 4482 | "id": "menu.app.quit", |
4465 | "start": { | 4483 | "start": { |
4466 | "column": 8, | 4484 | "column": 8, |
4467 | "line": 183 | 4485 | "line": 187 |
4468 | } | 4486 | } |
4469 | }, | 4487 | }, |
4470 | { | 4488 | { |
4471 | "defaultMessage": "!!!Add New Service...", | 4489 | "defaultMessage": "!!!Add New Service...", |
4472 | "end": { | 4490 | "end": { |
4473 | "column": 3, | 4491 | "column": 3, |
4474 | "line": 190 | 4492 | "line": 194 |
4475 | }, | 4493 | }, |
4476 | "file": "src/lib/Menu.js", | 4494 | "file": "src/lib/Menu.js", |
4477 | "id": "menu.services.addNewService", | 4495 | "id": "menu.services.addNewService", |
4478 | "start": { | 4496 | "start": { |
4479 | "column": 17, | 4497 | "column": 17, |
4480 | "line": 187 | 4498 | "line": 191 |
4481 | } | 4499 | } |
4482 | }, | 4500 | }, |
4483 | { | 4501 | { |
4484 | "defaultMessage": "!!!Add New Workspace...", | 4502 | "defaultMessage": "!!!Add New Workspace...", |
4485 | "end": { | 4503 | "end": { |
4486 | "column": 3, | 4504 | "column": 3, |
4487 | "line": 194 | 4505 | "line": 198 |
4488 | }, | 4506 | }, |
4489 | "file": "src/lib/Menu.js", | 4507 | "file": "src/lib/Menu.js", |
4490 | "id": "menu.workspaces.addNewWorkspace", | 4508 | "id": "menu.workspaces.addNewWorkspace", |
4491 | "start": { | 4509 | "start": { |
4492 | "column": 19, | 4510 | "column": 19, |
4493 | "line": 191 | 4511 | "line": 195 |
4494 | } | 4512 | } |
4495 | }, | 4513 | }, |
4496 | { | 4514 | { |
4497 | "defaultMessage": "!!!Open workspace drawer", | 4515 | "defaultMessage": "!!!Open workspace drawer", |
4498 | "end": { | 4516 | "end": { |
4499 | "column": 3, | 4517 | "column": 3, |
4500 | "line": 198 | 4518 | "line": 202 |
4501 | }, | 4519 | }, |
4502 | "file": "src/lib/Menu.js", | 4520 | "file": "src/lib/Menu.js", |
4503 | "id": "menu.workspaces.openWorkspaceDrawer", | 4521 | "id": "menu.workspaces.openWorkspaceDrawer", |
4504 | "start": { | 4522 | "start": { |
4505 | "column": 23, | 4523 | "column": 23, |
4506 | "line": 195 | 4524 | "line": 199 |
4507 | } | 4525 | } |
4508 | }, | 4526 | }, |
4509 | { | 4527 | { |
4510 | "defaultMessage": "!!!Close workspace drawer", | 4528 | "defaultMessage": "!!!Close workspace drawer", |
4511 | "end": { | 4529 | "end": { |
4512 | "column": 3, | 4530 | "column": 3, |
4513 | "line": 202 | 4531 | "line": 206 |
4514 | }, | 4532 | }, |
4515 | "file": "src/lib/Menu.js", | 4533 | "file": "src/lib/Menu.js", |
4516 | "id": "menu.workspaces.closeWorkspaceDrawer", | 4534 | "id": "menu.workspaces.closeWorkspaceDrawer", |
4517 | "start": { | 4535 | "start": { |
4518 | "column": 24, | 4536 | "column": 24, |
4519 | "line": 199 | 4537 | "line": 203 |
4520 | } | 4538 | } |
4521 | }, | 4539 | }, |
4522 | { | 4540 | { |
4523 | "defaultMessage": "!!!Activate next service...", | 4541 | "defaultMessage": "!!!Activate next service...", |
4524 | "end": { | 4542 | "end": { |
4525 | "column": 3, | 4543 | "column": 3, |
4526 | "line": 206 | 4544 | "line": 210 |
4527 | }, | 4545 | }, |
4528 | "file": "src/lib/Menu.js", | 4546 | "file": "src/lib/Menu.js", |
4529 | "id": "menu.services.setNextServiceActive", | 4547 | "id": "menu.services.setNextServiceActive", |
4530 | "start": { | 4548 | "start": { |
4531 | "column": 23, | 4549 | "column": 23, |
4532 | "line": 203 | 4550 | "line": 207 |
4533 | } | 4551 | } |
4534 | }, | 4552 | }, |
4535 | { | 4553 | { |
4536 | "defaultMessage": "!!!Activate previous service...", | 4554 | "defaultMessage": "!!!Activate previous service...", |
4537 | "end": { | 4555 | "end": { |
4538 | "column": 3, | 4556 | "column": 3, |
4539 | "line": 210 | 4557 | "line": 214 |
4540 | }, | 4558 | }, |
4541 | "file": "src/lib/Menu.js", | 4559 | "file": "src/lib/Menu.js", |
4542 | "id": "menu.services.activatePreviousService", | 4560 | "id": "menu.services.activatePreviousService", |
4543 | "start": { | 4561 | "start": { |
4544 | "column": 27, | 4562 | "column": 27, |
4545 | "line": 207 | 4563 | "line": 211 |
4546 | } | 4564 | } |
4547 | }, | 4565 | }, |
4548 | { | 4566 | { |
4549 | "defaultMessage": "!!!Disable notifications & audio", | 4567 | "defaultMessage": "!!!Disable notifications & audio", |
4550 | "end": { | 4568 | "end": { |
4551 | "column": 3, | 4569 | "column": 3, |
4552 | "line": 214 | 4570 | "line": 218 |
4553 | }, | 4571 | }, |
4554 | "file": "src/lib/Menu.js", | 4572 | "file": "src/lib/Menu.js", |
4555 | "id": "sidebar.muteApp", | 4573 | "id": "sidebar.muteApp", |
4556 | "start": { | 4574 | "start": { |
4557 | "column": 11, | 4575 | "column": 11, |
4558 | "line": 211 | 4576 | "line": 215 |
4559 | } | 4577 | } |
4560 | }, | 4578 | }, |
4561 | { | 4579 | { |
4562 | "defaultMessage": "!!!Enable notifications & audio", | 4580 | "defaultMessage": "!!!Enable notifications & audio", |
4563 | "end": { | 4581 | "end": { |
4564 | "column": 3, | 4582 | "column": 3, |
4565 | "line": 218 | 4583 | "line": 222 |
4566 | }, | 4584 | }, |
4567 | "file": "src/lib/Menu.js", | 4585 | "file": "src/lib/Menu.js", |
4568 | "id": "sidebar.unmuteApp", | 4586 | "id": "sidebar.unmuteApp", |
4569 | "start": { | 4587 | "start": { |
4570 | "column": 13, | 4588 | "column": 13, |
4571 | "line": 215 | 4589 | "line": 219 |
4572 | } | 4590 | } |
4573 | }, | 4591 | }, |
4574 | { | 4592 | { |
4575 | "defaultMessage": "!!!Workspaces", | 4593 | "defaultMessage": "!!!Workspaces", |
4576 | "end": { | 4594 | "end": { |
4577 | "column": 3, | 4595 | "column": 3, |
4578 | "line": 222 | 4596 | "line": 226 |
4579 | }, | 4597 | }, |
4580 | "file": "src/lib/Menu.js", | 4598 | "file": "src/lib/Menu.js", |
4581 | "id": "menu.workspaces", | 4599 | "id": "menu.workspaces", |
4582 | "start": { | 4600 | "start": { |
4583 | "column": 14, | 4601 | "column": 14, |
4584 | "line": 219 | 4602 | "line": 223 |
4585 | } | 4603 | } |
4586 | }, | 4604 | }, |
4587 | { | 4605 | { |
4588 | "defaultMessage": "!!!Default", | 4606 | "defaultMessage": "!!!Default", |
4589 | "end": { | 4607 | "end": { |
4590 | "column": 3, | 4608 | "column": 3, |
4591 | "line": 226 | 4609 | "line": 230 |
4592 | }, | 4610 | }, |
4593 | "file": "src/lib/Menu.js", | 4611 | "file": "src/lib/Menu.js", |
4594 | "id": "menu.workspaces.defaultWorkspace", | 4612 | "id": "menu.workspaces.defaultWorkspace", |
4595 | "start": { | 4613 | "start": { |
4596 | "column": 20, | 4614 | "column": 20, |
4597 | "line": 223 | 4615 | "line": 227 |
4598 | } | 4616 | } |
4599 | } | 4617 | } |
4600 | ], | 4618 | ], |
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index 0ff4b5abb..a083964d4 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Η συνεδρία σας έληξε, συνδεθείτε ξανά.", | 45 | "login.tokenExpired" : "Η συνεδρία σας έληξε, συνδεθείτε ξανά.", |
46 | "menu.app.about" : "Σχετικά με το Franz", | 46 | "menu.app.about" : "Σχετικά με το Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Έλεγχος για ενημερώσεις", | ||
48 | "menu.app.hide" : "Απόκρυψη", | 49 | "menu.app.hide" : "Απόκρυψη", |
49 | "menu.app.hideOthers" : "Απόκρυψη των άλλων", | 50 | "menu.app.hideOthers" : "Απόκρυψη των άλλων", |
50 | "menu.app.quit" : "Έξοδος", | 51 | "menu.app.quit" : "Έξοδος", |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 6c2759dcc..e2edbd596 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired": "Your session expired, please login again.", | 45 | "login.tokenExpired": "Your session expired, please login again.", |
46 | "menu.app.about": "About Franz", | 46 | "menu.app.about": "About Franz", |
47 | "menu.app.announcement": "What's new?", | 47 | "menu.app.announcement": "What's new?", |
48 | "menu.app.checkForUpdates": "Check for updates", | ||
48 | "menu.app.hide": "Hide", | 49 | "menu.app.hide": "Hide", |
49 | "menu.app.hideOthers": "Hide Others", | 50 | "menu.app.hideOthers": "Hide Others", |
50 | "menu.app.quit": "Quit", | 51 | "menu.app.quit": "Quit", |
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 4167a5c7d..27f4c7d88 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -1,7 +1,7 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recargar", | 2 | "app.errorHandler.action" : "Recargar", |
3 | "app.errorHandler.headline" : "Ha surgido un error", | 3 | "app.errorHandler.headline" : "Ha surgido un error", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Cambios en Franz {version}", |
5 | "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", | 5 | "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", |
6 | "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera", | 6 | "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera", |
7 | "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", | 7 | "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", |
@@ -10,7 +10,7 @@ | |||
10 | "feature.shareFranz.action.twitter" : "Compartir en Twitter", | 10 | "feature.shareFranz.action.twitter" : "Compartir en Twitter", |
11 | "feature.shareFranz.headline" : "¡Juntos mejoramos Franz!", | 11 | "feature.shareFranz.headline" : "¡Juntos mejoramos Franz!", |
12 | "feature.shareFranz.shareText.email" : "¡He añadido {count} servicios a Franz! Obtén la aplicación gratuita para WhatsApp, Messenger, Slack, Skype en www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "¡He añadido {count} servicios a Franz! Obtén la aplicación gratuita para WhatsApp, Messenger, Slack, Skype en www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "He agregado {count} servicios a Franz! Obtené la aplicación gratuita de WhatsApp, Messenger, Slack, Skype y co en www.meetfranz.com\/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Dile a tus amigos y colegas lo asombroso que es Franz y ayúdanos a correr la voz.", | 14 | "feature.shareFranz.text" : "Dile a tus amigos y colegas lo asombroso que es Franz y ayúdanos a correr la voz.", |
15 | "global.api.unhealthy" : "No es posible conectarse a los servicios en línea de Franz.", | 15 | "global.api.unhealthy" : "No es posible conectarse a los servicios en línea de Franz.", |
16 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", | 16 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Iniciar sesión", | 44 | "login.submit.label" : "Iniciar sesión", |
45 | "login.tokenExpired" : "Tu sesión ha expirado, por favor inicia sesión de nuevo.", | 45 | "login.tokenExpired" : "Tu sesión ha expirado, por favor inicia sesión de nuevo.", |
46 | "menu.app.about" : "Sobre Franz", | 46 | "menu.app.about" : "Sobre Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "¿Qué hay de nuevo?", |
48 | "menu.app.checkForUpdates" : "Comprobar actualizaciones", | ||
48 | "menu.app.hide" : "Ocultar", | 49 | "menu.app.hide" : "Ocultar", |
49 | "menu.app.hideOthers" : "Ocultar otros", | 50 | "menu.app.hideOthers" : "Ocultar otros", |
50 | "menu.app.quit" : "Salir", | 51 | "menu.app.quit" : "Salir", |
@@ -89,9 +90,9 @@ | |||
89 | "menu.window" : "Ventana", | 90 | "menu.window" : "Ventana", |
90 | "menu.window.close" : "Cerrar", | 91 | "menu.window.close" : "Cerrar", |
91 | "menu.window.minimize" : "Minimizar", | 92 | "menu.window.minimize" : "Minimizar", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Espacios de trabajo", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Añadir nuevo espacio de trabajo...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Cerrar cajón de espacio de trabajo", |
95 | "menu.workspaces.defaultWorkspace" : "Todos los servicios", | 96 | "menu.workspaces.defaultWorkspace" : "Todos los servicios", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", |
97 | "password.email.label" : "Dirección de correo electrónico", | 98 | "password.email.label" : "Dirección de correo electrónico", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "¡Oh, no!", | 118 | "service.errorHandler.headline" : "¡Oh, no!", |
118 | "service.errorHandler.message" : "Error", | 119 | "service.errorHandler.message" : "Error", |
119 | "service.errorHandler.text" : "{name} ha fallado la carga", | 120 | "service.errorHandler.text" : "{name} ha fallado la carga", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Cargando", |
121 | "services.getStarted" : "Primeros pasos", | 122 | "services.getStarted" : "Primeros pasos", |
122 | "services.welcome" : "Bienvenido a Franz", | 123 | "services.welcome" : "Bienvenido a Franz", |
123 | "settings.account.account.editButton" : "Editar cuenta", | 124 | "settings.account.account.editButton" : "Editar cuenta", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Invita a tus amigos", | 178 | "settings.navigation.inviteFriends" : "Invita a tus amigos", |
178 | "settings.navigation.logout" : "Cerrar sesión", | 179 | "settings.navigation.logout" : "Cerrar sesión", |
179 | "settings.navigation.settings" : "Configuración", | 180 | "settings.navigation.settings" : "Configuración", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Gestionar equipo", |
181 | "settings.navigation.yourServices" : "Tus servicios", | 182 | "settings.navigation.yourServices" : "Tus servicios", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "Tus espacios de trabajo", |
183 | "settings.recipes.all" : "Todos los servicios", | 184 | "settings.recipes.all" : "Todos los servicios", |
184 | "settings.recipes.dev" : "Desarrollo", | 185 | "settings.recipes.dev" : "Desarrollo", |
185 | "settings.recipes.headline" : "Servicios disponibles", | 186 | "settings.recipes.headline" : "Servicios disponibles", |
@@ -242,7 +243,7 @@ | |||
242 | "settings.team.headline" : "Equipo", | 243 | "settings.team.headline" : "Equipo", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Actualiza tu cuenta", |
246 | "settings.user.form.accountType.company" : "Empresa", | 247 | "settings.user.form.accountType.company" : "Empresa", |
247 | "settings.user.form.accountType.individual" : "Individual", | 248 | "settings.user.form.accountType.individual" : "Individual", |
248 | "settings.user.form.accountType.label" : "Tipo de cuenta", | 249 | "settings.user.form.accountType.label" : "Tipo de cuenta", |
@@ -254,21 +255,21 @@ | |||
254 | "settings.user.form.newPassword" : "Nueva contraseña", | 255 | "settings.user.form.newPassword" : "Nueva contraseña", |
255 | "settings.workspace.add.form.name" : "Nombre", | 256 | "settings.workspace.add.form.name" : "Nombre", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Create workspace", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Eliminar espacio de trabajo", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Guardar espacio de trabajo", |
259 | "settings.workspace.form.name" : "Nombre", | 260 | "settings.workspace.form.name" : "Nombre", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Servicios en este espacio de trabajo", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Tus espacios de trabajo", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Tus espacios de trabajo", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Try again", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Inténtalo de nuevo", |
266 | "settings.workspaces.updatedInfo" : "Tus cambios han sido guardados", | 267 | "settings.workspaces.updatedInfo" : "Tus cambios han sido guardados", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
270 | "sidebar.addNewService" : "Añadir nuevo servicio", | 271 | "sidebar.addNewService" : "Añadir nuevo servicio", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Cerrar cajón de espacio de trabajo", |
272 | "sidebar.muteApp" : "Desactivar notificaciones y sonido", | 273 | "sidebar.muteApp" : "Desactivar notificaciones y sonido", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
274 | "sidebar.settings" : "Configuración", | 275 | "sidebar.settings" : "Configuración", |
@@ -319,7 +320,7 @@ | |||
319 | "welcome.signupButton" : "Crear una cuenta gratuita", | 320 | "welcome.signupButton" : "Crear una cuenta gratuita", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", |
321 | "workspaceDrawer.allServices" : "Todos los servicios", | 322 | "workspaceDrawer.allServices" : "Todos los servicios", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Espacios de trabajo", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "edit", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 2bd5326c0..90072f2b7 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", | 45 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", |
46 | "menu.app.about" : "À propos de Franz", | 46 | "menu.app.about" : "À propos de Franz", |
47 | "menu.app.announcement" : "Quoi de neuf? ", | 47 | "menu.app.announcement" : "Quoi de neuf? ", |
48 | "menu.app.checkForUpdates" : "Vérifier les mises à jour", | ||
48 | "menu.app.hide" : "Masquer", | 49 | "menu.app.hide" : "Masquer", |
49 | "menu.app.hideOthers" : "Masquer les autres", | 50 | "menu.app.hideOthers" : "Masquer les autres", |
50 | "menu.app.quit" : "Quitter", | 51 | "menu.app.quit" : "Quitter", |
@@ -238,7 +239,7 @@ | |||
238 | "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.", | 239 | "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.", |
239 | "settings.services.updatedInfo" : "Vos modifications ont été enregistrées", | 240 | "settings.services.updatedInfo" : "Vos modifications ont été enregistrées", |
240 | "settings.team.contentHeadline" : "Franz pour les équipes", | 241 | "settings.team.contentHeadline" : "Franz pour les équipes", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz for Teams t'offre la possibilité d'inviter des collègues dans ton équipe de travail en leur envoyant des invitations par courrier électronique et en gérant leurs abonnements dans les préférences de ton compte. Ne perds pas de temps à les gérer individuellement les factures multiples et les différents cycles de facturation - il suffit d'une seule équipe de travail pour gérer tout ça!", |
242 | "settings.team.headline" : "Équipe de travail", | 243 | "settings.team.headline" : "Équipe de travail", |
243 | "settings.team.intro" : "Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", | 244 | "settings.team.intro" : "Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", |
244 | "settings.team.manageAction" : "Gère ton équipe sur meetfranz.com", | 245 | "settings.team.manageAction" : "Gère ton équipe sur meetfranz.com", |
@@ -257,20 +258,20 @@ | |||
257 | "settings.workspace.form.buttonDelete" : "Effacer l'espace de travail", | 258 | "settings.workspace.form.buttonDelete" : "Effacer l'espace de travail", |
258 | "settings.workspace.form.buttonSave" : "Sauvegarder l'espace de travail", | 259 | "settings.workspace.form.buttonSave" : "Sauvegarder l'espace de travail", |
259 | "settings.workspace.form.name" : "Nom", | 260 | "settings.workspace.form.name" : "Nom", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services dans cet Espace de travail", |
261 | "settings.workspace.form.yourWorkspaces" : "Tes espaces de travail", | 262 | "settings.workspace.form.yourWorkspaces" : "Vos espaces de travail", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "L'espace de travail a été supprimé", |
263 | "settings.workspaces.headline" : "Vos espaces de travails", | 264 | "settings.workspaces.headline" : "Vos espaces de travails", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Vous n'avez pas encore ajouté d'espace de travail.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Réessayer", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Réessayer", |
266 | "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées", | 267 | "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Présentation des Espaces de travail de Franz", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Les Espaces de travail de Franz vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment. Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Impossible de charger vos espaces de travail", |
270 | "sidebar.addNewService" : "Ajouter un nouveau service", | 271 | "sidebar.addNewService" : "Ajouter un nouveau service", |
271 | "sidebar.closeWorkspaceDrawer" : "Ouvrir l'espace de travail", | 272 | "sidebar.closeWorkspaceDrawer" : "Fermer l'espace de travail", |
272 | "sidebar.muteApp" : "Désactiver les notifications et les sons", | 273 | "sidebar.muteApp" : "Désactiver les notifications et les sons", |
273 | "sidebar.openWorkspaceDrawer" : "Fermer l'espace de travail", | 274 | "sidebar.openWorkspaceDrawer" : "Ouvrir l'espace de travail", |
274 | "sidebar.settings" : "Paramètres", | 275 | "sidebar.settings" : "Paramètres", |
275 | "sidebar.unmuteApp" : "Activer les notifications et les sons", | 276 | "sidebar.unmuteApp" : "Activer les notifications et les sons", |
276 | "signup.company.label" : "Entreprise", | 277 | "signup.company.label" : "Entreprise", |
@@ -292,7 +293,7 @@ | |||
292 | "subscription.features.onpremise.mattermost" : "Ajouter des services auto-hébergés comme Mattermost", | 293 | "subscription.features.onpremise.mattermost" : "Ajouter des services auto-hébergés comme Mattermost", |
293 | "subscription.features.proxy" : "Support proxy pour les services", | 294 | "subscription.features.proxy" : "Support proxy pour les services", |
294 | "subscription.features.spellchecker" : "Prise en charge du correcteur orthographique", | 295 | "subscription.features.spellchecker" : "Prise en charge du correcteur orthographique", |
295 | "subscription.features.workspaces" : "Organize your services in workspaces", | 296 | "subscription.features.workspaces" : "Organisez vos services en espaces de travail", |
296 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", | 297 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", |
297 | "subscription.paymentSessionError" : "Initialisation du paiement impossible", | 298 | "subscription.paymentSessionError" : "Initialisation du paiement impossible", |
298 | "subscription.submit.label" : "Je souhaite aider au développement de Franz", | 299 | "subscription.submit.label" : "Je souhaite aider au développement de Franz", |
@@ -317,15 +318,15 @@ | |||
317 | "validation.url" : "{field} n'est pas une URL valide", | 318 | "validation.url" : "{field} n'est pas une URL valide", |
318 | "welcome.loginButton" : "Se connecter sur son compte", | 319 | "welcome.loginButton" : "Se connecter sur son compte", |
319 | "welcome.signupButton" : "Créer un compte gratuit", | 320 | "welcome.signupButton" : "Créer un compte gratuit", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Ajouté un nouvel espace de travail", |
321 | "workspaceDrawer.allServices" : "Tous les services", | 322 | "workspaceDrawer.allServices" : "Tous les services", |
322 | "workspaceDrawer.headline" : "Espace de travail", | 323 | "workspaceDrawer.headline" : "Espace de travail", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "Modifier", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Aucun services ajoutés pour l'instant", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Créez votre premier espace de travail", |
326 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Fonctionnalité premium", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Réactivez votre compte premium", |
328 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Les Espaces de travail de Franz vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment.<\/p><p>Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.<\/p>", |
329 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Editer les paramètres de l'espace de travail", |
330 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Changement vers" |
331 | } | 332 | } |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 3f1e827fb..97a39d2e6 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.", | 45 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arís le do thoil.", |
46 | "menu.app.about" : "Faoi Franz", | 46 | "menu.app.about" : "Faoi Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Cuardaigh le nuashonruithe", | ||
48 | "menu.app.hide" : "Cuir Franz i bhfolach", | 49 | "menu.app.hide" : "Cuir Franz i bhfolach", |
49 | "menu.app.hideOthers" : "Folaigh feidhmchláir eile", | 50 | "menu.app.hideOthers" : "Folaigh feidhmchláir eile", |
50 | "menu.app.quit" : "Scoir", | 51 | "menu.app.quit" : "Scoir", |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 468238166..d48c8bdac 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
46 | "menu.app.about" : "O aplikaciji", | 46 | "menu.app.about" : "O aplikaciji", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Potraži ažuriranja", | ||
48 | "menu.app.hide" : "Hide", | 49 | "menu.app.hide" : "Hide", |
49 | "menu.app.hideOthers" : "Hide Others", | 50 | "menu.app.hideOthers" : "Hide Others", |
50 | "menu.app.quit" : "Quit", | 51 | "menu.app.quit" : "Quit", |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index b28dcb17a..701568b1c 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -1,13 +1,13 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Újratöltés", | 2 | "app.errorHandler.action" : "Újratöltés", |
3 | "app.errorHandler.headline" : "Valami nem jött össze", | 3 | "app.errorHandler.headline" : "Valami nem jött össze", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Franz {version} változásai", |
5 | "feature.delayApp.action" : "Szerezz egy Franz Támogatói Liszencet", | 5 | "feature.delayApp.action" : "Szerezz egy Franz Támogatói Liszencet", |
6 | "feature.delayApp.headline" : "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", | 6 | "feature.delayApp.headline" : "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", |
7 | "feature.delayApp.text" : "A Franz továbblép {seconds} másodperc múlva.", | 7 | "feature.delayApp.text" : "A Franz továbblép {seconds} másodperc múlva.", |
8 | "feature.shareFranz.action.email" : "Send as email", | 8 | "feature.shareFranz.action.email" : "Küldés email-ben", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 9 | "feature.shareFranz.action.facebook" : "Megosztás Facebook-on", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 10 | "feature.shareFranz.action.twitter" : "Megosztás Twitter-en", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Franz is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
@@ -15,8 +15,8 @@ | |||
15 | "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatáshoz", | 15 | "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatáshoz", |
16 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", | 16 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", |
17 | "global.spellchecker.useDefault" : "Rendszer alapbeállítás használata ({default})", | 17 | "global.spellchecker.useDefault" : "Rendszer alapbeállítás használata ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 18 | "global.spellchecking.autodetect" : "Automatikus nyelvdetektálás", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 19 | "global.spellchecking.autodetect.short" : "Automatikus", |
20 | "global.spellchecking.language" : "Helyesírás-ellenőrző nyelve", | 20 | "global.spellchecking.language" : "Helyesírás-ellenőrző nyelve", |
21 | "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", | 21 | "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", |
22 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", | 22 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", |
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", | 45 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", |
46 | "menu.app.about" : "Névjegy", | 46 | "menu.app.about" : "Névjegy", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Frissítések keresése", | ||
48 | "menu.app.hide" : "Elrejt", | 49 | "menu.app.hide" : "Elrejt", |
49 | "menu.app.hideOthers" : "Többi elrejtése", | 50 | "menu.app.hideOthers" : "Többi elrejtése", |
50 | "menu.app.quit" : "Kilépés", | 51 | "menu.app.quit" : "Kilépés", |
@@ -72,9 +73,9 @@ | |||
72 | "menu.help.support" : "Támogatás", | 73 | "menu.help.support" : "Támogatás", |
73 | "menu.help.tos" : "Felhasználói feltételek", | 74 | "menu.help.tos" : "Felhasználói feltételek", |
74 | "menu.services" : "Szolgáltatások", | 75 | "menu.services" : "Szolgáltatások", |
75 | "menu.services.activatePreviousService" : "Activate previous service", | 76 | "menu.services.activatePreviousService" : "Előző szolgáltatás", |
76 | "menu.services.addNewService" : "Új szolgáltatás hozzáadása...", | 77 | "menu.services.addNewService" : "Új szolgáltatás hozzáadása...", |
77 | "menu.services.setNextServiceActive" : "Activate next service", | 78 | "menu.services.setNextServiceActive" : "Következő szolgáltatás", |
78 | "menu.view" : "Nézet", | 79 | "menu.view" : "Nézet", |
79 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", | 80 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", |
80 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", | 81 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", |
@@ -164,7 +165,7 @@ | |||
164 | "settings.app.headlineGeneral" : "Általános", | 165 | "settings.app.headlineGeneral" : "Általános", |
165 | "settings.app.headlineLanguage" : "Nyelv", | 166 | "settings.app.headlineLanguage" : "Nyelv", |
166 | "settings.app.headlineUpdates" : "Frissítések", | 167 | "settings.app.headlineUpdates" : "Frissítések", |
167 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 168 | "settings.app.languageDisclaimer" : "A hivatalos fordítások angol és német nyelven elérhetőek. Minden más nyelv közösségi fordításon alapul.", |
168 | "settings.app.restartRequired" : "Újraindítást igénylő módosítás", | 169 | "settings.app.restartRequired" : "Újraindítást igénylő módosítás", |
169 | "settings.app.subheadlineCache" : "Gyorsítótár", | 170 | "settings.app.subheadlineCache" : "Gyorsítótár", |
170 | "settings.app.translationHelp" : "Segíts nekünk a Franz-ot lefordítani a nyelvedre.", | 171 | "settings.app.translationHelp" : "Segíts nekünk a Franz-ot lefordítani a nyelvedre.", |
@@ -321,7 +322,7 @@ | |||
321 | "workspaceDrawer.allServices" : "Összes szolgáltatás", | 322 | "workspaceDrawer.allServices" : "Összes szolgáltatás", |
322 | "workspaceDrawer.headline" : "Munkaterületek", | 323 | "workspaceDrawer.headline" : "Munkaterületek", |
323 | "workspaceDrawer.item.contextMenuEdit" : "szerkeszt", | 324 | "workspaceDrawer.item.contextMenuEdit" : "szerkeszt", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Még nincsenek hozzáadott szolgáltatások", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Készítsd el az első munkaterületedet", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Készítsd el az első munkaterületedet", |
326 | "workspaceDrawer.proFeatureBadge" : "Prémium funkció", | 327 | "workspaceDrawer.proFeatureBadge" : "Prémium funkció", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Prémium fiók reaktiválása", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Prémium fiók reaktiválása", |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index e7a46e5e9..819aca177 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", | 45 | "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", |
46 | "menu.app.about" : "Tentang Franz", | 46 | "menu.app.about" : "Tentang Franz", |
47 | "menu.app.announcement" : "Yang baru", | 47 | "menu.app.announcement" : "Yang baru", |
48 | "menu.app.checkForUpdates" : "Periksa versi baru", | ||
48 | "menu.app.hide" : "Sembunyikan", | 49 | "menu.app.hide" : "Sembunyikan", |
49 | "menu.app.hideOthers" : "Sembunyikan Lainnya", | 50 | "menu.app.hideOthers" : "Sembunyikan Lainnya", |
50 | "menu.app.quit" : "Keluar", | 51 | "menu.app.quit" : "Keluar", |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index c12641e36..7bda822bb 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -1,17 +1,17 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Ricarica", | 2 | "app.errorHandler.action" : "Ricarica", |
3 | "app.errorHandler.headline" : "Qualcosa è andato storto", | 3 | "app.errorHandler.headline" : "Qualcosa è andato storto", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Modifiche in Franz {Version}", |
5 | "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz", | 5 | "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz", |
6 | "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", | 6 | "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", |
7 | "feature.delayApp.text" : "Franz continuerà a funzionare tra {seconds} secondi.", | 7 | "feature.delayApp.text" : "Franz continuerà tra {seconds} secondi.", |
8 | "feature.shareFranz.action.email" : "Manda come email", | 8 | "feature.shareFranz.action.email" : "Manda come email", |
9 | "feature.shareFranz.action.facebook" : "Condividi su Facebook", | 9 | "feature.shareFranz.action.facebook" : "Condividi su Facebook", |
10 | "feature.shareFranz.action.twitter" : "Condividi su Twitter", | 10 | "feature.shareFranz.action.twitter" : "Condividi su Twitter", |
11 | "feature.shareFranz.headline" : "Franze è migliore insieme!", | 11 | "feature.shareFranz.headline" : "Franze è migliore insieme!", |
12 | "feature.shareFranz.shareText.email" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l'app gratuita per WhatsApp, Messenger, Slack, Skype e altri all'indirizzo www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l'app gratuita per WhatsApp, Messenger, Slack, Skype e altri all'indirizzo www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l’app gratuita per WhatsApp, Messenger, Slack, Skype e altri all’indirizzo www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Condividi con i tuoi amici e colleghi quanto Franz è fantastico e aiutaci a diffondere la parola.", | 14 | "feature.shareFranz.text" : "Di’ ai tuoi amici e colleghi quanto Franz è fantastico e aiutaci a diffondere la parola.", |
15 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", | 15 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", |
16 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", | 16 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", |
17 | "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})", | 17 | "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Accedi", | 44 | "login.submit.label" : "Accedi", |
45 | "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.", | 45 | "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.", |
46 | "menu.app.about" : "Info su Franz", | 46 | "menu.app.about" : "Info su Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "Cosa c'è di nuovo?", |
48 | "menu.app.checkForUpdates" : "Controlla aggiornamenti", | ||
48 | "menu.app.hide" : "Nascondi", | 49 | "menu.app.hide" : "Nascondi", |
49 | "menu.app.hideOthers" : "Nascondi altri", | 50 | "menu.app.hideOthers" : "Nascondi altri", |
50 | "menu.app.quit" : "Esci", | 51 | "menu.app.quit" : "Esci", |
@@ -90,10 +91,10 @@ | |||
90 | "menu.window.close" : "Chiudi", | 91 | "menu.window.close" : "Chiudi", |
91 | "menu.window.minimize" : "Minimizza", | 92 | "menu.window.minimize" : "Minimizza", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Workspaces", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Aggiungi un Workspace...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Chiudi il menu dei workspace", |
95 | "menu.workspaces.defaultWorkspace" : "Tutti i servizi", | 96 | "menu.workspaces.defaultWorkspace" : "Tutti i servizi", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Apri il menu dei workspace", |
97 | "password.email.label" : "Indirizzo email", | 98 | "password.email.label" : "Indirizzo email", |
98 | "password.headline" : "Reimposta password", | 99 | "password.headline" : "Reimposta password", |
99 | "password.link.login" : "Accedi al tuo account", | 100 | "password.link.login" : "Accedi al tuo account", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "Oh no!", | 118 | "service.errorHandler.headline" : "Oh no!", |
118 | "service.errorHandler.message" : "Errore", | 119 | "service.errorHandler.message" : "Errore", |
119 | "service.errorHandler.text" : "{name} non si è caricato correttamente.", | 120 | "service.errorHandler.text" : "{name} non si è caricato correttamente.", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Caricamento", |
121 | "services.getStarted" : "Iniziamo", | 122 | "services.getStarted" : "Iniziamo", |
122 | "services.welcome" : "Benvenuto su Franz", | 123 | "services.welcome" : "Benvenuto su Franz", |
123 | "settings.account.account.editButton" : "Modifica account", | 124 | "settings.account.account.editButton" : "Modifica account", |
@@ -164,7 +165,7 @@ | |||
164 | "settings.app.headlineGeneral" : "Generale", | 165 | "settings.app.headlineGeneral" : "Generale", |
165 | "settings.app.headlineLanguage" : "Lingua", | 166 | "settings.app.headlineLanguage" : "Lingua", |
166 | "settings.app.headlineUpdates" : "Aggiornamenti", | 167 | "settings.app.headlineUpdates" : "Aggiornamenti", |
167 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 168 | "settings.app.languageDisclaimer" : "Le traduzioni ufficiali sono in Inglese e Tedesco. Tutte le altre lingue sono tradotte dalla community.", |
168 | "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", | 169 | "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", |
169 | "settings.app.subheadlineCache" : "Cache", | 170 | "settings.app.subheadlineCache" : "Cache", |
170 | "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.", | 171 | "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Invita Amici", | 178 | "settings.navigation.inviteFriends" : "Invita Amici", |
178 | "settings.navigation.logout" : "Esci", | 179 | "settings.navigation.logout" : "Esci", |
179 | "settings.navigation.settings" : "Impostazioni", | 180 | "settings.navigation.settings" : "Impostazioni", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Gestisci il Team", |
181 | "settings.navigation.yourServices" : "I tuoi servizi", | 182 | "settings.navigation.yourServices" : "I tuoi servizi", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "I tuoi workspaces", |
183 | "settings.recipes.all" : "Tutti i servizi", | 184 | "settings.recipes.all" : "Tutti i servizi", |
184 | "settings.recipes.dev" : "Sviluppo", | 185 | "settings.recipes.dev" : "Sviluppo", |
185 | "settings.recipes.headline" : "Servizi disponibili", | 186 | "settings.recipes.headline" : "Servizi disponibili", |
@@ -237,12 +238,12 @@ | |||
237 | "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati", | 238 | "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati", |
238 | "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate", | 239 | "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate", |
239 | "settings.services.updatedInfo" : "Le tue modifiche sono state salvate", | 240 | "settings.services.updatedInfo" : "Le tue modifiche sono state salvate", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Franz per i Teams", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz per i Teams ti da la possibilità di invitare collaboratori al tuo team, invitandoli per email e gestendo la loro iscrizione all'interno delle preferenze del tuo account. Non perdere tempo impostando le iscrizioni di un singolo collaboratore individualmente, dimenticati di fatture multiple e cicli differenti di fatturazione - un team per comandarli tutti!", |
242 | "settings.team.headline" : "Gruppo", | 243 | "settings.team.headline" : "Team", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "Tu e il tuo team usate Franz? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Gestisci il tuo Team su meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Aggiorna il tuo Account", |
246 | "settings.user.form.accountType.company" : "Società", | 247 | "settings.user.form.accountType.company" : "Società", |
247 | "settings.user.form.accountType.individual" : "Individuale", | 248 | "settings.user.form.accountType.individual" : "Individuale", |
248 | "settings.user.form.accountType.label" : "Tipo di account", | 249 | "settings.user.form.accountType.label" : "Tipo di account", |
@@ -253,24 +254,24 @@ | |||
253 | "settings.user.form.lastname" : "Cognome", | 254 | "settings.user.form.lastname" : "Cognome", |
254 | "settings.user.form.newPassword" : "Nuova password", | 255 | "settings.user.form.newPassword" : "Nuova password", |
255 | "settings.workspace.add.form.name" : "Nome", | 256 | "settings.workspace.add.form.name" : "Nome", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Crea un workspace", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Cancella un workspace", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Salva il workspace", |
259 | "settings.workspace.form.name" : "Nome", | 260 | "settings.workspace.form.name" : "Nome", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Servizi in questo Workspace", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "I tuoi workspaces", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Il Workspace è stato cancellato", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "I tuoi workspaces", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Non hai ancora aggiunto alcun workspace", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Try again", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Riprova nuovamente", |
266 | "settings.workspaces.updatedInfo" : "Le tue modifiche sono state salvate", | 267 | "settings.workspaces.updatedInfo" : "Le tue modifiche sono state salvate", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Meno è Meglio: I Workspaces di Franz", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi. Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Non è possibile caricare i tuoi workspaces", |
270 | "sidebar.addNewService" : "Aggiungi un nuovo servizio", | 271 | "sidebar.addNewService" : "Aggiungi un nuovo servizio", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Chiudi il menu dei workspace", |
272 | "sidebar.muteApp" : "Disattiva notifiche e audio", | 273 | "sidebar.muteApp" : "Disattiva notifiche e audio", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Apri il menu dei workspace", |
274 | "sidebar.settings" : "Impostazioni", | 275 | "sidebar.settings" : "Impostazioni", |
275 | "sidebar.unmuteApp" : "Attiva notifiche e audio", | 276 | "sidebar.unmuteApp" : "Attiva notifiche e audio", |
276 | "signup.company.label" : "Società", | 277 | "signup.company.label" : "Società", |
@@ -279,7 +280,7 @@ | |||
279 | "signup.firstname.label" : "Nome", | 280 | "signup.firstname.label" : "Nome", |
280 | "signup.headline" : "Iscriviti", | 281 | "signup.headline" : "Iscriviti", |
281 | "signup.lastname.label" : "Cognome", | 282 | "signup.lastname.label" : "Cognome", |
282 | "signup.legal.info" : "Creando un account di Franz stai accettando il ", | 283 | "signup.legal.info" : "Creando un account di Franz accetti i ", |
283 | "signup.legal.privacy" : "Informativa sulla Privacy", | 284 | "signup.legal.privacy" : "Informativa sulla Privacy", |
284 | "signup.legal.terms" : "Termini di Servizio", | 285 | "signup.legal.terms" : "Termini di Servizio", |
285 | "signup.link.login" : "Hai già un account, vuoi accedere?", | 286 | "signup.link.login" : "Hai già un account, vuoi accedere?", |
@@ -292,7 +293,7 @@ | |||
292 | "subscription.features.onpremise.mattermost" : "Aggiungi servizi on-premise\/hosted come \"Mattermost\"", | 293 | "subscription.features.onpremise.mattermost" : "Aggiungi servizi on-premise\/hosted come \"Mattermost\"", |
293 | "subscription.features.proxy" : "Supporto proxy per i servizi", | 294 | "subscription.features.proxy" : "Supporto proxy per i servizi", |
294 | "subscription.features.spellchecker" : "Supporto per il correttore ortografico", | 295 | "subscription.features.spellchecker" : "Supporto per il correttore ortografico", |
295 | "subscription.features.workspaces" : "Organize your services in workspaces", | 296 | "subscription.features.workspaces" : "Organizza i tuoi servizi in workspace", |
296 | "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include", | 297 | "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include", |
297 | "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", | 298 | "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", |
298 | "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", | 299 | "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", |
@@ -317,15 +318,15 @@ | |||
317 | "validation.url" : "{field} non è un URL valido", | 318 | "validation.url" : "{field} non è un URL valido", |
318 | "welcome.loginButton" : "Accedi al tuo account", | 319 | "welcome.loginButton" : "Accedi al tuo account", |
319 | "welcome.signupButton" : "Crea un account gratuito", | 320 | "welcome.signupButton" : "Crea un account gratuito", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Aggiungi un nuovo workspace", |
321 | "workspaceDrawer.allServices" : "Tutti i servizi", | 322 | "workspaceDrawer.allServices" : "Tutti i servizi", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Workspace", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "Modifica", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Nessun servizio aggiunto", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Crea il tuo primo workspace", |
326 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Funzionalità premium", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Riattiva l’account premium", |
328 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi.<\/p><p>Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.<\/p>", |
329 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Modifica le impostazioni dei workspace", |
330 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Passa a " |
331 | } | 332 | } |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index cf7e9ab78..f9989ff7e 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "セッションの期限が切れました。ログインし直して下さい。", | 45 | "login.tokenExpired" : "セッションの期限が切れました。ログインし直して下さい。", |
46 | "menu.app.about" : "バージョン情報", | 46 | "menu.app.about" : "バージョン情報", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "更新の確認", | ||
48 | "menu.app.hide" : "隠す", | 49 | "menu.app.hide" : "隠す", |
49 | "menu.app.hideOthers" : "他を隠す", | 50 | "menu.app.hideOthers" : "他を隠す", |
50 | "menu.app.quit" : "終了", | 51 | "menu.app.quit" : "終了", |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index af224c115..5193ac8cf 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "თქვენს სესიას ვადა გაუვიდა, შედით ანგარიშში ხელახლა.", | 45 | "login.tokenExpired" : "თქვენს სესიას ვადა გაუვიდა, შედით ანგარიშში ხელახლა.", |
46 | "menu.app.about" : "Franz-ის შესახებ", | 46 | "menu.app.about" : "Franz-ის შესახებ", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "განახლებების შემოწმება", | ||
48 | "menu.app.hide" : "Hide", | 49 | "menu.app.hide" : "Hide", |
49 | "menu.app.hideOthers" : "სხვების დამალვა", | 50 | "menu.app.hideOthers" : "სხვების დამალვა", |
50 | "menu.app.quit" : "გამოსვლა", | 51 | "menu.app.quit" : "გამოსვლა", |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index 2854fcb09..1eda8856f 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
46 | "menu.app.about" : "Over Franz", | 46 | "menu.app.about" : "Over Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Controleer op updates", | ||
48 | "menu.app.hide" : "Verbergen", | 49 | "menu.app.hide" : "Verbergen", |
49 | "menu.app.hideOthers" : "Andere Verbergen", | 50 | "menu.app.hideOthers" : "Andere Verbergen", |
50 | "menu.app.quit" : "Afsluiten", | 51 | "menu.app.quit" : "Afsluiten", |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 03d4474c1..fdb96a7db 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -1,22 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Herladen", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Er ging iets mis", | 3 | "app.errorHandler.headline" : "Er ging iets mis", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Wijzigingen in Franz {version}", |
5 | "feature.delayApp.action" : "Sponsor Franz", | 5 | "feature.delayApp.action" : "Sponsor Franz", |
6 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", | 6 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", |
7 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", | 7 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", |
8 | "feature.shareFranz.action.email" : "Send as email", | 8 | "feature.shareFranz.action.email" : "Verstuur als e-mail", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 9 | "feature.shareFranz.action.facebook" : "Deel op Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 10 | "feature.shareFranz.action.twitter" : "Deel op Twitter", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Franz is leuker samen!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons om bekender te worden", |
15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", | 15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", |
16 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", | 16 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", |
17 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", | 17 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 18 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 19 | "global.spellchecking.autodetect.short" : "Automatisch", |
20 | "global.spellchecking.language" : "Spelling checken", | 20 | "global.spellchecking.language" : "Spelling checken", |
21 | "import.headline" : "Importeer uw Franz 4-services", | 21 | "import.headline" : "Importeer uw Franz 4-services", |
22 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", | 22 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Inloggen", | 44 | "login.submit.label" : "Inloggen", |
45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
46 | "menu.app.about" : "Over Franz", | 46 | "menu.app.about" : "Over Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "Wat is nieuw?", |
48 | "menu.app.checkForUpdates" : "Controleer op updates", | ||
48 | "menu.app.hide" : "Verbergen", | 49 | "menu.app.hide" : "Verbergen", |
49 | "menu.app.hideOthers" : "Andere verbergen", | 50 | "menu.app.hideOthers" : "Andere verbergen", |
50 | "menu.app.quit" : "Afsluiten", | 51 | "menu.app.quit" : "Afsluiten", |
@@ -72,9 +73,9 @@ | |||
72 | "menu.help.support" : "Ondersteuning", | 73 | "menu.help.support" : "Ondersteuning", |
73 | "menu.help.tos" : "Servicevoorwaarden", | 74 | "menu.help.tos" : "Servicevoorwaarden", |
74 | "menu.services" : "Diensten", | 75 | "menu.services" : "Diensten", |
75 | "menu.services.activatePreviousService" : "Activate previous service", | 76 | "menu.services.activatePreviousService" : "Activeer vorige dienst", |
76 | "menu.services.addNewService" : "Nieuwe dienst toevoegen", | 77 | "menu.services.addNewService" : "Nieuwe dienst toevoegen", |
77 | "menu.services.setNextServiceActive" : "Activate next service", | 78 | "menu.services.setNextServiceActive" : "Activeer volgende dienst", |
78 | "menu.view" : "Weergave", | 79 | "menu.view" : "Weergave", |
79 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", | 80 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", |
80 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", | 81 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", |
@@ -89,11 +90,11 @@ | |||
89 | "menu.window" : "Venster", | 90 | "menu.window" : "Venster", |
90 | "menu.window.close" : "Sluiten", | 91 | "menu.window.close" : "Sluiten", |
91 | "menu.window.minimize" : "Minimaliseren", | 92 | "menu.window.minimize" : "Minimaliseren", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Werkruimtes", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Voeg nieuwe werkruimte toe...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Werkruimtepagina sluiten", |
95 | "menu.workspaces.defaultWorkspace" : "Alle services", | 96 | "menu.workspaces.defaultWorkspace" : "Alle services", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Werkruimtepagina openen", |
97 | "password.email.label" : "E-mailadres", | 98 | "password.email.label" : "E-mailadres", |
98 | "password.headline" : "Wachtwoord vergeten", | 99 | "password.headline" : "Wachtwoord vergeten", |
99 | "password.link.login" : "Log in op je account", | 100 | "password.link.login" : "Log in op je account", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "Oh nee!", | 118 | "service.errorHandler.headline" : "Oh nee!", |
118 | "service.errorHandler.message" : "Fout", | 119 | "service.errorHandler.message" : "Fout", |
119 | "service.errorHandler.text" : "{name} kon niet geladen worden.", | 120 | "service.errorHandler.text" : "{name} kon niet geladen worden.", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Aan het laden", |
121 | "services.getStarted" : "Begin", | 122 | "services.getStarted" : "Begin", |
122 | "services.welcome" : "Welkom bij Franz", | 123 | "services.welcome" : "Welkom bij Franz", |
123 | "settings.account.account.editButton" : "Bewerk account", | 124 | "settings.account.account.editButton" : "Bewerk account", |
@@ -237,7 +238,7 @@ | |||
237 | "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", | 238 | "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", |
238 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", | 239 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", |
239 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 240 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Franz voor groepen", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
242 | "settings.team.headline" : "Team", | 243 | "settings.team.headline" : "Team", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
@@ -258,9 +259,9 @@ | |||
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Save workspace", |
259 | "settings.workspace.form.name" : "Naam", | 260 | "settings.workspace.form.name" : "Naam", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Jouw werkruimtes", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Werkruimte is verwijderd", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Jouw werkplaatsen", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", |
266 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 267 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
@@ -268,9 +269,9 @@ | |||
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
270 | "sidebar.addNewService" : "Voeg service toe", | 271 | "sidebar.addNewService" : "Voeg service toe", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Werkruimtepagina sluiten", |
272 | "sidebar.muteApp" : "Schakel berichten & geluid uit", | 273 | "sidebar.muteApp" : "Schakel berichten & geluid uit", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Werkruimtepagina openen", |
274 | "sidebar.settings" : "Instellingen", | 275 | "sidebar.settings" : "Instellingen", |
275 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", | 276 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", |
276 | "signup.company.label" : "Bedrijf", | 277 | "signup.company.label" : "Bedrijf", |
@@ -319,12 +320,12 @@ | |||
319 | "welcome.signupButton" : "Maak een gratis account", | 320 | "welcome.signupButton" : "Maak een gratis account", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", |
321 | "workspaceDrawer.allServices" : "Alle services", | 322 | "workspaceDrawer.allServices" : "Alle services", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Werkruimtes", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "edit", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte", |
326 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Heractiveer premium account", |
328 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", |
329 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", |
330 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Switching to" |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 591b13145..a5d1ea377 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -5,7 +5,7 @@ | |||
5 | "feature.delayApp.action" : "Uzyskaj licencję Franz Supporter", | 5 | "feature.delayApp.action" : "Uzyskaj licencję Franz Supporter", |
6 | "feature.delayApp.headline" : "Aby nie czekać kup licencję Franz Supporter", | 6 | "feature.delayApp.headline" : "Aby nie czekać kup licencję Franz Supporter", |
7 | "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", | 7 | "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", |
8 | "feature.shareFranz.action.email" : "Wyślij nam maila", | 8 | "feature.shareFranz.action.email" : "Wyślij jako email", |
9 | "feature.shareFranz.action.facebook" : "Udostępnij na Facebooku", | 9 | "feature.shareFranz.action.facebook" : "Udostępnij na Facebooku", |
10 | "feature.shareFranz.action.twitter" : "Udostępnij na Twitterze", | 10 | "feature.shareFranz.action.twitter" : "Udostępnij na Twitterze", |
11 | "feature.shareFranz.headline" : "Franz jest lepszy, gdy tworzymy go razem!", | 11 | "feature.shareFranz.headline" : "Franz jest lepszy, gdy tworzymy go razem!", |
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", | 45 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", |
46 | "menu.app.about" : "O Franz", | 46 | "menu.app.about" : "O Franz", |
47 | "menu.app.announcement" : "Co słychać?", | 47 | "menu.app.announcement" : "Co słychać?", |
48 | "menu.app.checkForUpdates" : "Sprawdź aktualizacje", | ||
48 | "menu.app.hide" : "Ukryj", | 49 | "menu.app.hide" : "Ukryj", |
49 | "menu.app.hideOthers" : "Ukryj pozostałe", | 50 | "menu.app.hideOthers" : "Ukryj pozostałe", |
50 | "menu.app.quit" : "Zakończ", | 51 | "menu.app.quit" : "Zakończ", |
@@ -89,11 +90,11 @@ | |||
89 | "menu.window" : "Okno", | 90 | "menu.window" : "Okno", |
90 | "menu.window.close" : "Zamknij", | 91 | "menu.window.close" : "Zamknij", |
91 | "menu.window.minimize" : "Zminimalizuj", | 92 | "menu.window.minimize" : "Zminimalizuj", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Obszary robocze", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Dodaj nowy obszar roboczy...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Zamknij edytor obszaru roboczego", |
95 | "menu.workspaces.defaultWorkspace" : "Wszystkie usługi", | 96 | "menu.workspaces.defaultWorkspace" : "Wszystkie usługi", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Otwórz edytor obszaru roboczego", |
97 | "password.email.label" : "Adres email", | 98 | "password.email.label" : "Adres email", |
98 | "password.headline" : "Przypomnij hasło", | 99 | "password.headline" : "Przypomnij hasło", |
99 | "password.link.login" : "Zaloguj się na swoje konto", | 100 | "password.link.login" : "Zaloguj się na swoje konto", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "O nie!", | 118 | "service.errorHandler.headline" : "O nie!", |
118 | "service.errorHandler.message" : "Błąd", | 119 | "service.errorHandler.message" : "Błąd", |
119 | "service.errorHandler.text" : "Nie udało się załadować {name}.", | 120 | "service.errorHandler.text" : "Nie udało się załadować {name}.", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Ładowanie", |
121 | "services.getStarted" : "Zacznij", | 122 | "services.getStarted" : "Zacznij", |
122 | "services.welcome" : "Witaj w programie Franz", | 123 | "services.welcome" : "Witaj w programie Franz", |
123 | "settings.account.account.editButton" : "Modyfikuj konta", | 124 | "settings.account.account.editButton" : "Modyfikuj konta", |
@@ -164,7 +165,7 @@ | |||
164 | "settings.app.headlineGeneral" : "Ogólne", | 165 | "settings.app.headlineGeneral" : "Ogólne", |
165 | "settings.app.headlineLanguage" : "Język", | 166 | "settings.app.headlineLanguage" : "Język", |
166 | "settings.app.headlineUpdates" : "Aktualizacje", | 167 | "settings.app.headlineUpdates" : "Aktualizacje", |
167 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 168 | "settings.app.languageDisclaimer" : "Oficjalnymi językami są Angielski i Niemiecki. Inne języki są tłumaczone przez społeczność Franz.", |
168 | "settings.app.restartRequired" : "Zmiany. wymagają ponownego uruchomienia", | 169 | "settings.app.restartRequired" : "Zmiany. wymagają ponownego uruchomienia", |
169 | "settings.app.subheadlineCache" : "Pamięć podręczna", | 170 | "settings.app.subheadlineCache" : "Pamięć podręczna", |
170 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.", | 171 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Zaproś znajomych", | 178 | "settings.navigation.inviteFriends" : "Zaproś znajomych", |
178 | "settings.navigation.logout" : "Wyloguj", | 179 | "settings.navigation.logout" : "Wyloguj", |
179 | "settings.navigation.settings" : "Ustawienia", | 180 | "settings.navigation.settings" : "Ustawienia", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Zarządzaj Zespołem", |
181 | "settings.navigation.yourServices" : "Twoje usługi", | 182 | "settings.navigation.yourServices" : "Twoje usługi", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "Twoje obszary robocze", |
183 | "settings.recipes.all" : "Wszystkie usługi", | 184 | "settings.recipes.all" : "Wszystkie usługi", |
184 | "settings.recipes.dev" : "Rozwojowe", | 185 | "settings.recipes.dev" : "Rozwojowe", |
185 | "settings.recipes.headline" : "Dostępne usługi", | 186 | "settings.recipes.headline" : "Dostępne usługi", |
@@ -232,17 +233,17 @@ | |||
232 | "settings.services.discoverServices" : "Przeglądaj usługi", | 233 | "settings.services.discoverServices" : "Przeglądaj usługi", |
233 | "settings.services.headline" : "Twoje usługi", | 234 | "settings.services.headline" : "Twoje usługi", |
234 | "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.", | 235 | "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.", |
235 | "settings.services.servicesRequestFailed" : "Could not load your services", | 236 | "settings.services.servicesRequestFailed" : "Nie udało się załadować twoich usług", |
236 | "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna", | 237 | "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna", |
237 | "settings.services.tooltip.isMuted" : "Wszystkie dźwięki są wyciszone", | 238 | "settings.services.tooltip.isMuted" : "Wszystkie dźwięki są wyciszone", |
238 | "settings.services.tooltip.notificationsDisabled" : "Powiadomienia są nieaktywne", | 239 | "settings.services.tooltip.notificationsDisabled" : "Powiadomienia są nieaktywne", |
239 | "settings.services.updatedInfo" : "Zmiany zostały zapisane", | 240 | "settings.services.updatedInfo" : "Zmiany zostały zapisane", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Zespoły Franz", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz umożliwia zespołom opcję zapraszania pracowników do zespołu wysyłając im maila z zaproszeniem i pozwala zarządzać ich subskrypcją w ustawieniach konta. Nie trać czasu na ustawianie subskrypcji dla każdego zespołu osobno, zapomnij o wielu fakturach i różnych cyklicznych opłatach - jeden zespół do zarządzania wszystkim!", |
242 | "settings.team.headline" : "Zespół", | 243 | "settings.team.headline" : "Zespół", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "Czy Ty i zesół używacie programu Franz? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Zarządzaj zespołem na meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Ulepsz swoje konto", |
246 | "settings.user.form.accountType.company" : "Firma", | 247 | "settings.user.form.accountType.company" : "Firma", |
247 | "settings.user.form.accountType.individual" : "Prywatne", | 248 | "settings.user.form.accountType.individual" : "Prywatne", |
248 | "settings.user.form.accountType.label" : "Typ konta", | 249 | "settings.user.form.accountType.label" : "Typ konta", |
@@ -252,25 +253,25 @@ | |||
252 | "settings.user.form.firstname" : "Imię", | 253 | "settings.user.form.firstname" : "Imię", |
253 | "settings.user.form.lastname" : "Nazwisko", | 254 | "settings.user.form.lastname" : "Nazwisko", |
254 | "settings.user.form.newPassword" : "Nowe hasło", | 255 | "settings.user.form.newPassword" : "Nowe hasło", |
255 | "settings.workspace.add.form.name" : "Name", | 256 | "settings.workspace.add.form.name" : "Imię", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Stwórz obszar roboczy", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Usuń obszar roboczy", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Zapisz obszar roboczy", |
259 | "settings.workspace.form.name" : "Name", | 260 | "settings.workspace.form.name" : "Imię", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Usługi w obszarze roboczym", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Twoje obszary robocze", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Obszar roboczy został skasowany", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Twoje obszary robocze", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Nie dodałeś jeszcze żadnego obszaru roboczego.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Spróbuj ponownie", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Spróbuj ponownie", |
266 | "settings.workspaces.updatedInfo" : "Your changes have been saved", | 267 | "settings.workspaces.updatedInfo" : "Twoje zmiany zostały zapisane", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Mniej znaczy więcej: Wprowadzenie do obszarów roboczych Franz", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Obszary robocze programu Franz pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Nie można załadować obszaru roboczego", |
270 | "sidebar.addNewService" : "Dodaj kolejną usługę", | 271 | "sidebar.addNewService" : "Dodaj kolejną usługę", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Zamknij edycję obszaru roboczego", |
272 | "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki", | 273 | "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Otwórz edycję obszaru roboczego", |
274 | "sidebar.settings" : "Ustawienia", | 275 | "sidebar.settings" : "Ustawienia", |
275 | "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki", | 276 | "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki", |
276 | "signup.company.label" : "Firma", | 277 | "signup.company.label" : "Firma", |
@@ -292,7 +293,7 @@ | |||
292 | "subscription.features.onpremise.mattermost" : "Dodaj prywatnie hostowane usługi takie jak Mattermost", | 293 | "subscription.features.onpremise.mattermost" : "Dodaj prywatnie hostowane usługi takie jak Mattermost", |
293 | "subscription.features.proxy" : "Obsługa proxy dla usług", | 294 | "subscription.features.proxy" : "Obsługa proxy dla usług", |
294 | "subscription.features.spellchecker" : "Wsparcie dla sprawdzania pisowni", | 295 | "subscription.features.spellchecker" : "Wsparcie dla sprawdzania pisowni", |
295 | "subscription.features.workspaces" : "Organize your services in workspaces", | 296 | "subscription.features.workspaces" : "Zarządzaj usługami w obszarach roboczych", |
296 | "subscription.includedFeatures" : "Płatne konto Franz Premium obejmuje", | 297 | "subscription.includedFeatures" : "Płatne konto Franz Premium obejmuje", |
297 | "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", | 298 | "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", |
298 | "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz", | 299 | "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz", |
@@ -312,20 +313,20 @@ | |||
312 | "tabs.item.reload" : "Przeładuj", | 313 | "tabs.item.reload" : "Przeładuj", |
313 | "validation.email" : "Pole {field} nie jest poprawne", | 314 | "validation.email" : "Pole {field} nie jest poprawne", |
314 | "validation.minLength" : "Pole {field} powinno składać się z co najmniej {length} znaków", | 315 | "validation.minLength" : "Pole {field} powinno składać się z co najmniej {length} znaków", |
315 | "validation.oneRequired" : "At least one is required", | 316 | "validation.oneRequired" : "Przynajmniej jeden jest wymagany", |
316 | "validation.required" : "Pole {field} jest wymagane", | 317 | "validation.required" : "Pole {field} jest wymagane", |
317 | "validation.url" : "Pole {field} nie jest poprawnym ciągiem URL.", | 318 | "validation.url" : "Pole {field} nie jest poprawnym ciągiem URL.", |
318 | "welcome.loginButton" : "Zaloguj się na swoje konto", | 319 | "welcome.loginButton" : "Zaloguj się na swoje konto", |
319 | "welcome.signupButton" : "Stwórz darmowe konto", | 320 | "welcome.signupButton" : "Stwórz darmowe konto", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Dodaj nowy obszar roboczy", |
321 | "workspaceDrawer.allServices" : "Wszystkie usługi", | 322 | "workspaceDrawer.allServices" : "Wszystkie usługi", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Obszary robocze", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "Edycja", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Żadne usługi nie zostały jeszcze dodane", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Stwórz pierwszy obszar roboczy", |
326 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Funkcje Premium", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktywuj ponownie konto premium", |
328 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Obszary robocze programu Franz pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. <\/p><p>Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.<\/p>", |
329 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edytuj ustawienia obszaru roboczego", |
330 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Przełącz do" |
331 | } | 332 | } |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 4ad2fac08..27fd796a4 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,7 +1,7 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarregar", | 2 | "app.errorHandler.action" : "Atualizar", |
3 | "app.errorHandler.headline" : "Alguma coisa deu errado", | 3 | "app.errorHandler.headline" : "Alguma coisa deu errado", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Mudanças no Franz {version}", |
5 | "feature.delayApp.action" : "Adquira uma licença Franz Supporter", | 5 | "feature.delayApp.action" : "Adquira uma licença Franz Supporter", |
6 | "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera", | 6 | "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera", |
7 | "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", | 7 | "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", |
@@ -10,7 +10,7 @@ | |||
10 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", | 10 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", |
11 | "feature.shareFranz.headline" : "Franz é melhor em grupo!", | 11 | "feature.shareFranz.headline" : "Franz é melhor em grupo!", |
12 | "feature.shareFranz.shareText.email" : "Eu adicionei {count} serviços ao Franz! Adquira o aplicativo gratuito para WhatsApp, Messenger, Slack, Skype e mais em www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Eu adicionei {count} serviços ao Franz! Adquira o aplicativo gratuito para WhatsApp, Messenger, Slack, Skype e mais em www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Eu adicionei uma contagem de serviços para o Franz! Baixe gratuitamente o aplicativo para WhatsApp, Messenger, Slack, Skype e outros em www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quão incrível Franz é e nos ajude a espalhar a mensagem. ", | 14 | "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quão incrível Franz é e nos ajude a espalhar a mensagem. ", |
15 | "global.api.unhealthy" : "Não foi possível conectar-se aos serviços on-line do Franz.", | 15 | "global.api.unhealthy" : "Não foi possível conectar-se aos serviços on-line do Franz.", |
16 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", | 16 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Entrar", | 44 | "login.submit.label" : "Entrar", |
45 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", | 45 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", |
46 | "menu.app.about" : "Sobre Franz", | 46 | "menu.app.about" : "Sobre Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "Quais as novidades?", |
48 | "menu.app.checkForUpdates" : "Verificar se há atualizações", | ||
48 | "menu.app.hide" : "Ocultar", | 49 | "menu.app.hide" : "Ocultar", |
49 | "menu.app.hideOthers" : "Ocultar Outros", | 50 | "menu.app.hideOthers" : "Ocultar Outros", |
50 | "menu.app.quit" : "Sair", | 51 | "menu.app.quit" : "Sair", |
@@ -89,11 +90,11 @@ | |||
89 | "menu.window" : "Modo Janela", | 90 | "menu.window" : "Modo Janela", |
90 | "menu.window.close" : "Fechar", | 91 | "menu.window.close" : "Fechar", |
91 | "menu.window.minimize" : "Minimizar", | 92 | "menu.window.minimize" : "Minimizar", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Áreas de trabalho", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Adicionar nova área de trabalho...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Fechar menu da área de trabalho", |
95 | "menu.workspaces.defaultWorkspace" : "Todos os serviços", | 96 | "menu.workspaces.defaultWorkspace" : "Todos os serviços", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Abrir o menu da área de trabalho", |
97 | "password.email.label" : "E-mail", | 98 | "password.email.label" : "E-mail", |
98 | "password.headline" : "Trocar senha", | 99 | "password.headline" : "Trocar senha", |
99 | "password.link.login" : "Fazer login na sua conta", | 100 | "password.link.login" : "Fazer login na sua conta", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "Ah, não!", | 118 | "service.errorHandler.headline" : "Ah, não!", |
118 | "service.errorHandler.message" : "Erro", | 119 | "service.errorHandler.message" : "Erro", |
119 | "service.errorHandler.text" : "{name} não pôde ser carregado.", | 120 | "service.errorHandler.text" : "{name} não pôde ser carregado.", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Carregando", |
121 | "services.getStarted" : "Iniciar", | 122 | "services.getStarted" : "Iniciar", |
122 | "services.welcome" : "Bem-vindo ao Franz!", | 123 | "services.welcome" : "Bem-vindo ao Franz!", |
123 | "settings.account.account.editButton" : "Editar conta", | 124 | "settings.account.account.editButton" : "Editar conta", |
@@ -164,9 +165,9 @@ | |||
164 | "settings.app.headlineGeneral" : "Geral", | 165 | "settings.app.headlineGeneral" : "Geral", |
165 | "settings.app.headlineLanguage" : "Idioma", | 166 | "settings.app.headlineLanguage" : "Idioma", |
166 | "settings.app.headlineUpdates" : "Atualizações", | 167 | "settings.app.headlineUpdates" : "Atualizações", |
167 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 168 | "settings.app.languageDisclaimer" : "As traduções oficiais são em inglês e alemão. As demais traduções são baseadas na ajuda da comunidade.", |
168 | "settings.app.restartRequired" : "As atualizações exigem reiniciar o sistema", | 169 | "settings.app.restartRequired" : "As mudanças exigem reiniciar o sistema", |
169 | "settings.app.subheadlineCache" : "Cache", | 170 | "settings.app.subheadlineCache" : "memória cache", |
170 | "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para seu idioma.", | 171 | "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para seu idioma.", |
171 | "settings.app.updateStatusAvailable" : "Atualização disponível, baixando...", | 172 | "settings.app.updateStatusAvailable" : "Atualização disponível, baixando...", |
172 | "settings.app.updateStatusSearching" : "Buscando atualizações", | 173 | "settings.app.updateStatusSearching" : "Buscando atualizações", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Convidar Amigos", | 178 | "settings.navigation.inviteFriends" : "Convidar Amigos", |
178 | "settings.navigation.logout" : "Sair", | 179 | "settings.navigation.logout" : "Sair", |
179 | "settings.navigation.settings" : "Ajustes", | 180 | "settings.navigation.settings" : "Ajustes", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Administrar a equipe", |
181 | "settings.navigation.yourServices" : "Seus serviços", | 182 | "settings.navigation.yourServices" : "Seus serviços", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "Suas áreas de trabalho", |
183 | "settings.recipes.all" : "Todos os serviços", | 184 | "settings.recipes.all" : "Todos os serviços", |
184 | "settings.recipes.dev" : "Desenvolvimento", | 185 | "settings.recipes.dev" : "Desenvolvimento", |
185 | "settings.recipes.headline" : "Serviços disponíveis", | 186 | "settings.recipes.headline" : "Serviços disponíveis", |
@@ -237,12 +238,12 @@ | |||
237 | "settings.services.tooltip.isMuted" : "Sem som", | 238 | "settings.services.tooltip.isMuted" : "Sem som", |
238 | "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", | 239 | "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", |
239 | "settings.services.updatedInfo" : "Suas mudanças foram gravadas", | 240 | "settings.services.updatedInfo" : "Suas mudanças foram gravadas", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Franz para Equipes", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "\"Franz para Equipes\" possui a opção de convidar ajudantes para a sua equipe através de mensagens por e-mail e gerenciar as inscrições deles em suas preferências de conta. Não perca tempo configurando as inscrições para membro da equipe individualmente, esqueça as múltiplas faturas e tempos de pagamento. Uma regra universal para todos os membros da equipe.", |
242 | "settings.team.headline" : "Equipe", | 243 | "settings.team.headline" : "Equipe", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "Você e sua equipe usam Franz? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da família que você quiser, tudo isso em uma única conta.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Gerencie sua Equipe no meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Atualize a sua conta para versão paga", |
246 | "settings.user.form.accountType.company" : "Empresa", | 247 | "settings.user.form.accountType.company" : "Empresa", |
247 | "settings.user.form.accountType.individual" : "Pessoal", | 248 | "settings.user.form.accountType.individual" : "Pessoal", |
248 | "settings.user.form.accountType.label" : "Tipo de conta", | 249 | "settings.user.form.accountType.label" : "Tipo de conta", |
@@ -253,24 +254,24 @@ | |||
253 | "settings.user.form.lastname" : "Sobrenome", | 254 | "settings.user.form.lastname" : "Sobrenome", |
254 | "settings.user.form.newPassword" : "Nova senha", | 255 | "settings.user.form.newPassword" : "Nova senha", |
255 | "settings.workspace.add.form.name" : "Nome", | 256 | "settings.workspace.add.form.name" : "Nome", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Criar workspace", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Apagar workspace", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Salvar workspace", |
259 | "settings.workspace.form.name" : "Nome", | 260 | "settings.workspace.form.name" : "Nome", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Serviços neste Workspace", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Seus workspaces", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Área de trabalho deletada", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Suas Áreas de Trabalho", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Você não possui nenhuma área de trabalho adicionadas anteriormente.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Try again", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Tente de novo", |
266 | "settings.workspaces.updatedInfo" : "Your changes have been saved", | 267 | "settings.workspaces.updatedInfo" : "Suas mudanças foram salvas", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo Workspaces do Franz", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "As áreas de trabalho do Franz permite você focar no que realmente é importante agora. Configure diferentes conjuntos de serviços e alterne entre eles facilmente em qualquer momento. Você decide quais serviços você precisa e onde deseja colocá-los, então nós podemos te ajudar a aumentar a produtividade de suas tarefas. Ou facilmente deletar os aplicativos que você nunca irá precisar.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Não foi possível carregar suas áreas de trabalho", |
270 | "sidebar.addNewService" : "Adicionar novo serviço", | 271 | "sidebar.addNewService" : "Adicionar novo serviço", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Fechar o menu da área de trabalho", |
272 | "sidebar.muteApp" : "Desativar notificações e áudio", | 273 | "sidebar.muteApp" : "Desativar notificações e áudio", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Abrir menu da área de trabalho", |
274 | "sidebar.settings" : "Ajustes", | 275 | "sidebar.settings" : "Ajustes", |
275 | "sidebar.unmuteApp" : "Ativar notificações e áudio", | 276 | "sidebar.unmuteApp" : "Ativar notificações e áudio", |
276 | "signup.company.label" : "Empresa", | 277 | "signup.company.label" : "Empresa", |
@@ -292,7 +293,7 @@ | |||
292 | "subscription.features.onpremise.mattermost" : "Adicionar serviços locais\/hospedados como o Mattermost", | 293 | "subscription.features.onpremise.mattermost" : "Adicionar serviços locais\/hospedados como o Mattermost", |
293 | "subscription.features.proxy" : "Suporte de proxy para serviços", | 294 | "subscription.features.proxy" : "Suporte de proxy para serviços", |
294 | "subscription.features.spellchecker" : "Suporte para corretor ortográfico", | 295 | "subscription.features.spellchecker" : "Suporte para corretor ortográfico", |
295 | "subscription.features.workspaces" : "Organize your services in workspaces", | 296 | "subscription.features.workspaces" : "Organize seus serviços em áreas de trabalho", |
296 | "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui", | 297 | "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui", |
297 | "subscription.paymentSessionError" : "Não foi possível abrir o formulário de pagamento", | 298 | "subscription.paymentSessionError" : "Não foi possível abrir o formulário de pagamento", |
298 | "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", | 299 | "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", |
@@ -317,15 +318,15 @@ | |||
317 | "validation.url" : "{campo} essa URL não é válida", | 318 | "validation.url" : "{campo} essa URL não é válida", |
318 | "welcome.loginButton" : "Entrar na sua conta", | 319 | "welcome.loginButton" : "Entrar na sua conta", |
319 | "welcome.signupButton" : "Criar uma conta grátis", | 320 | "welcome.signupButton" : "Criar uma conta grátis", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Adicionar uma nova área de trabalho", |
321 | "workspaceDrawer.allServices" : "Todos os serviços", | 322 | "workspaceDrawer.allServices" : "Todos os serviços", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Áreas de Trabalho", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "editar", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Nenhum serviço adicionado anteriormente", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Crie sua primeira área de trabalho", |
326 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Vantagem paga oferecida aos assinantes", |
327 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reative sua conta paga", |
328 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>As áreas de trabalho do Franz te ajuda a focar no que realmente é importante agora. Configure diferente cenários para serviços e mude entre eles facilmente em qualquer momento. <\/p><p>Você decide quais serviços precisa e onde deseja posicioná-los, e então nós iremos te ajudar em aumentar a sua produtividade. Você pode desligar os serviços que não são úteis para você.<\/p>", |
329 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Editar configurações das áreas de trabalho", |
330 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Mudando para" |
331 | } | 332 | } |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 302284ab8..668db12a2 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -15,7 +15,7 @@ | |||
15 | "global.api.unhealthy" : "Não foi possível estabelecer ligação aos serviços do Franz", | 15 | "global.api.unhealthy" : "Não foi possível estabelecer ligação aos serviços do Franz", |
16 | "global.notConnectedToTheInternet" : "Não estás ligado à Internet", | 16 | "global.notConnectedToTheInternet" : "Não estás ligado à Internet", |
17 | "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", | 17 | "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 18 | "global.spellchecking.autodetect" : "Detectar a lingua automaticamente", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 19 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Linguagem para correção ortográfica", | 20 | "global.spellchecking.language" : "Linguagem para correção ortográfica", |
21 | "import.headline" : "Importa os teus serviços do Franz", | 21 | "import.headline" : "Importa os teus serviços do Franz", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Iniciar sessão", | 44 | "login.submit.label" : "Iniciar sessão", |
45 | "login.tokenExpired" : "A sua sessão expirou, inicie sessão novamente.", | 45 | "login.tokenExpired" : "A sua sessão expirou, inicie sessão novamente.", |
46 | "menu.app.about" : "Sobre o Franz", | 46 | "menu.app.about" : "Sobre o Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "O que há de novo?", |
48 | "menu.app.checkForUpdates" : "Procurar atualizações", | ||
48 | "menu.app.hide" : "Ocultar", | 49 | "menu.app.hide" : "Ocultar", |
49 | "menu.app.hideOthers" : "Ocultar Outros", | 50 | "menu.app.hideOthers" : "Ocultar Outros", |
50 | "menu.app.quit" : "Sair", | 51 | "menu.app.quit" : "Sair", |
@@ -72,9 +73,9 @@ | |||
72 | "menu.help.support" : "Suporte", | 73 | "menu.help.support" : "Suporte", |
73 | "menu.help.tos" : "Termos do Serviço", | 74 | "menu.help.tos" : "Termos do Serviço", |
74 | "menu.services" : "Serviços", | 75 | "menu.services" : "Serviços", |
75 | "menu.services.activatePreviousService" : "Activate previous service", | 76 | "menu.services.activatePreviousService" : "Activar o serviço anterior", |
76 | "menu.services.addNewService" : "Adicionar Novo Serviço...", | 77 | "menu.services.addNewService" : "Adicionar Novo Serviço...", |
77 | "menu.services.setNextServiceActive" : "Activate next service", | 78 | "menu.services.setNextServiceActive" : "Activar o próximo serviço", |
78 | "menu.view" : "Ver", | 79 | "menu.view" : "Ver", |
79 | "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo", | 80 | "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo", |
80 | "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo", | 81 | "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo", |
@@ -89,11 +90,11 @@ | |||
89 | "menu.window" : "Janela", | 90 | "menu.window" : "Janela", |
90 | "menu.window.close" : "Fechar", | 91 | "menu.window.close" : "Fechar", |
91 | "menu.window.minimize" : "Minimizar", | 92 | "menu.window.minimize" : "Minimizar", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Espaços de trabalho", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Adicionar novo Espaço de trabalho", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Fechar a janela do Espaço de trabalho", |
95 | "menu.workspaces.defaultWorkspace" : "Todos os serviços", | 96 | "menu.workspaces.defaultWorkspace" : "Todos os serviços", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Abrir a janela do Espaço de trabalho", |
97 | "password.email.label" : "Endereço de e-mail", | 98 | "password.email.label" : "Endereço de e-mail", |
98 | "password.headline" : "Repor a minha palavra-passe", | 99 | "password.headline" : "Repor a minha palavra-passe", |
99 | "password.link.login" : "Iniciar sessão", | 100 | "password.link.login" : "Iniciar sessão", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "Oh não!", | 118 | "service.errorHandler.headline" : "Oh não!", |
118 | "service.errorHandler.message" : "Erro", | 119 | "service.errorHandler.message" : "Erro", |
119 | "service.errorHandler.text" : "{name} falhou o carregamento", | 120 | "service.errorHandler.text" : "{name} falhou o carregamento", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "A ler", |
121 | "services.getStarted" : "Vamos começar", | 122 | "services.getStarted" : "Vamos começar", |
122 | "services.welcome" : "Bem-vindo ao Franz", | 123 | "services.welcome" : "Bem-vindo ao Franz", |
123 | "settings.account.account.editButton" : "Editar conta", | 124 | "settings.account.account.editButton" : "Editar conta", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Convide Amigos", | 178 | "settings.navigation.inviteFriends" : "Convide Amigos", |
178 | "settings.navigation.logout" : "Terminar sessão", | 179 | "settings.navigation.logout" : "Terminar sessão", |
179 | "settings.navigation.settings" : "Definições", | 180 | "settings.navigation.settings" : "Definições", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Gerir a equipa", |
181 | "settings.navigation.yourServices" : "Os seus serviços", | 182 | "settings.navigation.yourServices" : "Os seus serviços", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "Os teus Espaços de trabalho", |
183 | "settings.recipes.all" : "Todos os serviços", | 184 | "settings.recipes.all" : "Todos os serviços", |
184 | "settings.recipes.dev" : "Desenvolvimento", | 185 | "settings.recipes.dev" : "Desenvolvimento", |
185 | "settings.recipes.headline" : "Serviços disponíveis", | 186 | "settings.recipes.headline" : "Serviços disponíveis", |
@@ -232,17 +233,17 @@ | |||
232 | "settings.services.discoverServices" : "Descobrir serviços", | 233 | "settings.services.discoverServices" : "Descobrir serviços", |
233 | "settings.services.headline" : "Os seus serviços", | 234 | "settings.services.headline" : "Os seus serviços", |
234 | "settings.services.noServicesAdded" : "Ainda não adicionou nenhum serviço.", | 235 | "settings.services.noServicesAdded" : "Ainda não adicionou nenhum serviço.", |
235 | "settings.services.servicesRequestFailed" : "Could not load your services", | 236 | "settings.services.servicesRequestFailed" : "Não foi possível ler os teus serviços", |
236 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", | 237 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", |
237 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", | 238 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", |
238 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", | 239 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", |
239 | "settings.services.updatedInfo" : "As alterações foram guardadas", | 240 | "settings.services.updatedInfo" : "As alterações foram guardadas", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Franz para equipas", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
242 | "settings.team.headline" : "Equipa", | 243 | "settings.team.headline" : "Equipa", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Gerir a tua Equipa em meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Actualiza a tua conta", |
246 | "settings.user.form.accountType.company" : "Empresa", | 247 | "settings.user.form.accountType.company" : "Empresa", |
247 | "settings.user.form.accountType.individual" : "Indivíduo", | 248 | "settings.user.form.accountType.individual" : "Indivíduo", |
248 | "settings.user.form.accountType.label" : "Tipo de conta", | 249 | "settings.user.form.accountType.label" : "Tipo de conta", |
@@ -253,24 +254,24 @@ | |||
253 | "settings.user.form.lastname" : "Último Nome", | 254 | "settings.user.form.lastname" : "Último Nome", |
254 | "settings.user.form.newPassword" : "Nova palavra-passe", | 255 | "settings.user.form.newPassword" : "Nova palavra-passe", |
255 | "settings.workspace.add.form.name" : "Nome", | 256 | "settings.workspace.add.form.name" : "Nome", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Criar um Espaço de trabalho", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Apagar um Espaço de trabalho", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Gravar um Espaço de trabalho", |
259 | "settings.workspace.form.name" : "Nome", | 260 | "settings.workspace.form.name" : "Nome", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Os teus Espaços de trabalho", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "O Espaço de trabalho foi apagado", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Os teus Espaços de trabalho", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Ainda não adicionou nenhum Espaço de trabalho", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente", |
266 | "settings.workspaces.updatedInfo" : "Your changes have been saved", | 267 | "settings.workspaces.updatedInfo" : "As suas alterações foram gravadas", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo os Espaço de trabalho Franz", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
270 | "sidebar.addNewService" : "Adicionar um novo serviço", | 271 | "sidebar.addNewService" : "Adicionar um novo serviço", |
271 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Fechar a janela do Espaço de trabalho", |
272 | "sidebar.muteApp" : "Desativar notificações e áudio", | 273 | "sidebar.muteApp" : "Desativar notificações e áudio", |
273 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Abrir a janela do Espaço de trabalho", |
274 | "sidebar.settings" : "Definições", | 275 | "sidebar.settings" : "Definições", |
275 | "sidebar.unmuteApp" : "Ativar notificações e áudio", | 276 | "sidebar.unmuteApp" : "Ativar notificações e áudio", |
276 | "signup.company.label" : "Empresa", | 277 | "signup.company.label" : "Empresa", |
@@ -319,7 +320,7 @@ | |||
319 | "welcome.signupButton" : "Criar uma conta gratuita", | 320 | "welcome.signupButton" : "Criar uma conta gratuita", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", |
321 | "workspaceDrawer.allServices" : "Todos os serviços", | 322 | "workspaceDrawer.allServices" : "Todos os serviços", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Espaços de trabalho", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "edit", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 97ad98361..4d20d5745 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Сессия устарела, пожалуйста, войдите снова.", | 45 | "login.tokenExpired" : "Сессия устарела, пожалуйста, войдите снова.", |
46 | "menu.app.about" : "О Franz", | 46 | "menu.app.about" : "О Franz", |
47 | "menu.app.announcement" : "Что нового?", | 47 | "menu.app.announcement" : "Что нового?", |
48 | "menu.app.checkForUpdates" : "Проверить обновления", | ||
48 | "menu.app.hide" : "Скрыть", | 49 | "menu.app.hide" : "Скрыть", |
49 | "menu.app.hideOthers" : "Скрыть остальные", | 50 | "menu.app.hideOthers" : "Скрыть остальные", |
50 | "menu.app.quit" : "Выйти", | 51 | "menu.app.quit" : "Выйти", |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 7af29ef1c..3b051e975 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -1,23 +1,23 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Obnoviť", | 2 | "app.errorHandler.action" : "Obnoviť", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Niečo sa pokazilo", |
4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Zmeny vo Franz {version}", |
5 | "feature.delayApp.action" : "Get a Franz Supporter License", | 5 | "feature.delayApp.action" : "Získajte licenciu pre Franz podporu", |
6 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 6 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
7 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 7 | "feature.delayApp.text" : "Franz bude pokračovať v {seconds} seundách.", |
8 | "feature.shareFranz.action.email" : "Send as email", | 8 | "feature.shareFranz.action.email" : "Odoslať ako e-mail", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 9 | "feature.shareFranz.action.facebook" : "Zdielať na Facebook-u", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 10 | "feature.shareFranz.action.twitter" : "Zdieľať na Twitter-i", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Franz is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", | 15 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", |
16 | "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.", | 16 | "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 17 | "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 18 | "global.spellchecking.autodetect" : "Automaticky rozpoznať jazyk", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 19 | "global.spellchecking.autodetect.short" : "Automatický", |
20 | "global.spellchecking.language" : "Spell checking language", | 20 | "global.spellchecking.language" : "Jazyk kontroly pravopisu", |
21 | "import.headline" : "Importovať vaše služby z Franz 4", | 21 | "import.headline" : "Importovať vaše služby z Franz 4", |
22 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", | 22 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", |
23 | "import.skip.label" : "Chcem pridať služby ručne", | 23 | "import.skip.label" : "Chcem pridať služby ručne", |
@@ -44,7 +44,8 @@ | |||
44 | "login.submit.label" : "Prihlásiť sa", | 44 | "login.submit.label" : "Prihlásiť sa", |
45 | "login.tokenExpired" : "Vaša relácia vypršala, prihláste sa prosím znovu.", | 45 | "login.tokenExpired" : "Vaša relácia vypršala, prihláste sa prosím znovu.", |
46 | "menu.app.about" : "O aplikácii", | 46 | "menu.app.about" : "O aplikácii", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "Čo je nové?", |
48 | "menu.app.checkForUpdates" : "Skontrolovať aktualizácie", | ||
48 | "menu.app.hide" : "Skryť", | 49 | "menu.app.hide" : "Skryť", |
49 | "menu.app.hideOthers" : "Skryť ostatné", | 50 | "menu.app.hideOthers" : "Skryť ostatné", |
50 | "menu.app.quit" : "Ukončiť", | 51 | "menu.app.quit" : "Ukončiť", |
@@ -72,9 +73,9 @@ | |||
72 | "menu.help.support" : "Podpora", | 73 | "menu.help.support" : "Podpora", |
73 | "menu.help.tos" : "Podmienky použitia", | 74 | "menu.help.tos" : "Podmienky použitia", |
74 | "menu.services" : "Služby", | 75 | "menu.services" : "Služby", |
75 | "menu.services.activatePreviousService" : "Activate previous service", | 76 | "menu.services.activatePreviousService" : "Aktivovať predchádzajúcu službu", |
76 | "menu.services.addNewService" : "Pridať novú službu...", | 77 | "menu.services.addNewService" : "Pridať novú službu...", |
77 | "menu.services.setNextServiceActive" : "Activate next service", | 78 | "menu.services.setNextServiceActive" : "Aktivujte ďalšiu službu", |
78 | "menu.view" : "Zobraziť", | 79 | "menu.view" : "Zobraziť", |
79 | "menu.view.enterFullScreen" : "Na celú obrazovku", | 80 | "menu.view.enterFullScreen" : "Na celú obrazovku", |
80 | "menu.view.exitFullScreen" : "Ukončiť režim na celú obrazovku", | 81 | "menu.view.exitFullScreen" : "Ukončiť režim na celú obrazovku", |
@@ -89,8 +90,8 @@ | |||
89 | "menu.window" : "Okno", | 90 | "menu.window" : "Okno", |
90 | "menu.window.close" : "Zatvoriť", | 91 | "menu.window.close" : "Zatvoriť", |
91 | "menu.window.minimize" : "Minimalizovať", | 92 | "menu.window.minimize" : "Minimalizovať", |
92 | "menu.workspaces" : "Workspaces", | 93 | "menu.workspaces" : "Pracovný priestor", |
93 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 94 | "menu.workspaces.addNewWorkspace" : "Pridať nový pracovný priestor ...", |
94 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", |
95 | "menu.workspaces.defaultWorkspace" : "Všetky služby", | 96 | "menu.workspaces.defaultWorkspace" : "Všetky služby", |
96 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", |
@@ -101,7 +102,7 @@ | |||
101 | "password.noUser" : "Používateľ s touto e-mailovou adresou nebol nájdený", | 102 | "password.noUser" : "Používateľ s touto e-mailovou adresou nebol nájdený", |
102 | "password.submit.label" : "Odoslať", | 103 | "password.submit.label" : "Odoslať", |
103 | "password.successInfo" : "Skontrolujte prosím váš e-mail", | 104 | "password.successInfo" : "Skontrolujte prosím váš e-mail", |
104 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 105 | "premiumFeature.button.upgradeAccount" : "Upgradovať účet", |
105 | "pricing.headline" : "Podporiť Franz", | 106 | "pricing.headline" : "Podporiť Franz", |
106 | "pricing.link.skipPayment" : "Nechcem podporiť vývoj aplikácie Franz.", | 107 | "pricing.link.skipPayment" : "Nechcem podporiť vývoj aplikácie Franz.", |
107 | "pricing.submit.label" : "Chcem podporiť vývoj aplikácie Franz", | 108 | "pricing.submit.label" : "Chcem podporiť vývoj aplikácie Franz", |
@@ -117,7 +118,7 @@ | |||
117 | "service.errorHandler.headline" : "Ale nie!", | 118 | "service.errorHandler.headline" : "Ale nie!", |
118 | "service.errorHandler.message" : "Chyba", | 119 | "service.errorHandler.message" : "Chyba", |
119 | "service.errorHandler.text" : "{name} has failed to load.", | 120 | "service.errorHandler.text" : "{name} has failed to load.", |
120 | "service.webviewLoader.loading" : "Loading", | 121 | "service.webviewLoader.loading" : "Načítava", |
121 | "services.getStarted" : "Začíname", | 122 | "services.getStarted" : "Začíname", |
122 | "services.welcome" : "Vítajte v aplikácii Franz", | 123 | "services.welcome" : "Vítajte v aplikácii Franz", |
123 | "settings.account.account.editButton" : "Upraviť účet", | 124 | "settings.account.account.editButton" : "Upraviť účet", |
@@ -149,7 +150,7 @@ | |||
149 | "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí", | 150 | "settings.app.form.autoLaunchInBackground" : "Otvoriť na pozadí", |
150 | "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte", | 151 | "settings.app.form.autoLaunchOnStart" : "Spustiť Franz pri štarte", |
151 | "settings.app.form.beta" : "Vrátane beta verzií", | 152 | "settings.app.form.beta" : "Vrátane beta verzií", |
152 | "settings.app.form.darkMode" : "Join the Dark Side", | 153 | "settings.app.form.darkMode" : "Spustiť Dark Side", |
153 | "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie", | 154 | "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie", |
154 | "settings.app.form.enableSpellchecking" : "Zapnúť kontrolu pravopisu", | 155 | "settings.app.form.enableSpellchecking" : "Zapnúť kontrolu pravopisu", |
155 | "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište", | 156 | "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište", |
@@ -164,7 +165,7 @@ | |||
164 | "settings.app.headlineGeneral" : "Všeobecné", | 165 | "settings.app.headlineGeneral" : "Všeobecné", |
165 | "settings.app.headlineLanguage" : "Jazyk", | 166 | "settings.app.headlineLanguage" : "Jazyk", |
166 | "settings.app.headlineUpdates" : "Aktualizácie", | 167 | "settings.app.headlineUpdates" : "Aktualizácie", |
167 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 168 | "settings.app.languageDisclaimer" : "Oficiálne preklady sú angličtina a nemčina. Všetky ostatné jazyky sú preklady založené na komunite.", |
168 | "settings.app.restartRequired" : "Zmeny vyžadujú reštart", | 169 | "settings.app.restartRequired" : "Zmeny vyžadujú reštart", |
169 | "settings.app.subheadlineCache" : "Vyrovnávacia pamäť", | 170 | "settings.app.subheadlineCache" : "Vyrovnávacia pamäť", |
170 | "settings.app.translationHelp" : "Pomôžte nám preložiť Franz do svojho jazyka.", | 171 | "settings.app.translationHelp" : "Pomôžte nám preložiť Franz do svojho jazyka.", |
@@ -177,9 +178,9 @@ | |||
177 | "settings.navigation.inviteFriends" : "Pozvať priateľov", | 178 | "settings.navigation.inviteFriends" : "Pozvať priateľov", |
178 | "settings.navigation.logout" : "Odhlásiť sa", | 179 | "settings.navigation.logout" : "Odhlásiť sa", |
179 | "settings.navigation.settings" : "Nastavenia", | 180 | "settings.navigation.settings" : "Nastavenia", |
180 | "settings.navigation.team" : "Manage Team", | 181 | "settings.navigation.team" : "Spravovať tím", |
181 | "settings.navigation.yourServices" : "Vaše služby", | 182 | "settings.navigation.yourServices" : "Vaše služby", |
182 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 183 | "settings.navigation.yourWorkspaces" : "Tvoje pracovné priestory", |
183 | "settings.recipes.all" : "Všetky služby", | 184 | "settings.recipes.all" : "Všetky služby", |
184 | "settings.recipes.dev" : "Vývoj", | 185 | "settings.recipes.dev" : "Vývoj", |
185 | "settings.recipes.headline" : "Dostupné služby", | 186 | "settings.recipes.headline" : "Dostupné služby", |
@@ -201,7 +202,7 @@ | |||
201 | "settings.service.form.editServiceHeadline" : "Upraviť {name}", | 202 | "settings.service.form.editServiceHeadline" : "Upraviť {name}", |
202 | "settings.service.form.enableAudio" : "Zapnúť zvuk", | 203 | "settings.service.form.enableAudio" : "Zapnúť zvuk", |
203 | "settings.service.form.enableBadge" : "Zobraziť symboly neprečítaných správ", | 204 | "settings.service.form.enableBadge" : "Zobraziť symboly neprečítaných správ", |
204 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 205 | "settings.service.form.enableDarkMode" : "Zapnúť Dark Mode", |
205 | "settings.service.form.enableNotification" : "Povoliť oznámenia", | 206 | "settings.service.form.enableNotification" : "Povoliť oznámenia", |
206 | "settings.service.form.enableService" : "Povoliť službu", | 207 | "settings.service.form.enableService" : "Povoliť službu", |
207 | "settings.service.form.headlineBadges" : "Symboly neprečítaných správ", | 208 | "settings.service.form.headlineBadges" : "Symboly neprečítaných správ", |
@@ -216,12 +217,12 @@ | |||
216 | "settings.service.form.name" : "Meno", | 217 | "settings.service.form.name" : "Meno", |
217 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 218 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", |
218 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 219 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
219 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 220 | "settings.service.form.proxy.info" : "Nastavenia servera proxy sa nebudú synchronizovať so servermi Franz.", |
220 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 221 | "settings.service.form.proxy.isEnabled" : "Použiť Proxy", |
221 | "settings.service.form.proxy.password" : "Password (optional)", | 222 | "settings.service.form.proxy.password" : "Heslo (voliteľné)", |
222 | "settings.service.form.proxy.port" : "Port", | 223 | "settings.service.form.proxy.port" : "Port", |
223 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 224 | "settings.service.form.proxy.restartInfo" : "Po zmene nastavení servera proxy reštartujte Franz.", |
224 | "settings.service.form.proxy.user" : "User (optional)", | 225 | "settings.service.form.proxy.user" : "Používateľ (voliteľné)", |
225 | "settings.service.form.saveButton" : "Uložiť službu", | 226 | "settings.service.form.saveButton" : "Uložiť službu", |
226 | "settings.service.form.tabHosted" : "Hostované", | 227 | "settings.service.form.tabHosted" : "Hostované", |
227 | "settings.service.form.tabOnPremise" : "Vlastné hostovanie ⭐️", | 228 | "settings.service.form.tabOnPremise" : "Vlastné hostovanie ⭐️", |
@@ -232,17 +233,17 @@ | |||
232 | "settings.services.discoverServices" : "Preskúmať služby", | 233 | "settings.services.discoverServices" : "Preskúmať služby", |
233 | "settings.services.headline" : "Vaše služby", | 234 | "settings.services.headline" : "Vaše služby", |
234 | "settings.services.noServicesAdded" : "Doposiaľ ste nepridali žiadne služby.", | 235 | "settings.services.noServicesAdded" : "Doposiaľ ste nepridali žiadne služby.", |
235 | "settings.services.servicesRequestFailed" : "Could not load your services", | 236 | "settings.services.servicesRequestFailed" : "Nepodarilo sa načítať vaše služby", |
236 | "settings.services.tooltip.isDisabled" : "Služba je vypnutá", | 237 | "settings.services.tooltip.isDisabled" : "Služba je vypnutá", |
237 | "settings.services.tooltip.isMuted" : "Všetky zvuky sú stíšené", | 238 | "settings.services.tooltip.isMuted" : "Všetky zvuky sú stíšené", |
238 | "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté", | 239 | "settings.services.tooltip.notificationsDisabled" : "Oznámenia sú vypnuté", |
239 | "settings.services.updatedInfo" : "Vaše zmeny boli uložené", | 240 | "settings.services.updatedInfo" : "Vaše zmeny boli uložené", |
240 | "settings.team.contentHeadline" : "Franz for Teams", | 241 | "settings.team.contentHeadline" : "Franz pre tímy", |
241 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 242 | "settings.team.copy" : "Franz for Teams vám dáva možnosť pozvať spolupracovníkov do vášho tímu odoslaním e-mailových pozvánok a spravovaním ich odberov v preferenciách vášho účtu. Nestrácajte čas vytváraním predplatného pre každého člena tímu jednotlivo, zabudnite na viac faktúr a rôzne fakturačné cykly - jeden tím bude pre všetkých!", |
242 | "settings.team.headline" : "Tím", | 243 | "settings.team.headline" : "Tím", |
243 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 244 | "settings.team.intro" : "Vy a váš tím používate Franz? Teraz môžete spravovať prémiové predplatné pre toľko kolegov, priateľov alebo rodinných príslušníkov, koľko chcete, všetko z jedného účtu.", |
244 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 245 | "settings.team.manageAction" : "Spravujte svoj tím na adrese meetfranz.com", |
245 | "settings.team.upgradeAction" : "Upgrade your Account", | 246 | "settings.team.upgradeAction" : "Vylepšite svoj účet", |
246 | "settings.user.form.accountType.company" : "Spoločnosť", | 247 | "settings.user.form.accountType.company" : "Spoločnosť", |
247 | "settings.user.form.accountType.individual" : "Osoba", | 248 | "settings.user.form.accountType.individual" : "Osoba", |
248 | "settings.user.form.accountType.label" : "Typ účtu", | 249 | "settings.user.form.accountType.label" : "Typ účtu", |
@@ -253,18 +254,18 @@ | |||
253 | "settings.user.form.lastname" : "Priezvisko", | 254 | "settings.user.form.lastname" : "Priezvisko", |
254 | "settings.user.form.newPassword" : "Nové heslo", | 255 | "settings.user.form.newPassword" : "Nové heslo", |
255 | "settings.workspace.add.form.name" : "Meno", | 256 | "settings.workspace.add.form.name" : "Meno", |
256 | "settings.workspace.add.form.submitButton" : "Create workspace", | 257 | "settings.workspace.add.form.submitButton" : "Vytvoriť pracovný priestor", |
257 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 258 | "settings.workspace.form.buttonDelete" : "Vymazať pracovný priestor", |
258 | "settings.workspace.form.buttonSave" : "Save workspace", | 259 | "settings.workspace.form.buttonSave" : "Uložiť pracovný priestor", |
259 | "settings.workspace.form.name" : "Meno", | 260 | "settings.workspace.form.name" : "Meno", |
260 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Služby v tomto pracovnom priestore", |
261 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 262 | "settings.workspace.form.yourWorkspaces" : "Tvoje pracovné priestory", |
262 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 263 | "settings.workspaces.deletedInfo" : "Pracovný priestor bol odstránený", |
263 | "settings.workspaces.headline" : "Your workspaces", | 264 | "settings.workspaces.headline" : "Tvoje pracovné priestory", |
264 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 265 | "settings.workspaces.noWorkspacesAdded" : "Zatiaľ si nepridal žiadne pracovné priestory.", |
265 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", |
266 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", | 267 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", |
267 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Menej je viac: Predstavenie Franz Pracovné priestory", |
268 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
269 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
270 | "sidebar.addNewService" : "Pridať novú službu", | 271 | "sidebar.addNewService" : "Pridať novú službu", |
@@ -319,7 +320,7 @@ | |||
319 | "welcome.signupButton" : "Vytvoriť účet zdarma", | 320 | "welcome.signupButton" : "Vytvoriť účet zdarma", |
320 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", |
321 | "workspaceDrawer.allServices" : "Všetky služby", | 322 | "workspaceDrawer.allServices" : "Všetky služby", |
322 | "workspaceDrawer.headline" : "Workspaces", | 323 | "workspaceDrawer.headline" : "Pracovný priestor", |
323 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "edit", |
324 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", |
325 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index e5962566b..6ba059af8 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
46 | "menu.app.about" : "O Francu", | 46 | "menu.app.about" : "O Francu", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Potraži ažuriranja", | ||
48 | "menu.app.hide" : "Sakrij", | 49 | "menu.app.hide" : "Sakrij", |
49 | "menu.app.hideOthers" : "Sakrij ostale", | 50 | "menu.app.hideOthers" : "Sakrij ostale", |
50 | "menu.app.quit" : "Izađi", | 51 | "menu.app.quit" : "Izađi", |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 69c5ede37..d8200b4f3 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", | 45 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", |
46 | "menu.app.about" : "Franz Hakkında", | 46 | "menu.app.about" : "Franz Hakkında", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Güncellemeleri kontrol et", | ||
48 | "menu.app.hide" : "Gizle", | 49 | "menu.app.hide" : "Gizle", |
49 | "menu.app.hideOthers" : "Diğerlerini Gizle", | 50 | "menu.app.hideOthers" : "Diğerlerini Gizle", |
50 | "menu.app.quit" : "Çıkış", | 51 | "menu.app.quit" : "Çıkış", |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 113665f5f..8d68590fb 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "Ваша сесія закінчилась, будь ласка, увійдіть знову.", | 45 | "login.tokenExpired" : "Ваша сесія закінчилась, будь ласка, увійдіть знову.", |
46 | "menu.app.about" : "Про Franz", | 46 | "menu.app.about" : "Про Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Перевірити наявність оновлень", | ||
48 | "menu.app.hide" : "Приховати", | 49 | "menu.app.hide" : "Приховати", |
49 | "menu.app.hideOthers" : "Приховати інші", | 50 | "menu.app.hideOthers" : "Приховати інші", |
50 | "menu.app.quit" : "Вийти", | 51 | "menu.app.quit" : "Вийти", |
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index 34bd2158c..aa6247063 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json | |||
@@ -45,6 +45,7 @@ | |||
45 | "login.tokenExpired" : "您的登入已過期,請重新登入。", | 45 | "login.tokenExpired" : "您的登入已過期,請重新登入。", |
46 | "menu.app.about" : "關於 Franz", | 46 | "menu.app.about" : "關於 Franz", |
47 | "menu.app.announcement" : "What's new?", | 47 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "檢查更新", | ||
48 | "menu.app.hide" : "隱藏", | 49 | "menu.app.hide" : "隱藏", |
49 | "menu.app.hideOthers" : "隱藏其他", | 50 | "menu.app.hideOthers" : "隱藏其他", |
50 | "menu.app.quit" : "結束", | 51 | "menu.app.quit" : "結束", |
diff --git a/src/i18n/messages/src/components/AppUpdateInfoBar.json b/src/i18n/messages/src/components/AppUpdateInfoBar.json new file mode 100644 index 000000000..c4c2d0cae --- /dev/null +++ b/src/i18n/messages/src/components/AppUpdateInfoBar.json | |||
@@ -0,0 +1,41 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "infobar.updateAvailable", | ||
4 | "defaultMessage": "!!!A new update for Franz is available.", | ||
5 | "file": "src/components/AppUpdateInfoBar.js", | ||
6 | "start": { | ||
7 | "line": 9, | ||
8 | "column": 19 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 12, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "infobar.buttonChangelog", | ||
17 | "defaultMessage": "!!!Changelog", | ||
18 | "file": "src/components/AppUpdateInfoBar.js", | ||
19 | "start": { | ||
20 | "line": 13, | ||
21 | "column": 13 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 16, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "infobar.buttonInstallUpdate", | ||
30 | "defaultMessage": "!!!Restart & install update", | ||
31 | "file": "src/components/AppUpdateInfoBar.js", | ||
32 | "start": { | ||
33 | "line": 17, | ||
34 | "column": 23 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 20, | ||
38 | "column": 3 | ||
39 | } | ||
40 | } | ||
41 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 26b8ce040..190c5dff7 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json | |||
@@ -4,24 +4,11 @@ | |||
4 | "defaultMessage": "!!!Your services have been updated.", | 4 | "defaultMessage": "!!!Your services have been updated.", |
5 | "file": "src/components/layout/AppLayout.js", | 5 | "file": "src/components/layout/AppLayout.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 27, | 7 | "line": 26, |
8 | "column": 19 | 8 | "column": 19 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 30, | 11 | "line": 29, |
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "infobar.updateAvailable", | ||
17 | "defaultMessage": "!!!A new update for Franz is available.", | ||
18 | "file": "src/components/layout/AppLayout.js", | ||
19 | "start": { | ||
20 | "line": 31, | ||
21 | "column": 19 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 34, | ||
25 | "column": 3 | 12 | "column": 3 |
26 | } | 13 | } |
27 | }, | 14 | }, |
@@ -30,37 +17,11 @@ | |||
30 | "defaultMessage": "!!!Reload services", | 17 | "defaultMessage": "!!!Reload services", |
31 | "file": "src/components/layout/AppLayout.js", | 18 | "file": "src/components/layout/AppLayout.js", |
32 | "start": { | 19 | "start": { |
33 | "line": 35, | 20 | "line": 30, |
34 | "column": 24 | 21 | "column": 24 |
35 | }, | 22 | }, |
36 | "end": { | 23 | "end": { |
37 | "line": 38, | 24 | "line": 33, |
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "infobar.buttonChangelog", | ||
43 | "defaultMessage": "!!!Changelog", | ||
44 | "file": "src/components/layout/AppLayout.js", | ||
45 | "start": { | ||
46 | "line": 39, | ||
47 | "column": 13 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 42, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "infobar.buttonInstallUpdate", | ||
56 | "defaultMessage": "!!!Restart & install update", | ||
57 | "file": "src/components/layout/AppLayout.js", | ||
58 | "start": { | ||
59 | "line": 43, | ||
60 | "column": 23 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 46, | ||
64 | "column": 3 | 25 | "column": 3 |
65 | } | 26 | } |
66 | }, | 27 | }, |
@@ -69,11 +30,11 @@ | |||
69 | "defaultMessage": "!!!Could not load services and user information", | 30 | "defaultMessage": "!!!Could not load services and user information", |
70 | "file": "src/components/layout/AppLayout.js", | 31 | "file": "src/components/layout/AppLayout.js", |
71 | "start": { | 32 | "start": { |
72 | "line": 47, | 33 | "line": 34, |
73 | "column": 26 | 34 | "column": 26 |
74 | }, | 35 | }, |
75 | "end": { | 36 | "end": { |
76 | "line": 50, | 37 | "line": 37, |
77 | "column": 3 | 38 | "column": 3 |
78 | } | 39 | } |
79 | } | 40 | } |
diff --git a/src/i18n/messages/src/helpers/validation-helpers.json b/src/i18n/messages/src/helpers/validation-helpers.json index 86bfe1500..6be1d33e9 100644 --- a/src/i18n/messages/src/helpers/validation-helpers.json +++ b/src/i18n/messages/src/helpers/validation-helpers.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Field is required", | 4 | "defaultMessage": "!!!Field is required", |
5 | "file": "src/helpers/validation-helpers.js", | 5 | "file": "src/helpers/validation-helpers.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 4, | 7 | "line": 5, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 7, | 11 | "line": 8, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Email not valid", | 17 | "defaultMessage": "!!!Email not valid", |
18 | "file": "src/helpers/validation-helpers.js", | 18 | "file": "src/helpers/validation-helpers.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 8, | 20 | "line": 9, |
21 | "column": 9 | 21 | "column": 9 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 11, | 24 | "line": 12, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Not a valid URL", | 30 | "defaultMessage": "!!!Not a valid URL", |
31 | "file": "src/helpers/validation-helpers.js", | 31 | "file": "src/helpers/validation-helpers.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 12, | 33 | "line": 13, |
34 | "column": 7 | 34 | "column": 7 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 15, | 37 | "line": 16, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Too few characters", | 43 | "defaultMessage": "!!!Too few characters", |
44 | "file": "src/helpers/validation-helpers.js", | 44 | "file": "src/helpers/validation-helpers.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 16, | 46 | "line": 17, |
47 | "column": 13 | 47 | "column": 13 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 19, | 50 | "line": 20, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!At least one is required", | 56 | "defaultMessage": "!!!At least one is required", |
57 | "file": "src/helpers/validation-helpers.js", | 57 | "file": "src/helpers/validation-helpers.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 20, | 59 | "line": 21, |
60 | "column": 15 | 60 | "column": 15 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 23, | 63 | "line": 24, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | } | 66 | } |
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index 2adf5b787..daafb0900 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json | |||
@@ -507,15 +507,28 @@ | |||
507 | } | 507 | } |
508 | }, | 508 | }, |
509 | { | 509 | { |
510 | "id": "menu.app.checkForUpdates", | ||
511 | "defaultMessage": "!!!Check for updates", | ||
512 | "file": "src/lib/Menu.js", | ||
513 | "start": { | ||
514 | "line": 171, | ||
515 | "column": 19 | ||
516 | }, | ||
517 | "end": { | ||
518 | "line": 174, | ||
519 | "column": 3 | ||
520 | } | ||
521 | }, | ||
522 | { | ||
510 | "id": "menu.app.hide", | 523 | "id": "menu.app.hide", |
511 | "defaultMessage": "!!!Hide", | 524 | "defaultMessage": "!!!Hide", |
512 | "file": "src/lib/Menu.js", | 525 | "file": "src/lib/Menu.js", |
513 | "start": { | 526 | "start": { |
514 | "line": 171, | 527 | "line": 175, |
515 | "column": 8 | 528 | "column": 8 |
516 | }, | 529 | }, |
517 | "end": { | 530 | "end": { |
518 | "line": 174, | 531 | "line": 178, |
519 | "column": 3 | 532 | "column": 3 |
520 | } | 533 | } |
521 | }, | 534 | }, |
@@ -524,11 +537,11 @@ | |||
524 | "defaultMessage": "!!!Hide Others", | 537 | "defaultMessage": "!!!Hide Others", |
525 | "file": "src/lib/Menu.js", | 538 | "file": "src/lib/Menu.js", |
526 | "start": { | 539 | "start": { |
527 | "line": 175, | 540 | "line": 179, |
528 | "column": 14 | 541 | "column": 14 |
529 | }, | 542 | }, |
530 | "end": { | 543 | "end": { |
531 | "line": 178, | 544 | "line": 182, |
532 | "column": 3 | 545 | "column": 3 |
533 | } | 546 | } |
534 | }, | 547 | }, |
@@ -537,11 +550,11 @@ | |||
537 | "defaultMessage": "!!!Unhide", | 550 | "defaultMessage": "!!!Unhide", |
538 | "file": "src/lib/Menu.js", | 551 | "file": "src/lib/Menu.js", |
539 | "start": { | 552 | "start": { |
540 | "line": 179, | 553 | "line": 183, |
541 | "column": 10 | 554 | "column": 10 |
542 | }, | 555 | }, |
543 | "end": { | 556 | "end": { |
544 | "line": 182, | 557 | "line": 186, |
545 | "column": 3 | 558 | "column": 3 |
546 | } | 559 | } |
547 | }, | 560 | }, |
@@ -550,11 +563,11 @@ | |||
550 | "defaultMessage": "!!!Quit", | 563 | "defaultMessage": "!!!Quit", |
551 | "file": "src/lib/Menu.js", | 564 | "file": "src/lib/Menu.js", |
552 | "start": { | 565 | "start": { |
553 | "line": 183, | 566 | "line": 187, |
554 | "column": 8 | 567 | "column": 8 |
555 | }, | 568 | }, |
556 | "end": { | 569 | "end": { |
557 | "line": 186, | 570 | "line": 190, |
558 | "column": 3 | 571 | "column": 3 |
559 | } | 572 | } |
560 | }, | 573 | }, |
@@ -563,11 +576,11 @@ | |||
563 | "defaultMessage": "!!!Add New Service...", | 576 | "defaultMessage": "!!!Add New Service...", |
564 | "file": "src/lib/Menu.js", | 577 | "file": "src/lib/Menu.js", |
565 | "start": { | 578 | "start": { |
566 | "line": 187, | 579 | "line": 191, |
567 | "column": 17 | 580 | "column": 17 |
568 | }, | 581 | }, |
569 | "end": { | 582 | "end": { |
570 | "line": 190, | 583 | "line": 194, |
571 | "column": 3 | 584 | "column": 3 |
572 | } | 585 | } |
573 | }, | 586 | }, |
@@ -576,11 +589,11 @@ | |||
576 | "defaultMessage": "!!!Add New Workspace...", | 589 | "defaultMessage": "!!!Add New Workspace...", |
577 | "file": "src/lib/Menu.js", | 590 | "file": "src/lib/Menu.js", |
578 | "start": { | 591 | "start": { |
579 | "line": 191, | 592 | "line": 195, |
580 | "column": 19 | 593 | "column": 19 |
581 | }, | 594 | }, |
582 | "end": { | 595 | "end": { |
583 | "line": 194, | 596 | "line": 198, |
584 | "column": 3 | 597 | "column": 3 |
585 | } | 598 | } |
586 | }, | 599 | }, |
@@ -589,11 +602,11 @@ | |||
589 | "defaultMessage": "!!!Open workspace drawer", | 602 | "defaultMessage": "!!!Open workspace drawer", |
590 | "file": "src/lib/Menu.js", | 603 | "file": "src/lib/Menu.js", |
591 | "start": { | 604 | "start": { |
592 | "line": 195, | 605 | "line": 199, |
593 | "column": 23 | 606 | "column": 23 |
594 | }, | 607 | }, |
595 | "end": { | 608 | "end": { |
596 | "line": 198, | 609 | "line": 202, |
597 | "column": 3 | 610 | "column": 3 |
598 | } | 611 | } |
599 | }, | 612 | }, |
@@ -602,11 +615,11 @@ | |||
602 | "defaultMessage": "!!!Close workspace drawer", | 615 | "defaultMessage": "!!!Close workspace drawer", |
603 | "file": "src/lib/Menu.js", | 616 | "file": "src/lib/Menu.js", |
604 | "start": { | 617 | "start": { |
605 | "line": 199, | 618 | "line": 203, |
606 | "column": 24 | 619 | "column": 24 |
607 | }, | 620 | }, |
608 | "end": { | 621 | "end": { |
609 | "line": 202, | 622 | "line": 206, |
610 | "column": 3 | 623 | "column": 3 |
611 | } | 624 | } |
612 | }, | 625 | }, |
@@ -615,11 +628,11 @@ | |||
615 | "defaultMessage": "!!!Activate next service...", | 628 | "defaultMessage": "!!!Activate next service...", |
616 | "file": "src/lib/Menu.js", | 629 | "file": "src/lib/Menu.js", |
617 | "start": { | 630 | "start": { |
618 | "line": 203, | 631 | "line": 207, |
619 | "column": 23 | 632 | "column": 23 |
620 | }, | 633 | }, |
621 | "end": { | 634 | "end": { |
622 | "line": 206, | 635 | "line": 210, |
623 | "column": 3 | 636 | "column": 3 |
624 | } | 637 | } |
625 | }, | 638 | }, |
@@ -628,11 +641,11 @@ | |||
628 | "defaultMessage": "!!!Activate previous service...", | 641 | "defaultMessage": "!!!Activate previous service...", |
629 | "file": "src/lib/Menu.js", | 642 | "file": "src/lib/Menu.js", |
630 | "start": { | 643 | "start": { |
631 | "line": 207, | 644 | "line": 211, |
632 | "column": 27 | 645 | "column": 27 |
633 | }, | 646 | }, |
634 | "end": { | 647 | "end": { |
635 | "line": 210, | 648 | "line": 214, |
636 | "column": 3 | 649 | "column": 3 |
637 | } | 650 | } |
638 | }, | 651 | }, |
@@ -641,11 +654,11 @@ | |||
641 | "defaultMessage": "!!!Disable notifications & audio", | 654 | "defaultMessage": "!!!Disable notifications & audio", |
642 | "file": "src/lib/Menu.js", | 655 | "file": "src/lib/Menu.js", |
643 | "start": { | 656 | "start": { |
644 | "line": 211, | 657 | "line": 215, |
645 | "column": 11 | 658 | "column": 11 |
646 | }, | 659 | }, |
647 | "end": { | 660 | "end": { |
648 | "line": 214, | 661 | "line": 218, |
649 | "column": 3 | 662 | "column": 3 |
650 | } | 663 | } |
651 | }, | 664 | }, |
@@ -654,11 +667,11 @@ | |||
654 | "defaultMessage": "!!!Enable notifications & audio", | 667 | "defaultMessage": "!!!Enable notifications & audio", |
655 | "file": "src/lib/Menu.js", | 668 | "file": "src/lib/Menu.js", |
656 | "start": { | 669 | "start": { |
657 | "line": 215, | 670 | "line": 219, |
658 | "column": 13 | 671 | "column": 13 |
659 | }, | 672 | }, |
660 | "end": { | 673 | "end": { |
661 | "line": 218, | 674 | "line": 222, |
662 | "column": 3 | 675 | "column": 3 |
663 | } | 676 | } |
664 | }, | 677 | }, |
@@ -667,11 +680,11 @@ | |||
667 | "defaultMessage": "!!!Workspaces", | 680 | "defaultMessage": "!!!Workspaces", |
668 | "file": "src/lib/Menu.js", | 681 | "file": "src/lib/Menu.js", |
669 | "start": { | 682 | "start": { |
670 | "line": 219, | 683 | "line": 223, |
671 | "column": 14 | 684 | "column": 14 |
672 | }, | 685 | }, |
673 | "end": { | 686 | "end": { |
674 | "line": 222, | 687 | "line": 226, |
675 | "column": 3 | 688 | "column": 3 |
676 | } | 689 | } |
677 | }, | 690 | }, |
@@ -680,11 +693,11 @@ | |||
680 | "defaultMessage": "!!!Default", | 693 | "defaultMessage": "!!!Default", |
681 | "file": "src/lib/Menu.js", | 694 | "file": "src/lib/Menu.js", |
682 | "start": { | 695 | "start": { |
683 | "line": 223, | 696 | "line": 227, |
684 | "column": 20 | 697 | "column": 20 |
685 | }, | 698 | }, |
686 | "end": { | 699 | "end": { |
687 | "line": 226, | 700 | "line": 230, |
688 | "column": 3 | 701 | "column": 3 |
689 | } | 702 | } |
690 | } | 703 | } |
diff --git a/src/index.html b/src/index.html index 5ce7f6a96..bf15e2d4e 100644 --- a/src/index.html +++ b/src/index.html | |||
@@ -17,7 +17,7 @@ | |||
17 | if (isDevMode) { | 17 | if (isDevMode) { |
18 | const debugging = require('debug'); | 18 | const debugging = require('debug'); |
19 | debugging.enable(process.env.DEBUG); | 19 | debugging.enable(process.env.DEBUG); |
20 | 20 | ||
21 | const debug = debugging('Index'); | 21 | const debug = debugging('Index'); |
22 | 22 | ||
23 | document.querySelector('body').classList.add('isDevMode'); | 23 | document.querySelector('body').classList.add('isDevMode'); |
@@ -36,7 +36,7 @@ | |||
36 | window._onLiveReloadFileChanged = (file) => { | 36 | window._onLiveReloadFileChanged = (file) => { |
37 | if (!file.path.includes('/build/webview/') && !file.path.includes('/build/index.js') && !file.path.includes('/build/electron/')) { | 37 | if (!file.path.includes('/build/webview/') && !file.path.includes('/build/index.js') && !file.path.includes('/build/electron/')) { |
38 | originalReloadBehaviour(file); | 38 | originalReloadBehaviour(file); |
39 | } else { | 39 | } else { |
40 | if (file.path.includes('/build/webview/')) { | 40 | if (file.path.includes('/build/webview/')) { |
41 | debug('Livereload: Reloading all webvies'); | 41 | debug('Livereload: Reloading all webvies'); |
42 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); | 42 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); |
diff --git a/src/index.js b/src/index.js index 3fe996aa7..55592c328 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -180,6 +180,7 @@ const createWindow = () => { | |||
180 | backgroundColor: !settings.get('darkMode') ? '#3498db' : '#1E1E1E', | 180 | backgroundColor: !settings.get('darkMode') ? '#3498db' : '#1E1E1E', |
181 | webPreferences: { | 181 | webPreferences: { |
182 | nodeIntegration: true, | 182 | nodeIntegration: true, |
183 | webviewTag: true, | ||
183 | }, | 184 | }, |
184 | }); | 185 | }); |
185 | 186 | ||
@@ -353,18 +354,26 @@ app.on('ready', () => { | |||
353 | // TODO: rewrite to handle multiple login calls | 354 | // TODO: rewrite to handle multiple login calls |
354 | const noop = () => null; | 355 | const noop = () => null; |
355 | let authCallback = noop; | 356 | let authCallback = noop; |
357 | |||
356 | app.on('login', (event, webContents, request, authInfo, callback) => { | 358 | app.on('login', (event, webContents, request, authInfo, callback) => { |
357 | authCallback = callback; | 359 | authCallback = callback; |
358 | debug('browser login event', authInfo); | 360 | debug('browser login event', authInfo); |
359 | event.preventDefault(); | 361 | event.preventDefault(); |
362 | |||
360 | if (authInfo.isProxy && authInfo.scheme === 'basic') { | 363 | if (authInfo.isProxy && authInfo.scheme === 'basic') { |
364 | debug('Sending service echo ping'); | ||
361 | webContents.send('get-service-id'); | 365 | webContents.send('get-service-id'); |
362 | 366 | ||
363 | ipcMain.once('service-id', (e, id) => { | 367 | ipcMain.once('service-id', (e, id) => { |
364 | debug('Received service id', id); | 368 | debug('Received service id', id); |
365 | 369 | ||
366 | const ps = proxySettings.get(id); | 370 | const ps = proxySettings.get(id); |
367 | callback(ps.user, ps.password); | 371 | if (ps) { |
372 | debug('Sending proxy auth callback for service', id); | ||
373 | callback(ps.user, ps.password); | ||
374 | } else { | ||
375 | debug('No proxy auth config found for', id); | ||
376 | } | ||
368 | }); | 377 | }); |
369 | } else if (authInfo.scheme === 'basic') { | 378 | } else if (authInfo.scheme === 'basic') { |
370 | debug('basic auth handler', authInfo); | 379 | debug('basic auth handler', authInfo); |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index da2540274..e0dfd736e 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -168,6 +168,10 @@ const menuItems = defineMessages({ | |||
168 | id: 'menu.app.settings', | 168 | id: 'menu.app.settings', |
169 | defaultMessage: '!!!Settings', | 169 | defaultMessage: '!!!Settings', |
170 | }, | 170 | }, |
171 | checkForUpdates: { | ||
172 | id: 'menu.app.checkForUpdates', | ||
173 | defaultMessage: '!!!Check for updates', | ||
174 | }, | ||
171 | hide: { | 175 | hide: { |
172 | id: 'menu.app.hide', | 176 | id: 'menu.app.hide', |
173 | defaultMessage: '!!!Hide', | 177 | defaultMessage: '!!!Hide', |
@@ -500,6 +504,11 @@ const _titleBarTemplateFactory = intl => [ | |||
500 | submenu: [], | 504 | submenu: [], |
501 | }, | 505 | }, |
502 | { | 506 | { |
507 | label: intl.formatMessage(menuItems.workspaces), | ||
508 | submenu: [], | ||
509 | visible: workspaceStore.isFeatureEnabled, | ||
510 | }, | ||
511 | { | ||
503 | label: intl.formatMessage(menuItems.window), | 512 | label: intl.formatMessage(menuItems.window), |
504 | submenu: [ | 513 | submenu: [ |
505 | { | 514 | { |
@@ -638,6 +647,12 @@ export default class FranzMenu { | |||
638 | enabled: this.stores.user.isLoggedIn, | 647 | enabled: this.stores.user.isLoggedIn, |
639 | }, | 648 | }, |
640 | { | 649 | { |
650 | label: intl.formatMessage(menuItems.checkForUpdates), | ||
651 | click: () => { | ||
652 | this.actions.app.checkForUpdates(); | ||
653 | }, | ||
654 | }, | ||
655 | { | ||
641 | type: 'separator', | 656 | type: 'separator', |
642 | }, | 657 | }, |
643 | { | 658 | { |
diff --git a/src/models/Service.js b/src/models/Service.js index 8a2a8d3d8..88bce3360 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -116,6 +116,7 @@ export default class Service { | |||
116 | 116 | ||
117 | @computed get shareWithWebview() { | 117 | @computed get shareWithWebview() { |
118 | return { | 118 | return { |
119 | id: this.id, | ||
119 | spellcheckerLanguage: this.spellcheckerLanguage, | 120 | spellcheckerLanguage: this.spellcheckerLanguage, |
120 | isDarkModeEnabled: this.isDarkModeEnabled, | 121 | isDarkModeEnabled: this.isDarkModeEnabled, |
121 | }; | 122 | }; |
@@ -183,7 +184,9 @@ export default class Service { | |||
183 | options, | 184 | options, |
184 | })); | 185 | })); |
185 | 186 | ||
186 | this.webview.addEventListener('did-start-loading', () => { | 187 | this.webview.addEventListener('did-start-loading', (event) => { |
188 | debug('Did start load', this.name, event); | ||
189 | |||
187 | this.hasCrashed = false; | 190 | this.hasCrashed = false; |
188 | this.isLoading = true; | 191 | this.isLoading = true; |
189 | this.isError = false; | 192 | this.isError = false; |
diff --git a/src/stores/GlobalErrorStore.js b/src/stores/GlobalErrorStore.js index 90bf751c3..7a85c2daa 100644 --- a/src/stores/GlobalErrorStore.js +++ b/src/stores/GlobalErrorStore.js | |||
@@ -18,8 +18,11 @@ export default class GlobalErrorStore extends Store { | |||
18 | this.error = request.error; | 18 | this.error = request.error; |
19 | 19 | ||
20 | if (request.error.json) { | 20 | if (request.error.json) { |
21 | this.response = await request.error.json(); | 21 | try { |
22 | 22 | this.response = await request.error.json(); | |
23 | } catch (error) { | ||
24 | this.response = {}; | ||
25 | } | ||
23 | if (this.error.status === 401) { | 26 | if (this.error.status === 401) { |
24 | this.actions.user.logout({ serverLogout: true }); | 27 | this.actions.user.logout({ serverLogout: true }); |
25 | } | 28 | } |
diff --git a/src/stores/NewsStore.js b/src/stores/NewsStore.js index 6984425df..86e092592 100644 --- a/src/stores/NewsStore.js +++ b/src/stores/NewsStore.js | |||
@@ -16,6 +16,7 @@ export default class NewsStore extends Store { | |||
16 | 16 | ||
17 | // Register action handlers | 17 | // Register action handlers |
18 | this.actions.news.hide.listen(this._hide.bind(this)); | 18 | this.actions.news.hide.listen(this._hide.bind(this)); |
19 | this.actions.user.logout.listen(this._resetNewsRequest.bind(this)); | ||
19 | } | 20 | } |
20 | 21 | ||
21 | setup() { | 22 | setup() { |
@@ -40,4 +41,15 @@ export default class NewsStore extends Store { | |||
40 | remove(result, n => n.id === newsId); | 41 | remove(result, n => n.id === newsId); |
41 | }); | 42 | }); |
42 | } | 43 | } |
44 | |||
45 | /** | ||
46 | * Reset the news request when current user logs out so that when another user | ||
47 | * logs in again without an app restart, the request will be fetched again and | ||
48 | * the news will be shown to the user. | ||
49 | * | ||
50 | * @private | ||
51 | */ | ||
52 | _resetNewsRequest() { | ||
53 | this.latestNewsRequest.reset(); | ||
54 | } | ||
43 | } | 55 | } |
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js index ab64bf79c..d51192078 100644 --- a/src/stores/RecipesStore.js +++ b/src/stores/RecipesStore.js | |||
@@ -20,6 +20,11 @@ export default class RecipesStore extends Store { | |||
20 | // Register action handlers | 20 | // Register action handlers |
21 | this.actions.recipe.install.listen(this._install.bind(this)); | 21 | this.actions.recipe.install.listen(this._install.bind(this)); |
22 | this.actions.recipe.update.listen(this._update.bind(this)); | 22 | this.actions.recipe.update.listen(this._update.bind(this)); |
23 | |||
24 | // Reactions | ||
25 | this.registerReactions([ | ||
26 | this._checkIfRecipeIsInstalled.bind(this), | ||
27 | ]); | ||
23 | } | 28 | } |
24 | 29 | ||
25 | setup() { | 30 | setup() { |
@@ -99,4 +104,26 @@ export default class RecipesStore extends Store { | |||
99 | syncUpdate(0); | 104 | syncUpdate(0); |
100 | } | 105 | } |
101 | } | 106 | } |
107 | |||
108 | async _checkIfRecipeIsInstalled() { | ||
109 | const { router } = this.stores; | ||
110 | |||
111 | const match = matchRoute('/settings/services/add/:id', router.location.pathname); | ||
112 | if (match) { | ||
113 | const recipeId = match.id; | ||
114 | |||
115 | if (!this.stores.recipes.isInstalled(recipeId)) { | ||
116 | router.push('/settings/recipes'); | ||
117 | debug(`Recipe ${recipeId} is not installed, trying to install it`); | ||
118 | |||
119 | const recipe = await this.installRecipeRequest.execute(recipeId)._promise; | ||
120 | if (recipe) { | ||
121 | await this.allRecipesRequest.invalidate({ immediately: true })._promise; | ||
122 | router.push(`/settings/services/add/${recipeId}`); | ||
123 | } else { | ||
124 | router.push('/settings/recipes'); | ||
125 | } | ||
126 | } | ||
127 | } | ||
128 | } | ||
102 | } | 129 | } |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 13f929c2f..109ac5cd7 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -148,18 +148,7 @@ export default class ServicesStore extends Store { | |||
148 | } | 148 | } |
149 | 149 | ||
150 | async _showAddServiceInterface({ recipeId }) { | 150 | async _showAddServiceInterface({ recipeId }) { |
151 | const recipesStore = this.stores.recipes; | 151 | this.stores.router.push(`/settings/services/add/${recipeId}`); |
152 | |||
153 | if (recipesStore.isInstalled(recipeId)) { | ||
154 | debug(`Recipe ${recipeId} is installed`); | ||
155 | this._redirectToAddServiceRoute(recipeId); | ||
156 | } else { | ||
157 | debug(`Recipe ${recipeId} is not installed`); | ||
158 | // We access the RecipeStore action directly | ||
159 | // returns Promise instead of action | ||
160 | await this.stores.recipes._install({ recipeId }); | ||
161 | this._redirectToAddServiceRoute(recipeId); | ||
162 | } | ||
163 | } | 152 | } |
164 | 153 | ||
165 | // Actions | 154 | // Actions |
@@ -291,7 +280,8 @@ export default class ServicesStore extends Store { | |||
291 | gaEvent('Service', 'clear cache'); | 280 | gaEvent('Service', 'clear cache'); |
292 | } | 281 | } |
293 | 282 | ||
294 | @action _setActive({ serviceId }) { | 283 | @action _setActive({ serviceId, keepActiveRoute }) { |
284 | if (!keepActiveRoute) this.stores.router.push('/'); | ||
295 | const service = this.one(serviceId); | 285 | const service = this.one(serviceId); |
296 | 286 | ||
297 | this.all.forEach((s, index) => { | 287 | this.all.forEach((s, index) => { |
@@ -517,7 +507,16 @@ export default class ServicesStore extends Store { | |||
517 | this.actions.ui.toggleServiceUpdatedInfoBar({ visible: false }); | 507 | this.actions.ui.toggleServiceUpdatedInfoBar({ visible: false }); |
518 | } | 508 | } |
519 | 509 | ||
520 | @action _reorder({ oldIndex, newIndex }) { | 510 | @action _reorder(params) { |
511 | const { workspaces } = this.stores; | ||
512 | if (workspaces.isAnyWorkspaceActive) { | ||
513 | workspaces.reorderServicesOfActiveWorkspace(params); | ||
514 | } else { | ||
515 | this._reorderService(params); | ||
516 | } | ||
517 | } | ||
518 | |||
519 | @action _reorderService({ oldIndex, newIndex }) { | ||
521 | const showDisabledServices = this.stores.settings.all.app.showDisabledServices; | 520 | const showDisabledServices = this.stores.settings.all.app.showDisabledServices; |
522 | const oldEnabledSortIndex = showDisabledServices ? oldIndex : this.all.indexOf(this.enabled[oldIndex]); | 521 | const oldEnabledSortIndex = showDisabledServices ? oldIndex : this.all.indexOf(this.enabled[oldIndex]); |
523 | const newEnabledSortIndex = showDisabledServices ? newIndex : this.all.indexOf(this.enabled[newIndex]); | 522 | const newEnabledSortIndex = showDisabledServices ? newIndex : this.all.indexOf(this.enabled[newIndex]); |
@@ -680,11 +679,6 @@ export default class ServicesStore extends Store { | |||
680 | } | 679 | } |
681 | 680 | ||
682 | // Helper | 681 | // Helper |
683 | _redirectToAddServiceRoute(recipeId) { | ||
684 | const route = `/settings/services/add/${recipeId}`; | ||
685 | this.stores.router.push(route); | ||
686 | } | ||
687 | |||
688 | _initializeServiceRecipeInWebview(serviceId) { | 682 | _initializeServiceRecipeInWebview(serviceId) { |
689 | const service = this.one(serviceId); | 683 | const service = this.one(serviceId); |
690 | 684 | ||
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 31555dd5c..b5423af3b 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -329,8 +329,7 @@ export default class UserStore extends Store { | |||
329 | authToken, | 329 | authToken, |
330 | }); | 330 | }); |
331 | } catch (err) { | 331 | } catch (err) { |
332 | console.error('AccessToken Invalid'); | 332 | this._logout(); |
333 | |||
334 | return false; | 333 | return false; |
335 | } | 334 | } |
336 | } | 335 | } |
diff --git a/src/styles/layout.scss b/src/styles/layout.scss index e858b7904..9f226b61c 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss | |||
@@ -39,7 +39,7 @@ html { overflow: hidden; } | |||
39 | .app__content { display: flex; } | 39 | .app__content { display: flex; } |
40 | 40 | ||
41 | .app__service { | 41 | .app__service { |
42 | position: relative; | 42 | // position: relative; |
43 | display: flex; | 43 | display: flex; |
44 | flex: 1; | 44 | flex: 1; |
45 | flex-direction: column; | 45 | flex-direction: column; |
diff --git a/src/webview/recipe.js b/src/webview/recipe.js index 1e5d74b1f..c223b73de 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js | |||
@@ -127,6 +127,7 @@ class RecipeController { | |||
127 | } | 127 | } |
128 | 128 | ||
129 | serviceIdEcho(event) { | 129 | serviceIdEcho(event) { |
130 | debug('Received a service echo ping'); | ||
130 | event.sender.send('service-id', this.settings.service.id); | 131 | event.sender.send('service-id', this.settings.service.id); |
131 | } | 132 | } |
132 | 133 | ||
@@ -137,8 +138,6 @@ class RecipeController { | |||
137 | window.addEventListener('keyup', debounce((e) => { | 138 | window.addEventListener('keyup', debounce((e) => { |
138 | const element = e.target; | 139 | const element = e.target; |
139 | 140 | ||
140 | console.log(element); | ||
141 | |||
142 | if (!element) return; | 141 | if (!element) return; |
143 | 142 | ||
144 | let value = ''; | 143 | let value = ''; |