diff options
Diffstat (limited to 'src')
116 files changed, 9472 insertions, 1167 deletions
diff --git a/src/actions/service.js b/src/actions/service.js index 5d483b12a..ceaabc31e 100644 --- a/src/actions/service.js +++ b/src/actions/service.js | |||
@@ -1,4 +1,5 @@ | |||
1 | import PropTypes from 'prop-types'; | 1 | import PropTypes from 'prop-types'; |
2 | import ServiceModel from '../models/Service'; | ||
2 | 3 | ||
3 | export default { | 4 | export default { |
4 | setActive: { | 5 | setActive: { |
@@ -36,6 +37,9 @@ export default { | |||
36 | serviceId: PropTypes.string.isRequired, | 37 | serviceId: PropTypes.string.isRequired, |
37 | webview: PropTypes.object.isRequired, | 38 | webview: PropTypes.object.isRequired, |
38 | }, | 39 | }, |
40 | detachService: { | ||
41 | service: PropTypes.instanceOf(ServiceModel).isRequired, | ||
42 | }, | ||
39 | focusService: { | 43 | focusService: { |
40 | serviceId: PropTypes.string.isRequired, | 44 | serviceId: PropTypes.string.isRequired, |
41 | }, | 45 | }, |
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index bce792e56..593149e72 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -7,6 +7,7 @@ import { TitleBar } from 'electron-react-titlebar'; | |||
7 | import InfoBar from '../ui/InfoBar'; | 7 | import InfoBar from '../ui/InfoBar'; |
8 | import { Component as DelayApp } from '../../features/delayApp'; | 8 | import { Component as DelayApp } from '../../features/delayApp'; |
9 | import { Component as BasicAuth } from '../../features/basicAuth'; | 9 | import { Component as BasicAuth } from '../../features/basicAuth'; |
10 | import { Component as ShareFranz } from '../../features/shareFranz'; | ||
10 | import ErrorBoundary from '../util/ErrorBoundary'; | 11 | import ErrorBoundary from '../util/ErrorBoundary'; |
11 | 12 | ||
12 | // import globalMessages from '../../i18n/globalMessages'; | 13 | // import globalMessages from '../../i18n/globalMessages'; |
@@ -164,6 +165,7 @@ export default @observer class AppLayout extends Component { | |||
164 | )} | 165 | )} |
165 | {isDelayAppScreenVisible && (<DelayApp />)} | 166 | {isDelayAppScreenVisible && (<DelayApp />)} |
166 | <BasicAuth /> | 167 | <BasicAuth /> |
168 | <ShareFranz /> | ||
167 | {services} | 169 | {services} |
168 | </div> | 170 | </div> |
169 | </div> | 171 | </div> |
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js new file mode 100644 index 000000000..5afc54f9d --- /dev/null +++ b/src/components/services/content/ServiceView.js | |||
@@ -0,0 +1,136 @@ | |||
1 | import React, { Component, Fragment } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { autorun } from 'mobx'; | ||
4 | import { observer } from 'mobx-react'; | ||
5 | import classnames from 'classnames'; | ||
6 | |||
7 | import ServiceModel from '../../../models/Service'; | ||
8 | import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; | ||
9 | import WebviewLoader from '../../ui/WebviewLoader'; | ||
10 | import WebviewCrashHandler from './WebviewCrashHandler'; | ||
11 | import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler'; | ||
12 | import ServiceDisabled from './ServiceDisabled'; | ||
13 | import ServiceWebview from './ServiceWebview'; | ||
14 | |||
15 | export default @observer class ServiceView extends Component { | ||
16 | static propTypes = { | ||
17 | service: PropTypes.instanceOf(ServiceModel).isRequired, | ||
18 | setWebviewReference: PropTypes.func.isRequired, | ||
19 | detachService: PropTypes.func.isRequired, | ||
20 | reload: PropTypes.func.isRequired, | ||
21 | edit: PropTypes.func.isRequired, | ||
22 | enable: PropTypes.func.isRequired, | ||
23 | isActive: PropTypes.bool, | ||
24 | }; | ||
25 | |||
26 | static defaultProps = { | ||
27 | isActive: false, | ||
28 | }; | ||
29 | |||
30 | state = { | ||
31 | forceRepaint: false, | ||
32 | targetUrl: '', | ||
33 | statusBarVisible: false, | ||
34 | }; | ||
35 | |||
36 | autorunDisposer = null; | ||
37 | |||
38 | componentDidMount() { | ||
39 | this.autorunDisposer = autorun(() => { | ||
40 | if (this.props.service.isActive) { | ||
41 | this.setState({ forceRepaint: true }); | ||
42 | setTimeout(() => { | ||
43 | this.setState({ forceRepaint: false }); | ||
44 | }, 100); | ||
45 | } | ||
46 | }); | ||
47 | } | ||
48 | |||
49 | componentWillUnmount() { | ||
50 | this.autorunDisposer(); | ||
51 | } | ||
52 | |||
53 | updateTargetUrl = (event) => { | ||
54 | let visible = true; | ||
55 | if (event.url === '' || event.url === '#') { | ||
56 | visible = false; | ||
57 | } | ||
58 | this.setState({ | ||
59 | targetUrl: event.url, | ||
60 | statusBarVisible: visible, | ||
61 | }); | ||
62 | }; | ||
63 | |||
64 | render() { | ||
65 | const { | ||
66 | detachService, | ||
67 | service, | ||
68 | setWebviewReference, | ||
69 | reload, | ||
70 | edit, | ||
71 | enable, | ||
72 | } = this.props; | ||
73 | |||
74 | const webviewClasses = classnames({ | ||
75 | services__webview: true, | ||
76 | 'services__webview-wrapper': true, | ||
77 | 'is-active': service.isActive, | ||
78 | 'services__webview--force-repaint': this.state.forceRepaint, | ||
79 | }); | ||
80 | |||
81 | let statusBar = null; | ||
82 | if (this.state.statusBarVisible) { | ||
83 | statusBar = ( | ||
84 | <StatusBarTargetUrl text={this.state.targetUrl} /> | ||
85 | ); | ||
86 | } | ||
87 | |||
88 | return ( | ||
89 | <div className={webviewClasses}> | ||
90 | {service.isActive && service.isEnabled && ( | ||
91 | <Fragment> | ||
92 | {service.hasCrashed && ( | ||
93 | <WebviewCrashHandler | ||
94 | name={service.recipe.name} | ||
95 | webview={service.webview} | ||
96 | reload={reload} | ||
97 | /> | ||
98 | )} | ||
99 | {service.isEnabled && service.isLoading && service.isFirstLoad && ( | ||
100 | <WebviewLoader | ||
101 | loaded={false} | ||
102 | name={service.name} | ||
103 | /> | ||
104 | )} | ||
105 | {service.isError && ( | ||
106 | <WebviewErrorHandler | ||
107 | name={service.recipe.name} | ||
108 | errorMessage={service.errorMessage} | ||
109 | reload={reload} | ||
110 | edit={edit} | ||
111 | /> | ||
112 | )} | ||
113 | </Fragment> | ||
114 | )} | ||
115 | {!service.isEnabled ? ( | ||
116 | <Fragment> | ||
117 | {service.isActive && ( | ||
118 | <ServiceDisabled | ||
119 | name={service.recipe.name} | ||
120 | webview={service.webview} | ||
121 | enable={enable} | ||
122 | /> | ||
123 | )} | ||
124 | </Fragment> | ||
125 | ) : ( | ||
126 | <ServiceWebview | ||
127 | service={service} | ||
128 | setWebviewReference={setWebviewReference} | ||
129 | detachService={detachService} | ||
130 | /> | ||
131 | )} | ||
132 | {statusBar} | ||
133 | </div> | ||
134 | ); | ||
135 | } | ||
136 | } | ||
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js index bb577e4cc..7252c695f 100644 --- a/src/components/services/content/ServiceWebview.js +++ b/src/components/services/content/ServiceWebview.js | |||
@@ -1,145 +1,50 @@ | |||
1 | import React, { Component, Fragment } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { autorun } from 'mobx'; | ||
4 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
5 | import Webview from 'react-electron-web-view'; | 4 | import ElectronWebView from 'react-electron-web-view'; |
6 | import classnames from 'classnames'; | ||
7 | 5 | ||
8 | import ServiceModel from '../../../models/Service'; | 6 | import ServiceModel from '../../../models/Service'; |
9 | import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; | ||
10 | import WebviewLoader from '../../ui/WebviewLoader'; | ||
11 | import WebviewCrashHandler from './WebviewCrashHandler'; | ||
12 | import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler'; | ||
13 | import ServiceDisabled from './ServiceDisabled'; | ||
14 | 7 | ||
15 | export default @observer class ServiceWebview extends Component { | 8 | @observer |
9 | class ServiceWebview extends Component { | ||
16 | static propTypes = { | 10 | static propTypes = { |
17 | service: PropTypes.instanceOf(ServiceModel).isRequired, | 11 | service: PropTypes.instanceOf(ServiceModel).isRequired, |
18 | setWebviewReference: PropTypes.func.isRequired, | 12 | setWebviewReference: PropTypes.func.isRequired, |
19 | reload: PropTypes.func.isRequired, | 13 | detachService: PropTypes.func.isRequired, |
20 | edit: PropTypes.func.isRequired, | ||
21 | enable: PropTypes.func.isRequired, | ||
22 | isActive: PropTypes.bool, | ||
23 | }; | 14 | }; |
24 | 15 | ||
25 | static defaultProps = { | ||
26 | isActive: false, | ||
27 | }; | ||
28 | |||
29 | state = { | ||
30 | forceRepaint: false, | ||
31 | targetUrl: '', | ||
32 | statusBarVisible: false, | ||
33 | }; | ||
34 | |||
35 | autorunDisposer = null; | ||
36 | |||
37 | webview = null; | 16 | webview = null; |
38 | 17 | ||
39 | componentDidMount() { | ||
40 | this.autorunDisposer = autorun(() => { | ||
41 | if (this.props.service.isActive) { | ||
42 | this.setState({ forceRepaint: true }); | ||
43 | setTimeout(() => { | ||
44 | this.setState({ forceRepaint: false }); | ||
45 | }, 100); | ||
46 | } | ||
47 | }); | ||
48 | } | ||
49 | |||
50 | componentWillUnmount() { | 18 | componentWillUnmount() { |
51 | this.autorunDisposer(); | 19 | const { service, detachService } = this.props; |
52 | } | 20 | detachService({ service }); |
53 | |||
54 | updateTargetUrl = (event) => { | ||
55 | let visible = true; | ||
56 | if (event.url === '' || event.url === '#') { | ||
57 | visible = false; | ||
58 | } | ||
59 | this.setState({ | ||
60 | targetUrl: event.url, | ||
61 | statusBarVisible: visible, | ||
62 | }); | ||
63 | } | 21 | } |
64 | 22 | ||
65 | render() { | 23 | render() { |
66 | const { | 24 | const { |
67 | service, | 25 | service, |
68 | setWebviewReference, | 26 | setWebviewReference, |
69 | reload, | ||
70 | edit, | ||
71 | enable, | ||
72 | } = this.props; | 27 | } = this.props; |
73 | 28 | ||
74 | const webviewClasses = classnames({ | ||
75 | services__webview: true, | ||
76 | 'services__webview-wrapper': true, | ||
77 | 'is-active': service.isActive, | ||
78 | 'services__webview--force-repaint': this.state.forceRepaint, | ||
79 | }); | ||
80 | |||
81 | let statusBar = null; | ||
82 | if (this.state.statusBarVisible) { | ||
83 | statusBar = ( | ||
84 | <StatusBarTargetUrl text={this.state.targetUrl} /> | ||
85 | ); | ||
86 | } | ||
87 | |||
88 | return ( | 29 | return ( |
89 | <div className={webviewClasses}> | 30 | <ElectronWebView |
90 | {service.isActive && service.isEnabled && ( | 31 | ref={(webview) => { this.webview = webview; }} |
91 | <Fragment> | 32 | autosize |
92 | {service.hasCrashed && ( | 33 | src={service.url} |
93 | <WebviewCrashHandler | 34 | preload="./webview/recipe.js" |
94 | name={service.recipe.name} | 35 | partition={`persist:service-${service.id}`} |
95 | webview={service.webview} | 36 | onDidAttach={() => { |
96 | reload={reload} | 37 | setWebviewReference({ |
97 | /> | 38 | serviceId: service.id, |
98 | )} | 39 | webview: this.webview.view, |
99 | {service.isEnabled && service.isLoading && service.isFirstLoad && ( | 40 | }); |
100 | <WebviewLoader | 41 | }} |
101 | loaded={false} | 42 | onUpdateTargetUrl={this.updateTargetUrl} |
102 | name={service.name} | 43 | useragent={service.userAgent} |
103 | /> | 44 | allowpopups |
104 | )} | 45 | /> |
105 | {service.isError && ( | ||
106 | <WebviewErrorHandler | ||
107 | name={service.recipe.name} | ||
108 | errorMessage={service.errorMessage} | ||
109 | reload={reload} | ||
110 | edit={edit} | ||
111 | /> | ||
112 | )} | ||
113 | </Fragment> | ||
114 | )} | ||
115 | {!service.isEnabled ? ( | ||
116 | <Fragment> | ||
117 | {service.isActive && ( | ||
118 | <ServiceDisabled | ||
119 | name={service.recipe.name} | ||
120 | webview={service.webview} | ||
121 | enable={enable} | ||
122 | /> | ||
123 | )} | ||
124 | </Fragment> | ||
125 | ) : ( | ||
126 | <Webview | ||
127 | ref={(element) => { this.webview = element; }} | ||
128 | autosize | ||
129 | src={service.url} | ||
130 | preload="./webview/recipe.js" | ||
131 | partition={`persist:service-${service.id}`} | ||
132 | onDidAttach={() => setWebviewReference({ | ||
133 | serviceId: service.id, | ||
134 | webview: this.webview.view, | ||
135 | })} | ||
136 | onUpdateTargetUrl={this.updateTargetUrl} | ||
137 | useragent={service.userAgent} | ||
138 | allowpopups | ||
139 | /> | ||
140 | )} | ||
141 | {statusBar} | ||
142 | </div> | ||
143 | ); | 46 | ); |
144 | } | 47 | } |
145 | } | 48 | } |
49 | |||
50 | export default ServiceWebview; | ||
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js index 54f16ba12..8f8c38a11 100644 --- a/src/components/services/content/Services.js +++ b/src/components/services/content/Services.js | |||
@@ -4,7 +4,7 @@ import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; | |||
4 | import { Link } from 'react-router'; | 4 | import { Link } from 'react-router'; |
5 | import { defineMessages, intlShape } from 'react-intl'; | 5 | import { defineMessages, intlShape } from 'react-intl'; |
6 | 6 | ||
7 | import Webview from './ServiceWebview'; | 7 | import ServiceView from './ServiceView'; |
8 | import Appear from '../../ui/effects/Appear'; | 8 | import Appear from '../../ui/effects/Appear'; |
9 | 9 | ||
10 | const messages = defineMessages({ | 10 | const messages = defineMessages({ |
@@ -22,6 +22,7 @@ export default @observer class Services extends Component { | |||
22 | static propTypes = { | 22 | static propTypes = { |
23 | services: MobxPropTypes.arrayOrObservableArray, | 23 | services: MobxPropTypes.arrayOrObservableArray, |
24 | setWebviewReference: PropTypes.func.isRequired, | 24 | setWebviewReference: PropTypes.func.isRequired, |
25 | detachService: PropTypes.func.isRequired, | ||
25 | handleIPCMessage: PropTypes.func.isRequired, | 26 | handleIPCMessage: PropTypes.func.isRequired, |
26 | openWindow: PropTypes.func.isRequired, | 27 | openWindow: PropTypes.func.isRequired, |
27 | reload: PropTypes.func.isRequired, | 28 | reload: PropTypes.func.isRequired, |
@@ -42,6 +43,7 @@ export default @observer class Services extends Component { | |||
42 | services, | 43 | services, |
43 | handleIPCMessage, | 44 | handleIPCMessage, |
44 | setWebviewReference, | 45 | setWebviewReference, |
46 | detachService, | ||
45 | openWindow, | 47 | openWindow, |
46 | reload, | 48 | reload, |
47 | openSettings, | 49 | openSettings, |
@@ -71,11 +73,12 @@ export default @observer class Services extends Component { | |||
71 | </Appear> | 73 | </Appear> |
72 | )} | 74 | )} |
73 | {services.map(service => ( | 75 | {services.map(service => ( |
74 | <Webview | 76 | <ServiceView |
75 | key={service.id} | 77 | key={service.id} |
76 | service={service} | 78 | service={service} |
77 | handleIPCMessage={handleIPCMessage} | 79 | handleIPCMessage={handleIPCMessage} |
78 | setWebviewReference={setWebviewReference} | 80 | setWebviewReference={setWebviewReference} |
81 | detachService={detachService} | ||
79 | openWindow={openWindow} | 82 | openWindow={openWindow} |
80 | reload={() => reload({ serviceId: service.id })} | 83 | reload={() => reload({ serviceId: service.id })} |
81 | edit={() => openSettings({ path: `services/edit/${service.id}` })} | 84 | edit={() => openSettings({ path: `services/edit/${service.id}` })} |
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js index 42bc3c877..7a69dba87 100644 --- a/src/components/services/content/WebviewCrashHandler.js +++ b/src/components/services/content/WebviewCrashHandler.js | |||
@@ -2,6 +2,7 @@ import React, { Component } from 'react'; | |||
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import ms from 'ms'; | ||
5 | 6 | ||
6 | import Button from '../../ui/Button'; | 7 | import Button from '../../ui/Button'; |
7 | 8 | ||
@@ -35,12 +36,12 @@ export default @observer class WebviewCrashHandler extends Component { | |||
35 | }; | 36 | }; |
36 | 37 | ||
37 | state = { | 38 | state = { |
38 | countdown: 10000, | 39 | countdown: ms('10s'), |
39 | } | 40 | } |
40 | 41 | ||
41 | countdownInterval = null; | 42 | countdownInterval = null; |
42 | 43 | ||
43 | countdownIntervalTimeout = 1000; | 44 | countdownIntervalTimeout = ms('1s'); |
44 | 45 | ||
45 | 46 | ||
46 | componentDidMount() { | 47 | componentDidMount() { |
@@ -75,7 +76,7 @@ export default @observer class WebviewCrashHandler extends Component { | |||
75 | <p className="footnote"> | 76 | <p className="footnote"> |
76 | {intl.formatMessage(messages.autoReload, { | 77 | {intl.formatMessage(messages.autoReload, { |
77 | name, | 78 | name, |
78 | seconds: this.state.countdown / 1000, | 79 | seconds: this.state.countdown / ms('1s'), |
79 | })} | 80 | })} |
80 | </p> | 81 | </p> |
81 | </div> | 82 | </div> |
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 9c9543749..181b95c8c 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js | |||
@@ -44,10 +44,6 @@ const messages = defineMessages({ | |||
44 | id: 'settings.account.accountType.premium', | 44 | id: 'settings.account.accountType.premium', |
45 | defaultMessage: '!!!Premium Supporter Account', | 45 | defaultMessage: '!!!Premium Supporter Account', |
46 | }, | 46 | }, |
47 | accountTypeEnterprise: { | ||
48 | id: 'settings.account.accountType.enterprise', | ||
49 | defaultMessage: '!!!Enterprise Account', | ||
50 | }, | ||
51 | accountEditButton: { | 47 | accountEditButton: { |
52 | id: 'settings.account.account.editButton', | 48 | id: 'settings.account.account.editButton', |
53 | defaultMessage: '!!!Edit Account', | 49 | defaultMessage: '!!!Edit Account', |
@@ -169,15 +165,9 @@ export default @observer class AccountDashboard extends Component { | |||
169 | {user.organization && `${user.organization}, `} | 165 | {user.organization && `${user.organization}, `} |
170 | {user.email} | 166 | {user.email} |
171 | <br /> | 167 | <br /> |
172 | {!user.isEnterprise && !user.isPremium && ( | ||
173 | <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span> | ||
174 | )} | ||
175 | {user.isPremium && ( | 168 | {user.isPremium && ( |
176 | <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> | 169 | <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> |
177 | )} | 170 | )} |
178 | {user.isEnterprise && ( | ||
179 | <span className="badge badge--success">{intl.formatMessage(messages.accountTypeEnterprise)}</span> | ||
180 | )} | ||
181 | </div> | 171 | </div> |
182 | <Link to="/settings/user/edit" className="button"> | 172 | <Link to="/settings/user/edit" className="button"> |
183 | {intl.formatMessage(messages.accountEditButton)} | 173 | {intl.formatMessage(messages.accountEditButton)} |
@@ -235,34 +225,7 @@ export default @observer class AccountDashboard extends Component { | |||
235 | ) | 225 | ) |
236 | )} | 226 | )} |
237 | 227 | ||
238 | {user.isEnterprise && ( | 228 | {!user.isPremium && ( |
239 | <div className="account"> | ||
240 | <div className="account__box"> | ||
241 | <h2>{user.company.name}</h2> | ||
242 | <p> | ||
243 | Technical contact: | ||
244 | <Link | ||
245 | className="link" | ||
246 | target="_blank" | ||
247 | to={`mailto:${user.company.contact.technical}?subject=Franz`} | ||
248 | > | ||
249 | {user.company.contact.technical} | ||
250 | </Link> | ||
251 | <br /> | ||
252 | General contact: | ||
253 | <Link | ||
254 | className="link" | ||
255 | target="_blank" | ||
256 | to={`mailto:${user.company.contact.default}?subject=Franz`} | ||
257 | > | ||
258 | {user.company.contact.default} | ||
259 | </Link> | ||
260 | </p> | ||
261 | </div> | ||
262 | </div> | ||
263 | )} | ||
264 | |||
265 | {!user.isEnterprise && !user.isPremium && ( | ||
266 | isLoadingPlans ? ( | 229 | isLoadingPlans ? ( |
267 | <Loader /> | 230 | <Loader /> |
268 | ) : ( | 231 | ) : ( |
@@ -277,27 +240,25 @@ export default @observer class AccountDashboard extends Component { | |||
277 | ) | 240 | ) |
278 | )} | 241 | )} |
279 | 242 | ||
280 | {!user.isEnterprise && ( | 243 | <div className="account franz-form"> |
281 | <div className="account franz-form"> | 244 | <div className="account__box"> |
282 | <div className="account__box"> | 245 | <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> |
283 | <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> | 246 | {!isDeleteAccountSuccessful && ( |
284 | {!isDeleteAccountSuccessful && ( | 247 | <div className="account__subscription"> |
285 | <div className="account__subscription"> | 248 | <p>{intl.formatMessage(messages.deleteInfo)}</p> |
286 | <p>{intl.formatMessage(messages.deleteInfo)}</p> | 249 | <Button |
287 | <Button | 250 | label={intl.formatMessage(messages.deleteAccount)} |
288 | label={intl.formatMessage(messages.deleteAccount)} | 251 | buttonType="danger" |
289 | buttonType="danger" | 252 | onClick={() => deleteAccount()} |
290 | onClick={() => deleteAccount()} | 253 | loaded={!isLoadingDeleteAccount} |
291 | loaded={!isLoadingDeleteAccount} | 254 | /> |
292 | /> | ||
293 | </div> | ||
294 | )} | ||
295 | {isDeleteAccountSuccessful && ( | ||
296 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> | ||
297 | )} | ||
298 | </div> | 255 | </div> |
256 | )} | ||
257 | {isDeleteAccountSuccessful && ( | ||
258 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> | ||
259 | )} | ||
299 | </div> | 260 | </div> |
300 | )} | 261 | </div> |
301 | </Fragment> | 262 | </Fragment> |
302 | )} | 263 | )} |
303 | </div> | 264 | </div> |
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js index 0e3ac6b10..a1a353e57 100644 --- a/src/components/settings/user/EditUserForm.js +++ b/src/components/settings/user/EditUserForm.js | |||
@@ -3,11 +3,10 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; | 3 | import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import { Link } from 'react-router'; | 5 | import { Link } from 'react-router'; |
6 | 6 | import { Input } from '@meetfranz/forms'; | |
7 | // import { Link } from 'react-router'; | ||
8 | 7 | ||
9 | import Form from '../../../lib/Form'; | 8 | import Form from '../../../lib/Form'; |
10 | import Input from '../../ui/Input'; | 9 | // import Input from '../../ui/Input'; |
11 | import Button from '../../ui/Button'; | 10 | import Button from '../../ui/Button'; |
12 | import Radio from '../../ui/Radio'; | 11 | import Radio from '../../ui/Radio'; |
13 | import Infobox from '../../ui/Infobox'; | 12 | import Infobox from '../../ui/Infobox'; |
@@ -39,13 +38,12 @@ const messages = defineMessages({ | |||
39 | }, | 38 | }, |
40 | }); | 39 | }); |
41 | 40 | ||
42 | export default @observer class EditServiceForm extends Component { | 41 | export default @observer class EditUserForm extends Component { |
43 | static propTypes = { | 42 | static propTypes = { |
44 | status: MobxPropTypes.observableArray.isRequired, | 43 | status: MobxPropTypes.observableArray.isRequired, |
45 | form: PropTypes.instanceOf(Form).isRequired, | 44 | form: PropTypes.instanceOf(Form).isRequired, |
46 | onSubmit: PropTypes.func.isRequired, | 45 | onSubmit: PropTypes.func.isRequired, |
47 | isSaving: PropTypes.bool.isRequired, | 46 | isSaving: PropTypes.bool.isRequired, |
48 | isEnterprise: PropTypes.bool.isRequired, | ||
49 | }; | 47 | }; |
50 | 48 | ||
51 | static contextTypes = { | 49 | static contextTypes = { |
@@ -68,7 +66,6 @@ export default @observer class EditServiceForm extends Component { | |||
68 | // user, | 66 | // user, |
69 | status, | 67 | status, |
70 | form, | 68 | form, |
71 | isEnterprise, | ||
72 | isSaving, | 69 | isSaving, |
73 | } = this.props; | 70 | } = this.props; |
74 | const { intl } = this.context; | 71 | const { intl } = this.context; |
@@ -98,23 +95,21 @@ export default @observer class EditServiceForm extends Component { | |||
98 | )} | 95 | )} |
99 | <h2>{intl.formatMessage(messages.headlineAccount)}</h2> | 96 | <h2>{intl.formatMessage(messages.headlineAccount)}</h2> |
100 | <div className="grid__row"> | 97 | <div className="grid__row"> |
101 | <Input field={form.$('firstname')} focus /> | 98 | <Input {...form.$('firstname').bind()} focus /> |
102 | <Input field={form.$('lastname')} /> | 99 | <Input {...form.$('lastname').bind()} /> |
103 | </div> | 100 | </div> |
104 | <Input field={form.$('email')} /> | 101 | <Input {...form.$('email').bind()} /> |
105 | {!isEnterprise && ( | 102 | <Radio field={form.$('accountType')} /> |
106 | <Radio field={form.$('accountType')} /> | 103 | {form.$('accountType').value === 'company' && ( |
107 | )} | ||
108 | {!isEnterprise && form.$('accountType').value === 'company' && ( | ||
109 | <Input field={form.$('organization')} /> | 104 | <Input field={form.$('organization')} /> |
110 | )} | 105 | )} |
111 | <h2>{intl.formatMessage(messages.headlinePassword)}</h2> | 106 | <h2>{intl.formatMessage(messages.headlinePassword)}</h2> |
112 | <Input | 107 | <Input |
113 | field={form.$('oldPassword')} | 108 | {...form.$('oldPassword').bind()} |
114 | showPasswordToggle | 109 | showPasswordToggle |
115 | /> | 110 | /> |
116 | <Input | 111 | <Input |
117 | field={form.$('newPassword')} | 112 | {...form.$('newPassword').bind()} |
118 | showPasswordToggle | 113 | showPasswordToggle |
119 | scorePassword | 114 | scorePassword |
120 | /> | 115 | /> |
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js index 90da8ddc3..7a818d100 100644 --- a/src/components/subscription/SubscriptionForm.js +++ b/src/components/subscription/SubscriptionForm.js | |||
@@ -35,31 +35,29 @@ const messages = defineMessages({ | |||
35 | id: 'subscription.includedFeatures', | 35 | id: 'subscription.includedFeatures', |
36 | defaultMessage: '!!!The Franz Premium Supporter Account includes', | 36 | defaultMessage: '!!!The Franz Premium Supporter Account includes', |
37 | }, | 37 | }, |
38 | features: { | 38 | onpremise: { |
39 | onpremise: { | 39 | id: 'subscription.features.onpremise.mattermost', |
40 | id: 'subscription.features.onpremise.mattermost', | 40 | defaultMessage: '!!!Add on-premise/hosted services like Mattermost', |
41 | defaultMessage: '!!!Add on-premise/hosted services like Mattermost', | 41 | }, |
42 | }, | 42 | noInterruptions: { |
43 | noInterruptions: { | 43 | id: 'subscription.features.noInterruptions', |
44 | id: 'subscription.features.noInterruptions', | 44 | defaultMessage: '!!!No app delays & nagging to upgrade license', |
45 | defaultMessage: '!!!No app delays & nagging to upgrade license', | 45 | }, |
46 | }, | 46 | proxy: { |
47 | proxy: { | 47 | id: 'subscription.features.proxy', |
48 | id: 'subscription.features.proxy', | 48 | defaultMessage: '!!!Proxy support for services', |
49 | defaultMessage: '!!!Proxy support for services', | 49 | }, |
50 | }, | 50 | spellchecker: { |
51 | spellchecker: { | 51 | id: 'subscription.features.spellchecker', |
52 | id: 'subscription.features.spellchecker', | 52 | defaultMessage: '!!!Support for Spellchecker', |
53 | defaultMessage: '!!!Support for Spellchecker', | 53 | }, |
54 | }, | 54 | ads: { |
55 | ads: { | 55 | id: 'subscription.features.ads', |
56 | id: 'subscription.features.ads', | 56 | defaultMessage: '!!!No ads, ever!', |
57 | defaultMessage: '!!!No ads, ever!', | 57 | }, |
58 | }, | 58 | comingSoon: { |
59 | comingSoon: { | 59 | id: 'subscription.features.comingSoon', |
60 | id: 'subscription.features.comingSoon', | 60 | defaultMessage: '!!!coming soon', |
61 | defaultMessage: '!!!coming soon', | ||
62 | }, | ||
63 | }, | 61 | }, |
64 | euTaxInfo: { | 62 | euTaxInfo: { |
65 | id: 'subscription.euTaxInfo', | 63 | id: 'subscription.euTaxInfo', |
@@ -85,7 +83,7 @@ export default @observer class SubscriptionForm extends Component { | |||
85 | showSkipOption: false, | 83 | showSkipOption: false, |
86 | skipAction: () => null, | 84 | skipAction: () => null, |
87 | skipButtonLabel: '', | 85 | skipButtonLabel: '', |
88 | } | 86 | }; |
89 | 87 | ||
90 | static contextTypes = { | 88 | static contextTypes = { |
91 | intl: intlShape, | 89 | intl: intlShape, |
@@ -162,18 +160,18 @@ export default @observer class SubscriptionForm extends Component { | |||
162 | </p> | 160 | </p> |
163 | <div className="subscription"> | 161 | <div className="subscription"> |
164 | <ul className="subscription__premium-features"> | 162 | <ul className="subscription__premium-features"> |
165 | <li>{intl.formatMessage(messages.features.onpremise)}</li> | 163 | <li>{intl.formatMessage(messages.onpremise)}</li> |
166 | <li> | 164 | <li> |
167 | {intl.formatMessage(messages.features.noInterruptions)} | 165 | {intl.formatMessage(messages.noInterruptions)} |
168 | </li> | 166 | </li> |
169 | <li> | 167 | <li> |
170 | {intl.formatMessage(messages.features.spellchecker)} | 168 | {intl.formatMessage(messages.spellchecker)} |
171 | </li> | 169 | </li> |
172 | <li> | 170 | <li> |
173 | {intl.formatMessage(messages.features.proxy)} | 171 | {intl.formatMessage(messages.proxy)} |
174 | </li> | 172 | </li> |
175 | <li> | 173 | <li> |
176 | {intl.formatMessage(messages.features.ads)} | 174 | {intl.formatMessage(messages.ads)} |
177 | </li> | 175 | </li> |
178 | </ul> | 176 | </ul> |
179 | </div> | 177 | </div> |
diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js index b5d7c4b2d..0f6f0260f 100644 --- a/src/components/subscription/SubscriptionPopup.js +++ b/src/components/subscription/SubscriptionPopup.js | |||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import Webview from 'react-electron-web-view'; | 5 | import Webview from 'react-electron-web-view'; |
6 | import ms from 'ms'; | ||
6 | 7 | ||
7 | import Button from '../ui/Button'; | 8 | import Button from '../ui/Button'; |
8 | 9 | ||
@@ -42,7 +43,7 @@ export default @observer class SubscriptionPopup extends Component { | |||
42 | 43 | ||
43 | setTimeout(() => { | 44 | setTimeout(() => { |
44 | this.props.closeWindow(); | 45 | this.props.closeWindow(); |
45 | }, 4000); | 46 | }, ms('4s')); |
46 | } | 47 | } |
47 | 48 | ||
48 | render() { | 49 | render() { |
diff --git a/src/components/ui/Modal/index.js b/src/components/ui/Modal/index.js index d84e4c713..0b7154760 100644 --- a/src/components/ui/Modal/index.js +++ b/src/components/ui/Modal/index.js | |||
@@ -3,9 +3,12 @@ import ReactModal from 'react-modal'; | |||
3 | import PropTypes from 'prop-types'; | 3 | import PropTypes from 'prop-types'; |
4 | import classnames from 'classnames'; | 4 | import classnames from 'classnames'; |
5 | import injectCSS from 'react-jss'; | 5 | import injectCSS from 'react-jss'; |
6 | import { Icon } from '@meetfranz/ui'; | ||
6 | 7 | ||
7 | import styles from './styles'; | 8 | import styles from './styles'; |
8 | 9 | ||
10 | // ReactModal.setAppElement('#root'); | ||
11 | |||
9 | export default @injectCSS(styles) class Modal extends Component { | 12 | export default @injectCSS(styles) class Modal extends Component { |
10 | static propTypes = { | 13 | static propTypes = { |
11 | children: PropTypes.node.isRequired, | 14 | children: PropTypes.node.isRequired, |
@@ -14,11 +17,15 @@ export default @injectCSS(styles) class Modal extends Component { | |||
14 | isOpen: PropTypes.bool.isRequired, | 17 | isOpen: PropTypes.bool.isRequired, |
15 | portal: PropTypes.string, | 18 | portal: PropTypes.string, |
16 | close: PropTypes.func.isRequired, | 19 | close: PropTypes.func.isRequired, |
20 | shouldCloseOnOverlayClick: PropTypes.bool, | ||
21 | showClose: PropTypes.bool, | ||
17 | } | 22 | } |
18 | 23 | ||
19 | static defaultProps = { | 24 | static defaultProps = { |
20 | className: null, | 25 | className: null, |
21 | portal: 'modal-portal', | 26 | portal: 'modal-portal', |
27 | shouldCloseOnOverlayClick: false, | ||
28 | showClose: true, | ||
22 | } | 29 | } |
23 | 30 | ||
24 | render() { | 31 | render() { |
@@ -29,6 +36,8 @@ export default @injectCSS(styles) class Modal extends Component { | |||
29 | isOpen, | 36 | isOpen, |
30 | portal, | 37 | portal, |
31 | close, | 38 | close, |
39 | shouldCloseOnOverlayClick, | ||
40 | showClose, | ||
32 | } = this.props; | 41 | } = this.props; |
33 | 42 | ||
34 | return ( | 43 | return ( |
@@ -42,14 +51,17 @@ export default @injectCSS(styles) class Modal extends Component { | |||
42 | overlayClassName={classes.overlay} | 51 | overlayClassName={classes.overlay} |
43 | portal={portal} | 52 | portal={portal} |
44 | onRequestClose={close} | 53 | onRequestClose={close} |
54 | shouldCloseOnOverlayClick={shouldCloseOnOverlayClick} | ||
45 | > | 55 | > |
46 | {/* <button | 56 | {showClose && close && ( |
47 | type="button" | 57 | <button |
48 | className={classnames({ | 58 | type="button" |
49 | [`${classes.close}`]: true, | 59 | className={classes.close} |
50 | 'mdi mdi-close': true, | 60 | onClick={close} |
51 | })} | 61 | > |
52 | /> */} | 62 | <Icon icon="mdiClose" size={1.5} /> |
63 | </button> | ||
64 | )} | ||
53 | <div className={classes.content}> | 65 | <div className={classes.content}> |
54 | {children} | 66 | {children} |
55 | </div> | 67 | </div> |
diff --git a/src/components/ui/Modal/styles.js b/src/components/ui/Modal/styles.js index 56fecbf55..49b970c97 100644 --- a/src/components/ui/Modal/styles.js +++ b/src/components/ui/Modal/styles.js | |||
@@ -28,5 +28,6 @@ export default theme => ({ | |||
28 | position: 'absolute', | 28 | position: 'absolute', |
29 | top: 0, | 29 | top: 0, |
30 | right: 0, | 30 | right: 0, |
31 | padding: 20, | ||
31 | }, | 32 | }, |
32 | }); | 33 | }); |
diff --git a/src/config.js b/src/config.js index aecba45be..479572edb 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -1,15 +1,18 @@ | |||
1 | import electron from 'electron'; | 1 | import electron from 'electron'; |
2 | import path from 'path'; | 2 | import path from 'path'; |
3 | import isDevMode from 'electron-is-dev'; | ||
4 | import ms from 'ms'; | ||
5 | |||
3 | import { asarPath } from './helpers/asar-helpers'; | 6 | import { asarPath } from './helpers/asar-helpers'; |
4 | 7 | ||
5 | const app = process.type === 'renderer' ? electron.remote.app : electron.app; | 8 | const app = process.type === 'renderer' ? electron.remote.app : electron.app; |
6 | const systemPreferences = process.type === 'renderer' ? electron.remote.systemPreferences : electron.systemPreferences; | 9 | const systemPreferences = process.type === 'renderer' ? electron.remote.systemPreferences : electron.systemPreferences; |
7 | 10 | ||
8 | export const CHECK_INTERVAL = 1000 * 3600; // How often should we perform checks | 11 | export const CHECK_INTERVAL = ms('1h'); // How often should we perform checks |
9 | export const LOCAL_API = 'http://localhost:3000'; | 12 | export const LOCAL_API = 'http://localhost:3000'; |
10 | export const DEV_API = 'https://dev.franzinfra.com'; | 13 | export const DEV_API = 'https://dev.franzinfra.com'; |
11 | export const LIVE_API = 'https://api.franzinfra.com'; | 14 | export const LIVE_API = 'https://api.franzinfra.com'; |
12 | export const GA_ID = 'UA-74126766-10'; | 15 | export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; |
13 | 16 | ||
14 | export const DEFAULT_APP_SETTINGS = { | 17 | export const DEFAULT_APP_SETTINGS = { |
15 | autoLaunchInBackground: false, | 18 | autoLaunchInBackground: false, |
@@ -33,8 +36,8 @@ export const DEFAULT_FEATURES_CONFIG = { | |||
33 | isSpellcheckerPremiumFeature: false, | 36 | isSpellcheckerPremiumFeature: false, |
34 | needToWaitToProceed: false, | 37 | needToWaitToProceed: false, |
35 | needToWaitToProceedConfig: { | 38 | needToWaitToProceedConfig: { |
36 | delayOffset: 3600000, | 39 | delayOffset: ms('1h'), |
37 | wait: 10000, | 40 | wait: ms('10s'), |
38 | }, | 41 | }, |
39 | isServiceProxyEnabled: false, | 42 | isServiceProxyEnabled: false, |
40 | isServiceProxyPremiumFeature: true, | 43 | isServiceProxyPremiumFeature: true, |
@@ -59,3 +62,9 @@ export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); | |||
59 | 62 | ||
60 | // Replacing app.asar is not beautiful but unforunately necessary | 63 | // Replacing app.asar is not beautiful but unforunately necessary |
61 | export const DICTIONARY_PATH = asarPath(path.join(__dirname, 'dictionaries')); | 64 | export const DICTIONARY_PATH = asarPath(path.join(__dirname, 'dictionaries')); |
65 | |||
66 | export const ALLOWED_PROTOCOLS = [ | ||
67 | 'https:', | ||
68 | 'http:', | ||
69 | 'ftp:', | ||
70 | ]; | ||
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js index 762929dc6..e63f40c06 100644 --- a/src/containers/auth/AuthLayoutContainer.js +++ b/src/containers/auth/AuthLayoutContainer.js | |||
@@ -1,6 +1,8 @@ | |||
1 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import { ThemeProvider } from 'react-jss'; | ||
5 | import { theme } from '@meetfranz/theme'; | ||
4 | 6 | ||
5 | import AuthLayout from '../../components/auth/AuthLayout'; | 7 | import AuthLayout from '../../components/auth/AuthLayout'; |
6 | import AppStore from '../../stores/AppStore'; | 8 | import AppStore from '../../stores/AppStore'; |
@@ -21,30 +23,38 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer | |||
21 | const { | 23 | const { |
22 | stores, actions, children, location, | 24 | stores, actions, children, location, |
23 | } = this.props; | 25 | } = this.props; |
24 | const { app, features, globalError } = stores; | 26 | const { |
27 | app, features, globalError, settings, | ||
28 | } = stores; | ||
25 | 29 | ||
26 | const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting | 30 | const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting |
27 | && !features.defaultFeaturesRequest.wasExecuted; | 31 | && !features.defaultFeaturesRequest.wasExecuted; |
28 | 32 | ||
33 | const themeType = theme(settings.app.darkMode ? 'dark' : 'default'); | ||
34 | |||
29 | if (isLoadingBaseFeatures) { | 35 | if (isLoadingBaseFeatures) { |
30 | return ( | 36 | return ( |
31 | <AppLoader /> | 37 | <ThemeProvider theme={theme(themeType)}> |
38 | <AppLoader /> | ||
39 | </ThemeProvider> | ||
32 | ); | 40 | ); |
33 | } | 41 | } |
34 | 42 | ||
35 | return ( | 43 | return ( |
36 | <AuthLayout | 44 | <ThemeProvider theme={theme(themeType)}> |
37 | error={globalError.response} | 45 | <AuthLayout |
38 | pathname={location.pathname} | 46 | error={globalError.response} |
39 | isOnline={app.isOnline} | 47 | pathname={location.pathname} |
40 | isAPIHealthy={!app.healthCheckRequest.isError} | 48 | isOnline={app.isOnline} |
41 | retryHealthCheck={actions.app.healthCheck} | 49 | isAPIHealthy={!app.healthCheckRequest.isError} |
42 | isHealthCheckLoading={app.healthCheckRequest.isExecuting} | 50 | retryHealthCheck={actions.app.healthCheck} |
43 | isFullScreen={app.isFullScreen} | 51 | isHealthCheckLoading={app.healthCheckRequest.isExecuting} |
44 | darkMode={app.isSystemDarkModeEnabled} | 52 | isFullScreen={app.isFullScreen} |
45 | > | 53 | darkMode={app.isSystemDarkModeEnabled} |
46 | {children} | 54 | > |
47 | </AuthLayout> | 55 | {children} |
56 | </AuthLayout> | ||
57 | </ThemeProvider> | ||
48 | ); | 58 | ); |
49 | } | 59 | } |
50 | } | 60 | } |
diff --git a/src/containers/auth/ImportScreen.js b/src/containers/auth/ImportScreen.js index fc46f8b54..4a93891d6 100644 --- a/src/containers/auth/ImportScreen.js +++ b/src/containers/auth/ImportScreen.js | |||
@@ -3,13 +3,8 @@ import PropTypes from 'prop-types'; | |||
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import Import from '../../components/auth/Import'; | 4 | import Import from '../../components/auth/Import'; |
5 | import UserStore from '../../stores/UserStore'; | 5 | import UserStore from '../../stores/UserStore'; |
6 | import { gaPage } from '../../lib/analytics'; | ||
7 | 6 | ||
8 | export default @inject('stores', 'actions') @observer class ImportScreen extends Component { | 7 | export default @inject('stores', 'actions') @observer class ImportScreen extends Component { |
9 | componentDidMount() { | ||
10 | gaPage('Auth/Import'); | ||
11 | } | ||
12 | |||
13 | render() { | 8 | render() { |
14 | const { actions, stores } = this.props; | 9 | const { actions, stores } = this.props; |
15 | 10 | ||
diff --git a/src/containers/auth/InviteScreen.js b/src/containers/auth/InviteScreen.js index 26bf97038..66afaf7e1 100644 --- a/src/containers/auth/InviteScreen.js +++ b/src/containers/auth/InviteScreen.js | |||
@@ -2,13 +2,8 @@ import React, { Component } from 'react'; | |||
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import Invite from '../../components/auth/Invite'; | 4 | import Invite from '../../components/auth/Invite'; |
5 | import { gaPage } from '../../lib/analytics'; | ||
6 | 5 | ||
7 | export default @inject('stores', 'actions') @observer class InviteScreen extends Component { | 6 | export default @inject('stores', 'actions') @observer class InviteScreen extends Component { |
8 | componentDidMount() { | ||
9 | gaPage('Auth/Invite'); | ||
10 | } | ||
11 | |||
12 | render() { | 7 | render() { |
13 | const { actions } = this.props; | 8 | const { actions } = this.props; |
14 | 9 | ||
diff --git a/src/containers/auth/LoginScreen.js b/src/containers/auth/LoginScreen.js index 865bd38f8..e5ee10785 100644 --- a/src/containers/auth/LoginScreen.js +++ b/src/containers/auth/LoginScreen.js | |||
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; | |||
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import Login from '../../components/auth/Login'; | 4 | import Login from '../../components/auth/Login'; |
5 | import UserStore from '../../stores/UserStore'; | 5 | import UserStore from '../../stores/UserStore'; |
6 | import { gaPage } from '../../lib/analytics'; | ||
7 | 6 | ||
8 | import { globalError as globalErrorPropType } from '../../prop-types'; | 7 | import { globalError as globalErrorPropType } from '../../prop-types'; |
9 | 8 | ||
@@ -12,10 +11,6 @@ export default @inject('stores', 'actions') @observer class LoginScreen extends | |||
12 | error: globalErrorPropType.isRequired, | 11 | error: globalErrorPropType.isRequired, |
13 | }; | 12 | }; |
14 | 13 | ||
15 | componentDidMount() { | ||
16 | gaPage('Auth/Login'); | ||
17 | } | ||
18 | |||
19 | render() { | 14 | render() { |
20 | const { actions, stores, error } = this.props; | 15 | const { actions, stores, error } = this.props; |
21 | return ( | 16 | return ( |
diff --git a/src/containers/auth/PasswordScreen.js b/src/containers/auth/PasswordScreen.js index 236fd2031..5b238860e 100644 --- a/src/containers/auth/PasswordScreen.js +++ b/src/containers/auth/PasswordScreen.js | |||
@@ -3,13 +3,8 @@ import PropTypes from 'prop-types'; | |||
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import Password from '../../components/auth/Password'; | 4 | import Password from '../../components/auth/Password'; |
5 | import UserStore from '../../stores/UserStore'; | 5 | import UserStore from '../../stores/UserStore'; |
6 | import { gaPage } from '../../lib/analytics'; | ||
7 | 6 | ||
8 | export default @inject('stores', 'actions') @observer class PasswordScreen extends Component { | 7 | export default @inject('stores', 'actions') @observer class PasswordScreen extends Component { |
9 | componentDidMount() { | ||
10 | gaPage('Auth/Password Retrieve'); | ||
11 | } | ||
12 | |||
13 | render() { | 8 | render() { |
14 | const { actions, stores } = this.props; | 9 | const { actions, stores } = this.props; |
15 | 10 | ||
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index 34b512e15..8d179a170 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js | |||
@@ -6,7 +6,6 @@ import { RouterStore } from 'mobx-react-router'; | |||
6 | import Pricing from '../../components/auth/Pricing'; | 6 | import Pricing from '../../components/auth/Pricing'; |
7 | import UserStore from '../../stores/UserStore'; | 7 | import UserStore from '../../stores/UserStore'; |
8 | import PaymentStore from '../../stores/PaymentStore'; | 8 | import PaymentStore from '../../stores/PaymentStore'; |
9 | import { gaPage } from '../../lib/analytics'; | ||
10 | 9 | ||
11 | import { globalError as globalErrorPropType } from '../../prop-types'; | 10 | import { globalError as globalErrorPropType } from '../../prop-types'; |
12 | 11 | ||
@@ -15,10 +14,6 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend | |||
15 | error: globalErrorPropType.isRequired, | 14 | error: globalErrorPropType.isRequired, |
16 | }; | 15 | }; |
17 | 16 | ||
18 | componentDidMount() { | ||
19 | gaPage('Auth/Pricing'); | ||
20 | } | ||
21 | |||
22 | render() { | 17 | render() { |
23 | const { actions, stores, error } = this.props; | 18 | const { actions, stores, error } = this.props; |
24 | 19 | ||
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js index caf75de90..efc7ea4c1 100644 --- a/src/containers/auth/SignupScreen.js +++ b/src/containers/auth/SignupScreen.js | |||
@@ -4,7 +4,6 @@ import { inject, observer } from 'mobx-react'; | |||
4 | 4 | ||
5 | import Signup from '../../components/auth/Signup'; | 5 | import Signup from '../../components/auth/Signup'; |
6 | import UserStore from '../../stores/UserStore'; | 6 | import UserStore from '../../stores/UserStore'; |
7 | import { gaPage } from '../../lib/analytics'; | ||
8 | 7 | ||
9 | import { globalError as globalErrorPropType } from '../../prop-types'; | 8 | import { globalError as globalErrorPropType } from '../../prop-types'; |
10 | 9 | ||
@@ -13,10 +12,6 @@ export default @inject('stores', 'actions') @observer class SignupScreen extends | |||
13 | error: globalErrorPropType.isRequired, | 12 | error: globalErrorPropType.isRequired, |
14 | }; | 13 | }; |
15 | 14 | ||
16 | componentDidMount() { | ||
17 | gaPage('Auth/Signup'); | ||
18 | } | ||
19 | |||
20 | render() { | 15 | render() { |
21 | const { actions, stores, error } = this.props; | 16 | const { actions, stores, error } = this.props; |
22 | return ( | 17 | return ( |
diff --git a/src/containers/auth/WelcomeScreen.js b/src/containers/auth/WelcomeScreen.js index 2c120f81c..75182345a 100644 --- a/src/containers/auth/WelcomeScreen.js +++ b/src/containers/auth/WelcomeScreen.js | |||
@@ -5,13 +5,8 @@ import { inject, observer } from 'mobx-react'; | |||
5 | import Welcome from '../../components/auth/Welcome'; | 5 | import Welcome from '../../components/auth/Welcome'; |
6 | import UserStore from '../../stores/UserStore'; | 6 | import UserStore from '../../stores/UserStore'; |
7 | import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; | 7 | import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; |
8 | import { gaPage } from '../../lib/analytics'; | ||
9 | 8 | ||
10 | export default @inject('stores', 'actions') @observer class LoginScreen extends Component { | 9 | export default @inject('stores', 'actions') @observer class LoginScreen extends Component { |
11 | componentDidMount() { | ||
12 | gaPage('Auth/Welcome'); | ||
13 | } | ||
14 | |||
15 | render() { | 10 | render() { |
16 | const { user, recipePreviews } = this.props.stores; | 11 | const { user, recipePreviews } = this.props.stores; |
17 | 12 | ||
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index 749912c59..5a05ce431 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js | |||
@@ -42,6 +42,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
42 | setActive, | 42 | setActive, |
43 | handleIPCMessage, | 43 | handleIPCMessage, |
44 | setWebviewReference, | 44 | setWebviewReference, |
45 | detachService, | ||
45 | openWindow, | 46 | openWindow, |
46 | reorder, | 47 | reorder, |
47 | reload, | 48 | reload, |
@@ -105,6 +106,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
105 | services={services.allDisplayedUnordered} | 106 | services={services.allDisplayedUnordered} |
106 | handleIPCMessage={handleIPCMessage} | 107 | handleIPCMessage={handleIPCMessage} |
107 | setWebviewReference={setWebviewReference} | 108 | setWebviewReference={setWebviewReference} |
109 | detachService={detachService} | ||
108 | openWindow={openWindow} | 110 | openWindow={openWindow} |
109 | reload={reload} | 111 | reload={reload} |
110 | openSettings={openSettings} | 112 | openSettings={openSettings} |
@@ -160,6 +162,7 @@ AppLayoutContainer.wrappedComponent.propTypes = { | |||
160 | toggleAudio: PropTypes.func.isRequired, | 162 | toggleAudio: PropTypes.func.isRequired, |
161 | handleIPCMessage: PropTypes.func.isRequired, | 163 | handleIPCMessage: PropTypes.func.isRequired, |
162 | setWebviewReference: PropTypes.func.isRequired, | 164 | setWebviewReference: PropTypes.func.isRequired, |
165 | detachService: PropTypes.func.isRequired, | ||
163 | openWindow: PropTypes.func.isRequired, | 166 | openWindow: PropTypes.func.isRequired, |
164 | reloadUpdatedServices: PropTypes.func.isRequired, | 167 | reloadUpdatedServices: PropTypes.func.isRequired, |
165 | updateService: PropTypes.func.isRequired, | 168 | updateService: PropTypes.func.isRequired, |
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index d681d5226..ce1b9c333 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -6,7 +6,6 @@ import { inject, observer } from 'mobx-react'; | |||
6 | import PaymentStore from '../../stores/PaymentStore'; | 6 | import PaymentStore from '../../stores/PaymentStore'; |
7 | import UserStore from '../../stores/UserStore'; | 7 | import UserStore from '../../stores/UserStore'; |
8 | import AppStore from '../../stores/AppStore'; | 8 | import AppStore from '../../stores/AppStore'; |
9 | import { gaPage } from '../../lib/analytics'; | ||
10 | 9 | ||
11 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; | 10 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; |
12 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 11 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
@@ -22,10 +21,6 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
22 | user.getUserInfoRequest.invalidate({ immediately: true }); | 21 | user.getUserInfoRequest.invalidate({ immediately: true }); |
23 | } | 22 | } |
24 | 23 | ||
25 | componentDidMount() { | ||
26 | gaPage('Settings/Account Dashboard'); | ||
27 | } | ||
28 | |||
29 | onCloseWindow() { | 24 | onCloseWindow() { |
30 | const { user, payment } = this.props.stores; | 25 | const { user, payment } = this.props.stores; |
31 | user.getUserInfoRequest.invalidate({ immediately: true }); | 26 | user.getUserInfoRequest.invalidate({ immediately: true }); |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index d08f0a52e..870ca4ecd 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -9,7 +9,6 @@ import ServicesStore from '../../stores/ServicesStore'; | |||
9 | import SettingsStore from '../../stores/SettingsStore'; | 9 | import SettingsStore from '../../stores/SettingsStore'; |
10 | import FeaturesStore from '../../stores/FeaturesStore'; | 10 | import FeaturesStore from '../../stores/FeaturesStore'; |
11 | import Form from '../../lib/Form'; | 11 | import Form from '../../lib/Form'; |
12 | import { gaPage } from '../../lib/analytics'; | ||
13 | 12 | ||
14 | import ServiceError from '../../components/settings/services/ServiceError'; | 13 | import ServiceError from '../../components/settings/services/ServiceError'; |
15 | import EditServiceForm from '../../components/settings/services/EditServiceForm'; | 14 | import EditServiceForm from '../../components/settings/services/EditServiceForm'; |
@@ -93,10 +92,6 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
93 | intl: intlShape, | 92 | intl: intlShape, |
94 | }; | 93 | }; |
95 | 94 | ||
96 | componentDidMount() { | ||
97 | gaPage('Settings/Service/Edit'); | ||
98 | } | ||
99 | |||
100 | onSubmit(data) { | 95 | onSubmit(data) { |
101 | const { action } = this.props.router.params; | 96 | const { action } = this.props.router.params; |
102 | const { recipes, services } = this.props.stores; | 97 | const { recipes, services } = this.props.stores; |
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 992c49b09..97c1fa3b1 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -8,7 +8,6 @@ import SettingsStore from '../../stores/SettingsStore'; | |||
8 | import UserStore from '../../stores/UserStore'; | 8 | import UserStore from '../../stores/UserStore'; |
9 | import Form from '../../lib/Form'; | 9 | import Form from '../../lib/Form'; |
10 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; | 10 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
11 | import { gaPage } from '../../lib/analytics'; | ||
12 | import { DEFAULT_APP_SETTINGS } from '../../config'; | 11 | import { DEFAULT_APP_SETTINGS } from '../../config'; |
13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; | 12 | import { config as spellcheckerConfig } from '../../features/spellchecker'; |
14 | 13 | ||
@@ -75,10 +74,6 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
75 | intl: intlShape, | 74 | intl: intlShape, |
76 | }; | 75 | }; |
77 | 76 | ||
78 | componentDidMount() { | ||
79 | gaPage('Settings/App'); | ||
80 | } | ||
81 | |||
82 | onSubmit(settingsData) { | 77 | onSubmit(settingsData) { |
83 | const { app, settings, user } = this.props.actions; | 78 | const { app, settings, user } = this.props.actions; |
84 | 79 | ||
diff --git a/src/containers/settings/EditUserScreen.js b/src/containers/settings/EditUserScreen.js index 3d35effc5..81f689400 100644 --- a/src/containers/settings/EditUserScreen.js +++ b/src/containers/settings/EditUserScreen.js | |||
@@ -9,7 +9,6 @@ import EditUserForm from '../../components/settings/user/EditUserForm'; | |||
9 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 9 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
10 | 10 | ||
11 | import { required, email, minLength } from '../../helpers/validation-helpers'; | 11 | import { required, email, minLength } from '../../helpers/validation-helpers'; |
12 | import { gaPage } from '../../lib/analytics'; | ||
13 | 12 | ||
14 | const messages = defineMessages({ | 13 | const messages = defineMessages({ |
15 | firstname: { | 14 | firstname: { |
@@ -24,23 +23,21 @@ const messages = defineMessages({ | |||
24 | id: 'settings.user.form.email', | 23 | id: 'settings.user.form.email', |
25 | defaultMessage: '!!!Email', | 24 | defaultMessage: '!!!Email', |
26 | }, | 25 | }, |
27 | accountType: { | 26 | accountTypeLabel: { |
28 | label: { | 27 | id: 'settings.user.form.accountType.label', |
29 | id: 'settings.user.form.accountType.label', | 28 | defaultMessage: '!!!Account type', |
30 | defaultMessage: '!!!Account type', | 29 | }, |
31 | }, | 30 | accountTypeIndividual: { |
32 | individual: { | 31 | id: 'settings.user.form.accountType.individual', |
33 | id: 'settings.user.form.accountType.individual', | 32 | defaultMessage: '!!!Individual', |
34 | defaultMessage: '!!!Individual', | 33 | }, |
35 | }, | 34 | accountTypeNonProfit: { |
36 | nonProfit: { | 35 | id: 'settings.user.form.accountType.non-profit', |
37 | id: 'settings.user.form.accountType.non-profit', | 36 | defaultMessage: '!!!Non-Profit', |
38 | defaultMessage: '!!!Non-Profit', | 37 | }, |
39 | }, | 38 | accountTypeCompany: { |
40 | company: { | 39 | id: 'settings.user.form.accountType.company', |
41 | id: 'settings.user.form.accountType.company', | 40 | defaultMessage: '!!!Company', |
42 | defaultMessage: '!!!Company', | ||
43 | }, | ||
44 | }, | 41 | }, |
45 | currentPassword: { | 42 | currentPassword: { |
46 | id: 'settings.user.form.currentPassword', | 43 | id: 'settings.user.form.currentPassword', |
@@ -57,10 +54,6 @@ export default @inject('stores', 'actions') @observer class EditUserScreen exten | |||
57 | intl: intlShape, | 54 | intl: intlShape, |
58 | }; | 55 | }; |
59 | 56 | ||
60 | componentDidMount() { | ||
61 | gaPage('Settings/Account/Edit'); | ||
62 | } | ||
63 | |||
64 | componentWillUnmount() { | 57 | componentWillUnmount() { |
65 | this.props.actions.user.resetStatus(); | 58 | this.props.actions.user.resetStatus(); |
66 | } | 59 | } |
@@ -99,21 +92,21 @@ export default @inject('stores', 'actions') @observer class EditUserScreen exten | |||
99 | accountType: { | 92 | accountType: { |
100 | value: user.accountType, | 93 | value: user.accountType, |
101 | validators: [required], | 94 | validators: [required], |
102 | label: intl.formatMessage(messages.accountType.label), | 95 | label: intl.formatMessage(messages.accountTypeLabel), |
103 | options: [{ | 96 | options: [{ |
104 | value: 'individual', | 97 | value: 'individual', |
105 | label: intl.formatMessage(messages.accountType.individual), | 98 | label: intl.formatMessage(messages.accountTypeIndividual), |
106 | }, { | 99 | }, { |
107 | value: 'non-profit', | 100 | value: 'non-profit', |
108 | label: intl.formatMessage(messages.accountType.nonProfit), | 101 | label: intl.formatMessage(messages.accountTypeNonProfit), |
109 | }, { | 102 | }, { |
110 | value: 'company', | 103 | value: 'company', |
111 | label: intl.formatMessage(messages.accountType.company), | 104 | label: intl.formatMessage(messages.accountTypeCompany), |
112 | }], | 105 | }], |
113 | }, | 106 | }, |
114 | organization: { | 107 | organization: { |
115 | label: intl.formatMessage(messages.accountType.company), | 108 | label: intl.formatMessage(messages.accountTypeCompany), |
116 | placeholder: intl.formatMessage(messages.accountType.company), | 109 | placeholder: intl.formatMessage(messages.accountTypeCompany), |
117 | value: user.organization, | 110 | value: user.organization, |
118 | }, | 111 | }, |
119 | oldPassword: { | 112 | oldPassword: { |
diff --git a/src/containers/settings/InviteScreen.js b/src/containers/settings/InviteScreen.js index cd36610e4..cc36849e8 100644 --- a/src/containers/settings/InviteScreen.js +++ b/src/containers/settings/InviteScreen.js | |||
@@ -5,13 +5,7 @@ import { inject, observer } from 'mobx-react'; | |||
5 | import Invite from '../../components/auth/Invite'; | 5 | import Invite from '../../components/auth/Invite'; |
6 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 6 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
7 | 7 | ||
8 | import { gaPage } from '../../lib/analytics'; | ||
9 | |||
10 | export default @inject('stores', 'actions') @observer class InviteScreen extends Component { | 8 | export default @inject('stores', 'actions') @observer class InviteScreen extends Component { |
11 | componentDidMount() { | ||
12 | gaPage('Settings/Invite'); | ||
13 | } | ||
14 | |||
15 | componentWillUnmount() { | 9 | componentWillUnmount() { |
16 | this.props.stores.user.inviteRequest.reset(); | 10 | this.props.stores.user.inviteRequest.reset(); |
17 | } | 11 | } |
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js index b3d758c87..eda5ae54c 100644 --- a/src/containers/settings/RecipesScreen.js +++ b/src/containers/settings/RecipesScreen.js | |||
@@ -7,7 +7,6 @@ import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; | |||
7 | import RecipeStore from '../../stores/RecipesStore'; | 7 | import RecipeStore from '../../stores/RecipesStore'; |
8 | import ServiceStore from '../../stores/ServicesStore'; | 8 | import ServiceStore from '../../stores/ServicesStore'; |
9 | import UserStore from '../../stores/UserStore'; | 9 | import UserStore from '../../stores/UserStore'; |
10 | import { gaPage } from '../../lib/analytics'; | ||
11 | 10 | ||
12 | import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; | 11 | import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; |
13 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 12 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
@@ -33,20 +32,15 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend | |||
33 | autorunDisposer = null; | 32 | autorunDisposer = null; |
34 | 33 | ||
35 | componentDidMount() { | 34 | componentDidMount() { |
36 | gaPage('Settings/Recipe Dashboard/Featured'); | ||
37 | |||
38 | this.autorunDisposer = autorun(() => { | 35 | this.autorunDisposer = autorun(() => { |
39 | const { filter } = this.props.params; | 36 | const { filter } = this.props.params; |
40 | const { currentFilter } = this.state; | 37 | const { currentFilter } = this.state; |
41 | 38 | ||
42 | if (filter === 'all' && currentFilter !== 'all') { | 39 | if (filter === 'all' && currentFilter !== 'all') { |
43 | gaPage('Settings/Recipe Dashboard/All'); | ||
44 | this.setState({ currentFilter: 'all' }); | 40 | this.setState({ currentFilter: 'all' }); |
45 | } else if (filter === 'featured' && currentFilter !== 'featured') { | 41 | } else if (filter === 'featured' && currentFilter !== 'featured') { |
46 | gaPage('Settings/Recipe Dashboard/Featured'); | ||
47 | this.setState({ currentFilter: 'featured' }); | 42 | this.setState({ currentFilter: 'featured' }); |
48 | } else if (filter === 'dev' && currentFilter !== 'dev') { | 43 | } else if (filter === 'dev' && currentFilter !== 'dev') { |
49 | gaPage('Settings/Recipe Dashboard/Dev'); | ||
50 | this.setState({ currentFilter: 'dev' }); | 44 | this.setState({ currentFilter: 'dev' }); |
51 | } | 45 | } |
52 | }); | 46 | }); |
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js index b70a5506e..a501bf530 100644 --- a/src/containers/settings/ServicesScreen.js +++ b/src/containers/settings/ServicesScreen.js | |||
@@ -6,16 +6,11 @@ import { RouterStore } from 'mobx-react-router'; | |||
6 | // import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; | 6 | // import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; |
7 | import UserStore from '../../stores/UserStore'; | 7 | import UserStore from '../../stores/UserStore'; |
8 | import ServiceStore from '../../stores/ServicesStore'; | 8 | import ServiceStore from '../../stores/ServicesStore'; |
9 | import { gaPage } from '../../lib/analytics'; | ||
10 | 9 | ||
11 | import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; | 10 | import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; |
12 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 11 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
13 | 12 | ||
14 | export default @inject('stores', 'actions') @observer class ServicesScreen extends Component { | 13 | export default @inject('stores', 'actions') @observer class ServicesScreen extends Component { |
15 | componentDidMount() { | ||
16 | gaPage('Settings/Service Dashboard'); | ||
17 | } | ||
18 | |||
19 | componentWillUnmount() { | 14 | componentWillUnmount() { |
20 | this.props.actions.service.resetFilter(); | 15 | this.props.actions.service.resetFilter(); |
21 | this.props.actions.service.resetStatus(); | 16 | this.props.actions.service.resetStatus(); |
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index 3eb7b6255..cb67ee7f2 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js | |||
@@ -43,26 +43,31 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre | |||
43 | }); | 43 | }); |
44 | 44 | ||
45 | const hostedPage = await stores.payment.createHostedPageRequest; | 45 | const hostedPage = await stores.payment.createHostedPageRequest; |
46 | const url = `file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`; | ||
47 | 46 | ||
48 | if (hostedPage.url) { | 47 | if (hostedPage.url) { |
49 | const paymentWindow = new BrowserWindow({ | 48 | if (hostedPage.legacyCheckoutFlow) { |
50 | parent: remote.getCurrentWindow(), | 49 | const paymentWindow = new BrowserWindow({ |
51 | modal: true, | 50 | parent: remote.getCurrentWindow(), |
52 | title: '🔒 Franz Supporter License', | 51 | modal: true, |
53 | width: 600, | 52 | title: '🔒 Franz Supporter License', |
54 | height: window.innerHeight - 100, | 53 | width: 600, |
55 | maxWidth: 600, | 54 | height: window.innerHeight - 100, |
56 | minWidth: 600, | 55 | maxWidth: 600, |
57 | webPreferences: { | 56 | minWidth: 600, |
58 | nodeIntegration: true, | 57 | webPreferences: { |
59 | }, | 58 | nodeIntegration: true, |
60 | }); | 59 | }, |
61 | paymentWindow.loadURL(url); | 60 | }); |
61 | paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`); | ||
62 | 62 | ||
63 | paymentWindow.on('closed', () => { | 63 | paymentWindow.on('closed', () => { |
64 | onCloseWindow(); | 64 | onCloseWindow(); |
65 | }); | 65 | }); |
66 | } else { | ||
67 | actions.app.openExternalUrl({ | ||
68 | url: hostedPage.url, | ||
69 | }); | ||
70 | } | ||
66 | } | 71 | } |
67 | } | 72 | } |
68 | 73 | ||
diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js index 83dd83712..74b718734 100644 --- a/src/electron/ipc-api/autoUpdate.js +++ b/src/electron/ipc-api/autoUpdate.js | |||
@@ -4,7 +4,7 @@ import { autoUpdater } from 'electron-updater'; | |||
4 | const debug = require('debug')('Franz:ipcApi:autoUpdate'); | 4 | const debug = require('debug')('Franz:ipcApi:autoUpdate'); |
5 | 5 | ||
6 | export default (params) => { | 6 | export default (params) => { |
7 | if (process.platform === 'darwin' || process.platform === 'win32') { | 7 | if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { |
8 | ipcMain.on('autoUpdate', (event, args) => { | 8 | ipcMain.on('autoUpdate', (event, args) => { |
9 | try { | 9 | try { |
10 | autoUpdater.autoInstallOnAppQuit = false; | 10 | autoUpdater.autoInstallOnAppQuit = false; |
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js index 13395fb40..a8252acb7 100644 --- a/src/features/basicAuth/Component.js +++ b/src/features/basicAuth/Component.js | |||
@@ -62,6 +62,7 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo | |||
62 | isOpen={isModalVisible} | 62 | isOpen={isModalVisible} |
63 | className={classes.modal} | 63 | className={classes.modal} |
64 | close={this.cancel.bind(this)} | 64 | close={this.cancel.bind(this)} |
65 | showClose={false} | ||
65 | > | 66 | > |
66 | <h1>Sign in</h1> | 67 | <h1>Sign in</h1> |
67 | <p> | 68 | <p> |
diff --git a/src/features/basicAuth/index.js b/src/features/basicAuth/index.js index 03269582c..89607824b 100644 --- a/src/features/basicAuth/index.js +++ b/src/features/basicAuth/index.js | |||
@@ -6,7 +6,7 @@ import BasicAuthComponent from './Component'; | |||
6 | const debug = require('debug')('Franz:feature:basicAuth'); | 6 | const debug = require('debug')('Franz:feature:basicAuth'); |
7 | 7 | ||
8 | const defaultState = { | 8 | const defaultState = { |
9 | isModalVisible: false, | 9 | isModalVisible: true, |
10 | service: null, | 10 | service: null, |
11 | authInfo: null, | 11 | authInfo: null, |
12 | }; | 12 | }; |
@@ -15,7 +15,6 @@ export const state = observable(defaultState); | |||
15 | 15 | ||
16 | export function resetState() { | 16 | export function resetState() { |
17 | Object.assign(state, defaultState); | 17 | Object.assign(state, defaultState); |
18 | console.log('reset state', state); | ||
19 | } | 18 | } |
20 | 19 | ||
21 | export default function initialize() { | 20 | export default function initialize() { |
@@ -31,15 +30,6 @@ export default function initialize() { | |||
31 | state.authInfo = data.authInfo; | 30 | state.authInfo = data.authInfo; |
32 | state.isModalVisible = true; | 31 | state.isModalVisible = true; |
33 | }); | 32 | }); |
34 | |||
35 | // autorun(() => { | ||
36 | // // if (state.serviceId) { | ||
37 | // // const service = stores.services.one(state.serviceId); | ||
38 | // // if (service) { | ||
39 | // // state.service = service; | ||
40 | // // } | ||
41 | // // } | ||
42 | // }); | ||
43 | } | 33 | } |
44 | 34 | ||
45 | export function mainIpcHandler(mainWindow, authInfo) { | 35 | export function mainIpcHandler(mainWindow, authInfo) { |
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index 28aa50eb2..abc8274cf 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js | |||
@@ -3,7 +3,7 @@ import moment from 'moment'; | |||
3 | import DelayAppComponent from './Component'; | 3 | import DelayAppComponent from './Component'; |
4 | 4 | ||
5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; | 5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; |
6 | import { gaEvent } from '../../lib/analytics'; | 6 | import { gaEvent, gaPage } from '../../lib/analytics'; |
7 | 7 | ||
8 | const debug = require('debug')('Franz:feature:delayApp'); | 8 | const debug = require('debug')('Franz:feature:delayApp'); |
9 | 9 | ||
@@ -28,8 +28,12 @@ export default function init(stores) { | |||
28 | let shownAfterLaunch = false; | 28 | let shownAfterLaunch = false; |
29 | let timeLastDelay = moment(); | 29 | let timeLastDelay = moment(); |
30 | 30 | ||
31 | window.franz.features.delayApp = { | ||
32 | state, | ||
33 | }; | ||
34 | |||
31 | reaction( | 35 | reaction( |
32 | () => stores.features.features.needToWaitToProceed && !stores.user.data.isPremium, | 36 | () => stores.user.isLoggedIn && stores.features.features.needToWaitToProceed && !stores.user.data.isPremium, |
33 | (isEnabled) => { | 37 | (isEnabled) => { |
34 | if (isEnabled) { | 38 | if (isEnabled) { |
35 | debug('Enabling `delayApp` feature'); | 39 | debug('Enabling `delayApp` feature'); |
@@ -50,6 +54,7 @@ export default function init(stores) { | |||
50 | debug(`App will be delayed for ${config.delayDuration / 1000}s`); | 54 | debug(`App will be delayed for ${config.delayDuration / 1000}s`); |
51 | 55 | ||
52 | setVisibility(true); | 56 | setVisibility(true); |
57 | gaPage('/delayApp'); | ||
53 | gaEvent('delayApp', 'show', 'Delay App Feature'); | 58 | gaEvent('delayApp', 'show', 'Delay App Feature'); |
54 | 59 | ||
55 | timeLastDelay = moment(); | 60 | timeLastDelay = moment(); |
diff --git a/src/features/shareFranz/Component.js b/src/features/shareFranz/Component.js new file mode 100644 index 000000000..ef43a54fa --- /dev/null +++ b/src/features/shareFranz/Component.js | |||
@@ -0,0 +1,166 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer, inject } from 'mobx-react'; | ||
4 | import injectSheet from 'react-jss'; | ||
5 | import { defineMessages, intlShape } from 'react-intl'; | ||
6 | import { Button } from '@meetfranz/forms'; | ||
7 | import { H1, Icon } from '@meetfranz/ui'; | ||
8 | |||
9 | import Modal from '../../components/ui/Modal'; | ||
10 | import { state } from '.'; | ||
11 | import { gaEvent } from '../../lib/analytics'; | ||
12 | import ServicesStore from '../../stores/ServicesStore'; | ||
13 | |||
14 | const messages = defineMessages({ | ||
15 | headline: { | ||
16 | id: 'feature.shareFranz.headline', | ||
17 | defaultMessage: '!!!Franz is better together!', | ||
18 | }, | ||
19 | text: { | ||
20 | id: 'feature.shareFranz.text', | ||
21 | defaultMessage: '!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.', | ||
22 | }, | ||
23 | actionsEmail: { | ||
24 | id: 'feature.shareFranz.action.email', | ||
25 | defaultMessage: '!!!Share as email', | ||
26 | }, | ||
27 | actionsFacebook: { | ||
28 | id: 'feature.shareFranz.action.facebook', | ||
29 | defaultMessage: '!!!Share on Facebook', | ||
30 | }, | ||
31 | actionsTwitter: { | ||
32 | id: 'feature.shareFranz.action.twitter', | ||
33 | defaultMessage: '!!!Share on Twitter', | ||
34 | }, | ||
35 | shareTextEmail: { | ||
36 | id: 'feature.shareFranz.shareText.email', | ||
37 | defaultMessage: '!!! I\'ve added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com', | ||
38 | }, | ||
39 | shareTextTwitter: { | ||
40 | id: 'feature.shareFranz.shareText.twitter', | ||
41 | defaultMessage: '!!! I\'ve added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz', | ||
42 | }, | ||
43 | }); | ||
44 | |||
45 | const styles = theme => ({ | ||
46 | modal: { | ||
47 | width: '80%', | ||
48 | maxWidth: 600, | ||
49 | background: theme.styleTypes.primary.accent, | ||
50 | textAlign: 'center', | ||
51 | color: theme.styleTypes.primary.contrast, | ||
52 | }, | ||
53 | heartContainer: { | ||
54 | display: 'flex', | ||
55 | justifyContent: 'center', | ||
56 | borderRadius: '100%', | ||
57 | background: theme.brandDanger, | ||
58 | padding: 20, | ||
59 | width: 100, | ||
60 | height: 100, | ||
61 | margin: [-70, 'auto', 30], | ||
62 | }, | ||
63 | heart: { | ||
64 | fill: theme.styleTypes.primary.contrast, | ||
65 | }, | ||
66 | headline: { | ||
67 | textAlign: 'center', | ||
68 | fontSize: 40, | ||
69 | marginBottom: 20, | ||
70 | }, | ||
71 | actions: { | ||
72 | display: 'flex', | ||
73 | justifyContent: 'space-between', | ||
74 | marginTop: 30, | ||
75 | }, | ||
76 | cta: { | ||
77 | background: theme.styleTypes.primary.contrast, | ||
78 | color: theme.styleTypes.primary.accent, | ||
79 | |||
80 | '& svg': { | ||
81 | fill: theme.styleTypes.primary.accent, | ||
82 | }, | ||
83 | }, | ||
84 | }); | ||
85 | |||
86 | export default @injectSheet(styles) @inject('stores') @observer class ShareFranzModal extends Component { | ||
87 | static propTypes = { | ||
88 | classes: PropTypes.object.isRequired, | ||
89 | }; | ||
90 | |||
91 | static contextTypes = { | ||
92 | intl: intlShape, | ||
93 | }; | ||
94 | |||
95 | close() { | ||
96 | state.isModalVisible = false; | ||
97 | } | ||
98 | |||
99 | render() { | ||
100 | const { isModalVisible } = state; | ||
101 | |||
102 | const { | ||
103 | classes, | ||
104 | stores, | ||
105 | } = this.props; | ||
106 | |||
107 | const serviceCount = stores.services.all.length; | ||
108 | |||
109 | const { intl } = this.context; | ||
110 | |||
111 | return ( | ||
112 | <Modal | ||
113 | isOpen={isModalVisible} | ||
114 | className={classes.modal} | ||
115 | shouldCloseOnOverlayClick | ||
116 | close={this.close.bind(this)} | ||
117 | > | ||
118 | <div className={classes.heartContainer}> | ||
119 | <Icon icon="mdiHeart" className={classes.heart} size={4} /> | ||
120 | </div> | ||
121 | <H1 className={classes.headline}> | ||
122 | {intl.formatMessage(messages.headline)} | ||
123 | </H1> | ||
124 | <p>{intl.formatMessage(messages.text)}</p> | ||
125 | <div className={classes.actions}> | ||
126 | <Button | ||
127 | label={intl.formatMessage(messages.actionsEmail)} | ||
128 | className={classes.cta} | ||
129 | icon="mdiEmail" | ||
130 | href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`} | ||
131 | target="_blank" | ||
132 | onClick={() => { | ||
133 | gaEvent('Share Franz', 'share', 'Share via email'); | ||
134 | }} | ||
135 | /> | ||
136 | <Button | ||
137 | label={intl.formatMessage(messages.actionsFacebook)} | ||
138 | className={classes.cta} | ||
139 | icon="mdiFacebookBox" | ||
140 | href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button" | ||
141 | target="_blank" | ||
142 | onClick={() => { | ||
143 | gaEvent('Share Franz', 'share', 'Share via Facebook'); | ||
144 | }} | ||
145 | /> | ||
146 | <Button | ||
147 | label={intl.formatMessage(messages.actionsTwitter)} | ||
148 | className={classes.cta} | ||
149 | icon="mdiTwitter" | ||
150 | href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`} | ||
151 | target="_blank" | ||
152 | onClick={() => { | ||
153 | gaEvent('Share Franz', 'share', 'Share via Twitter'); | ||
154 | }} | ||
155 | /> | ||
156 | </div> | ||
157 | </Modal> | ||
158 | ); | ||
159 | } | ||
160 | } | ||
161 | |||
162 | ShareFranzModal.wrappedComponent.propTypes = { | ||
163 | stores: PropTypes.shape({ | ||
164 | services: PropTypes.instanceOf(ServicesStore).isRequired, | ||
165 | }).isRequired, | ||
166 | }; | ||
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js new file mode 100644 index 000000000..3a8ec95d3 --- /dev/null +++ b/src/features/shareFranz/index.js | |||
@@ -0,0 +1,52 @@ | |||
1 | import { observable, reaction } from 'mobx'; | ||
2 | import ms from 'ms'; | ||
3 | |||
4 | import { state as delayAppState } from '../delayApp'; | ||
5 | import { gaEvent, gaPage } from '../../lib/analytics'; | ||
6 | |||
7 | export { default as Component } from './Component'; | ||
8 | |||
9 | const debug = require('debug')('Franz:feature:shareFranz'); | ||
10 | |||
11 | const defaultState = { | ||
12 | isModalVisible: false, | ||
13 | lastShown: null, | ||
14 | }; | ||
15 | |||
16 | export const state = observable(defaultState); | ||
17 | |||
18 | export default function initialize(stores) { | ||
19 | debug('Initialize shareFranz feature'); | ||
20 | |||
21 | window.franz.features.shareFranz = { | ||
22 | state, | ||
23 | }; | ||
24 | |||
25 | function showModal() { | ||
26 | debug('Showing share window'); | ||
27 | |||
28 | state.isModalVisible = true; | ||
29 | |||
30 | gaEvent('Share Franz', 'show'); | ||
31 | gaPage('/share-modal'); | ||
32 | } | ||
33 | |||
34 | reaction( | ||
35 | () => stores.user.isLoggedIn, | ||
36 | () => { | ||
37 | setTimeout(() => { | ||
38 | if (stores.settings.stats.appStarts % 30 === 0) { | ||
39 | if (delayAppState.isDelayAppScreenVisible) { | ||
40 | debug('Delaying share modal by 5 minutes'); | ||
41 | setTimeout(() => showModal(), ms('5m')); | ||
42 | } else { | ||
43 | showModal(); | ||
44 | } | ||
45 | } | ||
46 | }, ms('2s')); | ||
47 | }, | ||
48 | { | ||
49 | fireImmediately: true, | ||
50 | }, | ||
51 | ); | ||
52 | } | ||
diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js new file mode 100644 index 000000000..750d1f00c --- /dev/null +++ b/src/helpers/url-helpers.js | |||
@@ -0,0 +1,15 @@ | |||
1 | import { URL } from 'url'; | ||
2 | |||
3 | import { ALLOWED_PROTOCOLS } from '../config'; | ||
4 | |||
5 | const debug = require('debug')('Franz:Helpers:url'); | ||
6 | |||
7 | export function isValidExternalURL(url) { | ||
8 | const parsedUrl = new URL(url); | ||
9 | |||
10 | const isAllowed = ALLOWED_PROTOCOLS.includes(parsedUrl.protocol); | ||
11 | |||
12 | debug('protocol check is', isAllowed, 'for:', url); | ||
13 | |||
14 | return isAllowed; | ||
15 | } | ||
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js index 7b1618602..1b5ece223 100644 --- a/src/i18n/globalMessages.js +++ b/src/i18n/globalMessages.js | |||
@@ -1,10 +1,6 @@ | |||
1 | import { defineMessages } from 'react-intl'; | 1 | import { defineMessages } from 'react-intl'; |
2 | 2 | ||
3 | export default defineMessages({ | 3 | export default defineMessages({ |
4 | upgradeAccount: { | ||
5 | id: 'global.premium.upgradeAccount', | ||
6 | defaultMessage: '!!!Please upgrade your account to add a new service.', | ||
7 | }, | ||
8 | APIUnhealthy: { | 4 | APIUnhealthy: { |
9 | id: 'global.api.unhealthy', | 5 | id: 'global.api.unhealthy', |
10 | defaultMessage: '!!!Can\'t connect to Franz Online Services', | 6 | defaultMessage: '!!!Can\'t connect to Franz Online Services', |
diff --git a/src/i18n/languages.js b/src/i18n/languages.js index aa3f2316a..9ddcc3519 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js | |||
@@ -35,7 +35,8 @@ export const SPELLCHECKER_LOCALES = { | |||
35 | 'da-dk': 'Dansk', | 35 | 'da-dk': 'Dansk', |
36 | 'de-de': 'Deutsch', | 36 | 'de-de': 'Deutsch', |
37 | 'el-gr': 'ελληνικά (Greek)', | 37 | 'el-gr': 'ελληνικά (Greek)', |
38 | 'en-us': 'English', | 38 | 'en-gb': 'English (GB)', |
39 | 'en-us': 'English (US)', | ||
39 | 'es-es': 'Español', | 40 | 'es-es': 'Español', |
40 | 'et-ee': 'Estonian', | 41 | 'et-ee': 'Estonian', |
41 | 'fa-ir': 'Ùارسی (Persian)', | 42 | 'fa-ir': 'Ùارسی (Persian)', |
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index ed6f7bacd..f374fddd9 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarrega", | 2 | "app.errorHandler.action" : "Recarrega", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Quelcom ha anat malament", |
4 | "feature.delayApp.action" : "Aconsegueix una llicència de suport per a Franz", | 4 | "feature.delayApp.action" : "Aconsegueix una llicència de suport per a Franz", |
5 | "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Franz per saltar l'espera", | 5 | "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Franz per saltar l'espera", |
6 | "feature.delayApp.text" : "Franz continuarà en {seconds} segons", | 6 | "feature.delayApp.text" : "Franz continuarà en {seconds} segons", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "No es pot connectar amb els serveis en lÃnia de Franz", | 14 | "global.api.unhealthy" : "No es pot connectar amb els serveis en lÃnia de Franz", |
8 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", | 15 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", |
16 | "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Corrector ortogrà fic", | ||
9 | "import.headline" : "Importa els teus serveis Franz 4", | 20 | "import.headline" : "Importa els teus serveis Franz 4", |
10 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", | 21 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", |
11 | "import.skip.label" : "Vull afegir serveis manualment", | 22 | "import.skip.label" : "Vull afegir serveis manualment", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Edita {name}", | 107 | "service.errorHandler.editAction" : "Edita {name}", |
97 | "service.errorHandler.headline" : "Oh no!", | 108 | "service.errorHandler.headline" : "Oh no!", |
98 | "service.errorHandler.message" : "Error", | 109 | "service.errorHandler.message" : "Error", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} ha fallat al carregar", |
100 | "services.getStarted" : "Introducció", | 111 | "services.getStarted" : "Introducció", |
101 | "services.welcome" : "Benvingut a Franz", | 112 | "services.welcome" : "Benvingut a Franz", |
102 | "settings.account.account.editButton" : "Editar Compte", | 113 | "settings.account.account.editButton" : "Editar Compte", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Mostra la insÃgnia de missatge per a tots els missatges nous", | 203 | "settings.service.form.indirectMessages" : "Mostra la insÃgnia de missatge per a tots els missatges nous", |
193 | "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificació i reproducció d'à udio es silenciaran", | 204 | "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificació i reproducció d'à udio es silenciaran", |
194 | "settings.service.form.name" : "Nom", | 205 | "settings.service.form.name" : "Nom", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Host Proxy \/ IP", | 207 | "settings.service.form.proxy.host" : "Host Proxy \/ IP", |
197 | "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz", | 208 | "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz", |
198 | "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", |
199 | "settings.service.form.proxy.password" : "Contrasenya (opcional)", | 210 | "settings.service.form.proxy.password" : "Contrasenya (opcional)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Siusplau, reinicieu el Franz després de canviar els ajustaments de proxy", |
202 | "settings.service.form.proxy.user" : "Usuari (opcional)", | 213 | "settings.service.form.proxy.user" : "Usuari (opcional)", |
203 | "settings.service.form.saveButton" : "Desa el servei", | 214 | "settings.service.form.saveButton" : "Desa el servei", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Idioma del corrector", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Utilitzar el predeterminat del sistema ({default})", |
206 | "settings.service.form.tabHosted" : "Allotjat", | 217 | "settings.service.form.tabHosted" : "Allotjat", |
207 | "settings.service.form.tabOnPremise" : "Allotjat per si mateix âï¸", | 218 | "settings.service.form.tabOnPremise" : "Allotjat per si mateix âï¸", |
208 | "settings.service.form.team" : "Equip", | 219 | "settings.service.form.team" : "Equip", |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index b8bfd2526..3fc6318a2 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Obnovit", | 2 | "app.errorHandler.action" : "Obnovit", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Něco se pokazilo", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "PodpoÅ™ Franz a zÃskej Supporter licenci", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeÅ¡ už muset Äekat", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz bude pokraÄovat v {seconds} sekundách.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nemůžeme připojit Franz k online službám", | 14 | "global.api.unhealthy" : "Nemůžeme připojit Franz k online službám", |
8 | "global.notConnectedToTheInternet" : "Připojenà k internetu nenà k dispozici.", | 15 | "global.notConnectedToTheInternet" : "Připojenà k internetu nenà k dispozici.", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Oprava překlepů jazyka", | ||
9 | "import.headline" : "Importovat služby z Franz 4", | 20 | "import.headline" : "Importovat služby z Franz 4", |
10 | "import.notSupportedHeadline" : "Služby nejsou podporovány ve verzi Franz 5", | 21 | "import.notSupportedHeadline" : "Služby nejsou podporovány ve verzi Franz 5", |
11 | "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›", | 22 | "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Pro emailovou adresu nebyl nalezený žádný uživatel", | 92 | "password.noUser" : "Pro emailovou adresu nebyl nalezený žádný uživatel", |
82 | "password.submit.label" : "Odeslat", | 93 | "password.submit.label" : "Odeslat", |
83 | "password.successInfo" : "ProsÃm, zkontrolujte svůj e-mail", | 94 | "password.successInfo" : "ProsÃm, zkontrolujte svůj e-mail", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "VylepÅ¡i si svůj úÄet", |
85 | "pricing.headline" : "Podpořit Franz", | 96 | "pricing.headline" : "Podpořit Franz", |
86 | "pricing.link.skipPayment" : "Nechci podporovat vývoj aplikace Franz.", | 97 | "pricing.link.skipPayment" : "Nechci podporovat vývoj aplikace Franz.", |
87 | "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz", | 98 | "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Upravit {name}", | 107 | "service.errorHandler.editAction" : "Upravit {name}", |
97 | "service.errorHandler.headline" : "Ale ne!", | 108 | "service.errorHandler.headline" : "Ale ne!", |
98 | "service.errorHandler.message" : "Chyba", | 109 | "service.errorHandler.message" : "Chyba", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} se nepodaÅ™ilo naÄÃst.", |
100 | "services.getStarted" : "ZaÄnÄ›me", | 111 | "services.getStarted" : "ZaÄnÄ›me", |
101 | "services.welcome" : "VÃtejte v programu Franz", | 112 | "services.welcome" : "VÃtejte v programu Franz", |
102 | "settings.account.account.editButton" : "Upravit úÄet", | 113 | "settings.account.account.editButton" : "Upravit úÄet", |
@@ -127,7 +138,7 @@ | |||
127 | "settings.app.form.autoLaunchInBackground" : "Spustit na pozadÃ", | 138 | "settings.app.form.autoLaunchInBackground" : "Spustit na pozadÃ", |
128 | "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu", | 139 | "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu", |
129 | "settings.app.form.beta" : "Zahrnout beta verze", | 140 | "settings.app.form.beta" : "Zahrnout beta verze", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Připoj se k Temné straně", |
131 | "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenÃ", | 142 | "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenÃ", |
132 | "settings.app.form.enableMenuBar" : "Zobraz Franz v Menu nabÃdce", | 143 | "settings.app.form.enableMenuBar" : "Zobraz Franz v Menu nabÃdce", |
133 | "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu", | 144 | "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "Ponechat Franze v pozadà pÅ™i zavÃránà okna", | 149 | "settings.app.form.runInBackground" : "Ponechat Franze v pozadà pÅ™i zavÃránà okna", |
139 | "settings.app.form.showDisabledServices" : "Zobrazit záložky vypnutých služeb", | 150 | "settings.app.form.showDisabledServices" : "Zobrazit záložky vypnutých služeb", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepÅ™eÄtené zprávy když jsou upozornÄ›nà vypnutá", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepÅ™eÄtené zprávy když jsou upozornÄ›nà vypnutá", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Oprava překlepů jazyka", |
142 | "settings.app.headline" : "NastavenÃ", | 153 | "settings.app.headline" : "NastavenÃ", |
143 | "settings.app.headlineAdvanced" : "PokroÄilé", | 154 | "settings.app.headlineAdvanced" : "PokroÄilé", |
144 | "settings.app.headlineAppearance" : "Vzhled", | 155 | "settings.app.headlineAppearance" : "Vzhled", |
@@ -179,7 +190,7 @@ | |||
179 | "settings.service.form.editServiceHeadline" : "Upravit {name}", | 190 | "settings.service.form.editServiceHeadline" : "Upravit {name}", |
180 | "settings.service.form.enableAudio" : "Zapnout zvuk", | 191 | "settings.service.form.enableAudio" : "Zapnout zvuk", |
181 | "settings.service.form.enableBadge" : "Ukázat odznaky nepÅ™eÄtených zpráv", | 192 | "settings.service.form.enableBadge" : "Ukázat odznaky nepÅ™eÄtených zpráv", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Povolit Tmavý vzhled", |
183 | "settings.service.form.enableNotification" : "Povolit upozornÄ›nÃ", | 194 | "settings.service.form.enableNotification" : "Povolit upozornÄ›nÃ", |
184 | "settings.service.form.enableService" : "Povolit službu", | 195 | "settings.service.form.enableService" : "Povolit službu", |
185 | "settings.service.form.headlineBadges" : "Odznaky nepÅ™eÄtených zpráv", | 196 | "settings.service.form.headlineBadges" : "Odznaky nepÅ™eÄtených zpráv", |
@@ -192,7 +203,7 @@ | |||
192 | "settings.service.form.indirectMessages" : "Zobrazovat znak zprávy pro všechny nové zprávy", | 203 | "settings.service.form.indirectMessages" : "Zobrazovat znak zprávy pro všechny nové zprávy", |
193 | "settings.service.form.isMutedInfo" : "Pokud je vypnuto, všechny zvuky notifikacà a jiného audia budou ztišeny", | 204 | "settings.service.form.isMutedInfo" : "Pokud je vypnuto, všechny zvuky notifikacà a jiného audia budou ztišeny", |
194 | "settings.service.form.name" : "Jméno", | 205 | "settings.service.form.name" : "Jméno", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Nastavenà HTTP\/HTTPS Proxy", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Use Proxy", |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index b5abb56d4..13b8d12fc 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Neuladen", | 2 | "app.errorHandler.action" : "Neu laden", |
3 | "app.errorHandler.headline" : "Es trat ein Fehler auf", | 3 | "app.errorHandler.headline" : "Es trat ein Fehler auf", |
4 | "feature.delayApp.action" : "Upgrade deinen Account", | 4 | "feature.delayApp.action" : "Upgrade deinen Account", |
5 | "feature.delayApp.headline" : "Erspare dir das Warten mit einer Franz Supporter Lizenz", | 5 | "feature.delayApp.headline" : "Erspare dir das Warten mit einer Franz Supporter Lizenz", |
6 | "feature.delayApp.text" : "Es geht in {seconds} Sekunden weiter.", | 6 | "feature.delayApp.text" : "Es geht in {seconds} Sekunden weiter.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Verbindung mit dem Franz Online Service fehlgeschlagen", | 14 | "global.api.unhealthy" : "Verbindung mit dem Franz Online Service fehlgeschlagen", |
8 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", | 15 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", |
16 | "global.spellchecker.useDefault" : "Standard benutzen ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Sprache für Rechtschreibprüfung", | ||
9 | "import.headline" : "Deine Franz 4 Dienste importieren", | 20 | "import.headline" : "Deine Franz 4 Dienste importieren", |
10 | "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden", | 21 | "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstützt werden", |
11 | "import.skip.label" : "Ich möchte Dienste selbst hinzufügen", | 22 | "import.skip.label" : "Ich möchte Dienste selbst hinzufügen", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json new file mode 100644 index 000000000..0641c510c --- /dev/null +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -0,0 +1,3934 @@ | |||
1 | [ | ||
2 | { | ||
3 | "descriptors": [ | ||
4 | { | ||
5 | "defaultMessage": "!!!Import your Franz 4 services", | ||
6 | "end": { | ||
7 | "column": 3, | ||
8 | "line": 16 | ||
9 | }, | ||
10 | "file": "src/components/auth/Import.js", | ||
11 | "id": "import.headline", | ||
12 | "start": { | ||
13 | "column": 12, | ||
14 | "line": 13 | ||
15 | } | ||
16 | }, | ||
17 | { | ||
18 | "defaultMessage": "!!!Services not yet supported in Franz 5", | ||
19 | "end": { | ||
20 | "column": 3, | ||
21 | "line": 20 | ||
22 | }, | ||
23 | "file": "src/components/auth/Import.js", | ||
24 | "id": "import.notSupportedHeadline", | ||
25 | "start": { | ||
26 | "column": 24, | ||
27 | "line": 17 | ||
28 | } | ||
29 | }, | ||
30 | { | ||
31 | "defaultMessage": "!!!Import {count} services", | ||
32 | "end": { | ||
33 | "column": 3, | ||
34 | "line": 24 | ||
35 | }, | ||
36 | "file": "src/components/auth/Import.js", | ||
37 | "id": "import.submit.label", | ||
38 | "start": { | ||
39 | "column": 21, | ||
40 | "line": 21 | ||
41 | } | ||
42 | }, | ||
43 | { | ||
44 | "defaultMessage": "!!!I want to add services manually", | ||
45 | "end": { | ||
46 | "column": 3, | ||
47 | "line": 28 | ||
48 | }, | ||
49 | "file": "src/components/auth/Import.js", | ||
50 | "id": "import.skip.label", | ||
51 | "start": { | ||
52 | "column": 19, | ||
53 | "line": 25 | ||
54 | } | ||
55 | } | ||
56 | ], | ||
57 | "path": "src/components/auth/Import.json" | ||
58 | }, | ||
59 | { | ||
60 | "descriptors": [ | ||
61 | { | ||
62 | "defaultMessage": "!!!Invite Friends", | ||
63 | "end": { | ||
64 | "column": 3, | ||
65 | "line": 19 | ||
66 | }, | ||
67 | "file": "src/components/auth/Invite.js", | ||
68 | "id": "settings.invite.headline", | ||
69 | "start": { | ||
70 | "column": 20, | ||
71 | "line": 16 | ||
72 | } | ||
73 | }, | ||
74 | { | ||
75 | "defaultMessage": "!!!Invite 3 of your friends or colleagues", | ||
76 | "end": { | ||
77 | "column": 3, | ||
78 | "line": 23 | ||
79 | }, | ||
80 | "file": "src/components/auth/Invite.js", | ||
81 | "id": "invite.headline.friends", | ||
82 | "start": { | ||
83 | "column": 12, | ||
84 | "line": 20 | ||
85 | } | ||
86 | }, | ||
87 | { | ||
88 | "defaultMessage": "!!!Name", | ||
89 | "end": { | ||
90 | "column": 3, | ||
91 | "line": 27 | ||
92 | }, | ||
93 | "file": "src/components/auth/Invite.js", | ||
94 | "id": "invite.name.label", | ||
95 | "start": { | ||
96 | "column": 13, | ||
97 | "line": 24 | ||
98 | } | ||
99 | }, | ||
100 | { | ||
101 | "defaultMessage": "!!!Email address", | ||
102 | "end": { | ||
103 | "column": 3, | ||
104 | "line": 31 | ||
105 | }, | ||
106 | "file": "src/components/auth/Invite.js", | ||
107 | "id": "invite.email.label", | ||
108 | "start": { | ||
109 | "column": 14, | ||
110 | "line": 28 | ||
111 | } | ||
112 | }, | ||
113 | { | ||
114 | "defaultMessage": "!!!Send invites", | ||
115 | "end": { | ||
116 | "column": 3, | ||
117 | "line": 35 | ||
118 | }, | ||
119 | "file": "src/components/auth/Invite.js", | ||
120 | "id": "invite.submit.label", | ||
121 | "start": { | ||
122 | "column": 21, | ||
123 | "line": 32 | ||
124 | } | ||
125 | }, | ||
126 | { | ||
127 | "defaultMessage": "!!!I want to do this later", | ||
128 | "end": { | ||
129 | "column": 3, | ||
130 | "line": 39 | ||
131 | }, | ||
132 | "file": "src/components/auth/Invite.js", | ||
133 | "id": "invite.skip.label", | ||
134 | "start": { | ||
135 | "column": 19, | ||
136 | "line": 36 | ||
137 | } | ||
138 | }, | ||
139 | { | ||
140 | "defaultMessage": "!!!Invitations sent successfully", | ||
141 | "end": { | ||
142 | "column": 3, | ||
143 | "line": 43 | ||
144 | }, | ||
145 | "file": "src/components/auth/Invite.js", | ||
146 | "id": "invite.successInfo", | ||
147 | "start": { | ||
148 | "column": 21, | ||
149 | "line": 40 | ||
150 | } | ||
151 | } | ||
152 | ], | ||
153 | "path": "src/components/auth/Invite.json" | ||
154 | }, | ||
155 | { | ||
156 | "descriptors": [ | ||
157 | { | ||
158 | "defaultMessage": "!!!Sign in", | ||
159 | "end": { | ||
160 | "column": 3, | ||
161 | "line": 20 | ||
162 | }, | ||
163 | "file": "src/components/auth/Login.js", | ||
164 | "id": "login.headline", | ||
165 | "start": { | ||
166 | "column": 12, | ||
167 | "line": 17 | ||
168 | } | ||
169 | }, | ||
170 | { | ||
171 | "defaultMessage": "!!!Email address", | ||
172 | "end": { | ||
173 | "column": 3, | ||
174 | "line": 24 | ||
175 | }, | ||
176 | "file": "src/components/auth/Login.js", | ||
177 | "id": "login.email.label", | ||
178 | "start": { | ||
179 | "column": 14, | ||
180 | "line": 21 | ||
181 | } | ||
182 | }, | ||
183 | { | ||
184 | "defaultMessage": "!!!Password", | ||
185 | "end": { | ||
186 | "column": 3, | ||
187 | "line": 28 | ||
188 | }, | ||
189 | "file": "src/components/auth/Login.js", | ||
190 | "id": "login.password.label", | ||
191 | "start": { | ||
192 | "column": 17, | ||
193 | "line": 25 | ||
194 | } | ||
195 | }, | ||
196 | { | ||
197 | "defaultMessage": "!!!Sign in", | ||
198 | "end": { | ||
199 | "column": 3, | ||
200 | "line": 32 | ||
201 | }, | ||
202 | "file": "src/components/auth/Login.js", | ||
203 | "id": "login.submit.label", | ||
204 | "start": { | ||
205 | "column": 21, | ||
206 | "line": 29 | ||
207 | } | ||
208 | }, | ||
209 | { | ||
210 | "defaultMessage": "!!!Email or password not valid", | ||
211 | "end": { | ||
212 | "column": 3, | ||
213 | "line": 36 | ||
214 | }, | ||
215 | "file": "src/components/auth/Login.js", | ||
216 | "id": "login.invalidCredentials", | ||
217 | "start": { | ||
218 | "column": 22, | ||
219 | "line": 33 | ||
220 | } | ||
221 | }, | ||
222 | { | ||
223 | "defaultMessage": "!!!Your session expired, please login again.", | ||
224 | "end": { | ||
225 | "column": 3, | ||
226 | "line": 40 | ||
227 | }, | ||
228 | "file": "src/components/auth/Login.js", | ||
229 | "id": "login.tokenExpired", | ||
230 | "start": { | ||
231 | "column": 16, | ||
232 | "line": 37 | ||
233 | } | ||
234 | }, | ||
235 | { | ||
236 | "defaultMessage": "!!!Your session expired, please login again.", | ||
237 | "end": { | ||
238 | "column": 3, | ||
239 | "line": 44 | ||
240 | }, | ||
241 | "file": "src/components/auth/Login.js", | ||
242 | "id": "login.serverLogout", | ||
243 | "start": { | ||
244 | "column": 16, | ||
245 | "line": 41 | ||
246 | } | ||
247 | }, | ||
248 | { | ||
249 | "defaultMessage": "!!!Create a free account", | ||
250 | "end": { | ||
251 | "column": 3, | ||
252 | "line": 48 | ||
253 | }, | ||
254 | "file": "src/components/auth/Login.js", | ||
255 | "id": "login.link.signup", | ||
256 | "start": { | ||
257 | "column": 14, | ||
258 | "line": 45 | ||
259 | } | ||
260 | }, | ||
261 | { | ||
262 | "defaultMessage": "!!!Forgot password", | ||
263 | "end": { | ||
264 | "column": 3, | ||
265 | "line": 52 | ||
266 | }, | ||
267 | "file": "src/components/auth/Login.js", | ||
268 | "id": "login.link.password", | ||
269 | "start": { | ||
270 | "column": 16, | ||
271 | "line": 49 | ||
272 | } | ||
273 | } | ||
274 | ], | ||
275 | "path": "src/components/auth/Login.json" | ||
276 | }, | ||
277 | { | ||
278 | "descriptors": [ | ||
279 | { | ||
280 | "defaultMessage": "!!!Forgot password", | ||
281 | "end": { | ||
282 | "column": 3, | ||
283 | "line": 17 | ||
284 | }, | ||
285 | "file": "src/components/auth/Password.js", | ||
286 | "id": "password.headline", | ||
287 | "start": { | ||
288 | "column": 12, | ||
289 | "line": 14 | ||
290 | } | ||
291 | }, | ||
292 | { | ||
293 | "defaultMessage": "!!!Email address", | ||
294 | "end": { | ||
295 | "column": 3, | ||
296 | "line": 21 | ||
297 | }, | ||
298 | "file": "src/components/auth/Password.js", | ||
299 | "id": "password.email.label", | ||
300 | "start": { | ||
301 | "column": 14, | ||
302 | "line": 18 | ||
303 | } | ||
304 | }, | ||
305 | { | ||
306 | "defaultMessage": "!!!Submit", | ||
307 | "end": { | ||
308 | "column": 3, | ||
309 | "line": 25 | ||
310 | }, | ||
311 | "file": "src/components/auth/Password.js", | ||
312 | "id": "password.submit.label", | ||
313 | "start": { | ||
314 | "column": 21, | ||
315 | "line": 22 | ||
316 | } | ||
317 | }, | ||
318 | { | ||
319 | "defaultMessage": "!!!Your new password was sent to your email address", | ||
320 | "end": { | ||
321 | "column": 3, | ||
322 | "line": 29 | ||
323 | }, | ||
324 | "file": "src/components/auth/Password.js", | ||
325 | "id": "password.successInfo", | ||
326 | "start": { | ||
327 | "column": 15, | ||
328 | "line": 26 | ||
329 | } | ||
330 | }, | ||
331 | { | ||
332 | "defaultMessage": "!!!No user affiliated with that email address", | ||
333 | "end": { | ||
334 | "column": 3, | ||
335 | "line": 33 | ||
336 | }, | ||
337 | "file": "src/components/auth/Password.js", | ||
338 | "id": "password.noUser", | ||
339 | "start": { | ||
340 | "column": 10, | ||
341 | "line": 30 | ||
342 | } | ||
343 | }, | ||
344 | { | ||
345 | "defaultMessage": "!!!Create a free account", | ||
346 | "end": { | ||
347 | "column": 3, | ||
348 | "line": 37 | ||
349 | }, | ||
350 | "file": "src/components/auth/Password.js", | ||
351 | "id": "password.link.signup", | ||
352 | "start": { | ||
353 | "column": 14, | ||
354 | "line": 34 | ||
355 | } | ||
356 | }, | ||
357 | { | ||
358 | "defaultMessage": "!!!Sign in to your account", | ||
359 | "end": { | ||
360 | "column": 3, | ||
361 | "line": 41 | ||
362 | }, | ||
363 | "file": "src/components/auth/Password.js", | ||
364 | "id": "password.link.login", | ||
365 | "start": { | ||
366 | "column": 13, | ||
367 | "line": 38 | ||
368 | } | ||
369 | } | ||
370 | ], | ||
371 | "path": "src/components/auth/Password.json" | ||
372 | }, | ||
373 | { | ||
374 | "descriptors": [ | ||
375 | { | ||
376 | "defaultMessage": "!!!Support Franz", | ||
377 | "end": { | ||
378 | "column": 3, | ||
379 | "line": 16 | ||
380 | }, | ||
381 | "file": "src/components/auth/Pricing.js", | ||
382 | "id": "pricing.headline", | ||
383 | "start": { | ||
384 | "column": 12, | ||
385 | "line": 13 | ||
386 | } | ||
387 | }, | ||
388 | { | ||
389 | "defaultMessage": "!!!Select your support plan", | ||
390 | "end": { | ||
391 | "column": 3, | ||
392 | "line": 20 | ||
393 | }, | ||
394 | "file": "src/components/auth/Pricing.js", | ||
395 | "id": "pricing.support.label", | ||
396 | "start": { | ||
397 | "column": 23, | ||
398 | "line": 17 | ||
399 | } | ||
400 | }, | ||
401 | { | ||
402 | "defaultMessage": "!!!Support the development of Franz", | ||
403 | "end": { | ||
404 | "column": 3, | ||
405 | "line": 24 | ||
406 | }, | ||
407 | "file": "src/components/auth/Pricing.js", | ||
408 | "id": "pricing.submit.label", | ||
409 | "start": { | ||
410 | "column": 21, | ||
411 | "line": 21 | ||
412 | } | ||
413 | }, | ||
414 | { | ||
415 | "defaultMessage": "!!!I don't want to support the development of Franz.", | ||
416 | "end": { | ||
417 | "column": 3, | ||
418 | "line": 28 | ||
419 | }, | ||
420 | "file": "src/components/auth/Pricing.js", | ||
421 | "id": "pricing.link.skipPayment", | ||
422 | "start": { | ||
423 | "column": 15, | ||
424 | "line": 25 | ||
425 | } | ||
426 | } | ||
427 | ], | ||
428 | "path": "src/components/auth/Pricing.json" | ||
429 | }, | ||
430 | { | ||
431 | "descriptors": [ | ||
432 | { | ||
433 | "defaultMessage": "!!!Sign up", | ||
434 | "end": { | ||
435 | "column": 3, | ||
436 | "line": 21 | ||
437 | }, | ||
438 | "file": "src/components/auth/Signup.js", | ||
439 | "id": "signup.headline", | ||
440 | "start": { | ||
441 | "column": 12, | ||
442 | "line": 18 | ||
443 | } | ||
444 | }, | ||
445 | { | ||
446 | "defaultMessage": "!!!Firstname", | ||
447 | "end": { | ||
448 | "column": 3, | ||
449 | "line": 25 | ||
450 | }, | ||
451 | "file": "src/components/auth/Signup.js", | ||
452 | "id": "signup.firstname.label", | ||
453 | "start": { | ||
454 | "column": 18, | ||
455 | "line": 22 | ||
456 | } | ||
457 | }, | ||
458 | { | ||
459 | "defaultMessage": "!!!Lastname", | ||
460 | "end": { | ||
461 | "column": 3, | ||
462 | "line": 29 | ||
463 | }, | ||
464 | "file": "src/components/auth/Signup.js", | ||
465 | "id": "signup.lastname.label", | ||
466 | "start": { | ||
467 | "column": 17, | ||
468 | "line": 26 | ||
469 | } | ||
470 | }, | ||
471 | { | ||
472 | "defaultMessage": "!!!Email address", | ||
473 | "end": { | ||
474 | "column": 3, | ||
475 | "line": 33 | ||
476 | }, | ||
477 | "file": "src/components/auth/Signup.js", | ||
478 | "id": "signup.email.label", | ||
479 | "start": { | ||
480 | "column": 14, | ||
481 | "line": 30 | ||
482 | } | ||
483 | }, | ||
484 | { | ||
485 | "defaultMessage": "!!!Company", | ||
486 | "end": { | ||
487 | "column": 3, | ||
488 | "line": 37 | ||
489 | }, | ||
490 | "file": "src/components/auth/Signup.js", | ||
491 | "id": "signup.company.label", | ||
492 | "start": { | ||
493 | "column": 16, | ||
494 | "line": 34 | ||
495 | } | ||
496 | }, | ||
497 | { | ||
498 | "defaultMessage": "!!!Password", | ||
499 | "end": { | ||
500 | "column": 3, | ||
501 | "line": 41 | ||
502 | }, | ||
503 | "file": "src/components/auth/Signup.js", | ||
504 | "id": "signup.password.label", | ||
505 | "start": { | ||
506 | "column": 17, | ||
507 | "line": 38 | ||
508 | } | ||
509 | }, | ||
510 | { | ||
511 | "defaultMessage": "!!!By creating a Franz account you accept the", | ||
512 | "end": { | ||
513 | "column": 3, | ||
514 | "line": 45 | ||
515 | }, | ||
516 | "file": "src/components/auth/Signup.js", | ||
517 | "id": "signup.legal.info", | ||
518 | "start": { | ||
519 | "column": 13, | ||
520 | "line": 42 | ||
521 | } | ||
522 | }, | ||
523 | { | ||
524 | "defaultMessage": "!!!Terms of service", | ||
525 | "end": { | ||
526 | "column": 3, | ||
527 | "line": 49 | ||
528 | }, | ||
529 | "file": "src/components/auth/Signup.js", | ||
530 | "id": "signup.legal.terms", | ||
531 | "start": { | ||
532 | "column": 9, | ||
533 | "line": 46 | ||
534 | } | ||
535 | }, | ||
536 | { | ||
537 | "defaultMessage": "!!!Privacy Statement", | ||
538 | "end": { | ||
539 | "column": 3, | ||
540 | "line": 53 | ||
541 | }, | ||
542 | "file": "src/components/auth/Signup.js", | ||
543 | "id": "signup.legal.privacy", | ||
544 | "start": { | ||
545 | "column": 11, | ||
546 | "line": 50 | ||
547 | } | ||
548 | }, | ||
549 | { | ||
550 | "defaultMessage": "!!!Create account", | ||
551 | "end": { | ||
552 | "column": 3, | ||
553 | "line": 57 | ||
554 | }, | ||
555 | "file": "src/components/auth/Signup.js", | ||
556 | "id": "signup.submit.label", | ||
557 | "start": { | ||
558 | "column": 21, | ||
559 | "line": 54 | ||
560 | } | ||
561 | }, | ||
562 | { | ||
563 | "defaultMessage": "!!!Already have an account, sign in?", | ||
564 | "end": { | ||
565 | "column": 3, | ||
566 | "line": 61 | ||
567 | }, | ||
568 | "file": "src/components/auth/Signup.js", | ||
569 | "id": "signup.link.login", | ||
570 | "start": { | ||
571 | "column": 13, | ||
572 | "line": 58 | ||
573 | } | ||
574 | }, | ||
575 | { | ||
576 | "defaultMessage": "!!!A user with that email address already exists", | ||
577 | "end": { | ||
578 | "column": 3, | ||
579 | "line": 65 | ||
580 | }, | ||
581 | "file": "src/components/auth/Signup.js", | ||
582 | "id": "signup.emailDuplicate", | ||
583 | "start": { | ||
584 | "column": 18, | ||
585 | "line": 62 | ||
586 | } | ||
587 | } | ||
588 | ], | ||
589 | "path": "src/components/auth/Signup.json" | ||
590 | }, | ||
591 | { | ||
592 | "descriptors": [ | ||
593 | { | ||
594 | "defaultMessage": "!!!Create a free account", | ||
595 | "end": { | ||
596 | "column": 3, | ||
597 | "line": 12 | ||
598 | }, | ||
599 | "file": "src/components/auth/Welcome.js", | ||
600 | "id": "welcome.signupButton", | ||
601 | "start": { | ||
602 | "column": 16, | ||
603 | "line": 9 | ||
604 | } | ||
605 | }, | ||
606 | { | ||
607 | "defaultMessage": "!!!Login to your account", | ||
608 | "end": { | ||
609 | "column": 3, | ||
610 | "line": 16 | ||
611 | }, | ||
612 | "file": "src/components/auth/Welcome.js", | ||
613 | "id": "welcome.loginButton", | ||
614 | "start": { | ||
615 | "column": 15, | ||
616 | "line": 13 | ||
617 | } | ||
618 | } | ||
619 | ], | ||
620 | "path": "src/components/auth/Welcome.json" | ||
621 | }, | ||
622 | { | ||
623 | "descriptors": [ | ||
624 | { | ||
625 | "defaultMessage": "!!!Your services have been updated.", | ||
626 | "end": { | ||
627 | "column": 3, | ||
628 | "line": 25 | ||
629 | }, | ||
630 | "file": "src/components/layout/AppLayout.js", | ||
631 | "id": "infobar.servicesUpdated", | ||
632 | "start": { | ||
633 | "column": 19, | ||
634 | "line": 22 | ||
635 | } | ||
636 | }, | ||
637 | { | ||
638 | "defaultMessage": "!!!A new update for Franz is available.", | ||
639 | "end": { | ||
640 | "column": 3, | ||
641 | "line": 29 | ||
642 | }, | ||
643 | "file": "src/components/layout/AppLayout.js", | ||
644 | "id": "infobar.updateAvailable", | ||
645 | "start": { | ||
646 | "column": 19, | ||
647 | "line": 26 | ||
648 | } | ||
649 | }, | ||
650 | { | ||
651 | "defaultMessage": "!!!Reload services", | ||
652 | "end": { | ||
653 | "column": 3, | ||
654 | "line": 33 | ||
655 | }, | ||
656 | "file": "src/components/layout/AppLayout.js", | ||
657 | "id": "infobar.buttonReloadServices", | ||
658 | "start": { | ||
659 | "column": 24, | ||
660 | "line": 30 | ||
661 | } | ||
662 | }, | ||
663 | { | ||
664 | "defaultMessage": "!!!Changelog", | ||
665 | "end": { | ||
666 | "column": 3, | ||
667 | "line": 37 | ||
668 | }, | ||
669 | "file": "src/components/layout/AppLayout.js", | ||
670 | "id": "infobar.buttonChangelog", | ||
671 | "start": { | ||
672 | "column": 13, | ||
673 | "line": 34 | ||
674 | } | ||
675 | }, | ||
676 | { | ||
677 | "defaultMessage": "!!!Restart & install update", | ||
678 | "end": { | ||
679 | "column": 3, | ||
680 | "line": 41 | ||
681 | }, | ||
682 | "file": "src/components/layout/AppLayout.js", | ||
683 | "id": "infobar.buttonInstallUpdate", | ||
684 | "start": { | ||
685 | "column": 23, | ||
686 | "line": 38 | ||
687 | } | ||
688 | }, | ||
689 | { | ||
690 | "defaultMessage": "!!!Could not load services and user information", | ||
691 | "end": { | ||
692 | "column": 3, | ||
693 | "line": 45 | ||
694 | }, | ||
695 | "file": "src/components/layout/AppLayout.js", | ||
696 | "id": "infobar.requiredRequestsFailed", | ||
697 | "start": { | ||
698 | "column": 26, | ||
699 | "line": 42 | ||
700 | } | ||
701 | } | ||
702 | ], | ||
703 | "path": "src/components/layout/AppLayout.json" | ||
704 | }, | ||
705 | { | ||
706 | "descriptors": [ | ||
707 | { | ||
708 | "defaultMessage": "!!!Settings", | ||
709 | "end": { | ||
710 | "column": 3, | ||
711 | "line": 14 | ||
712 | }, | ||
713 | "file": "src/components/layout/Sidebar.js", | ||
714 | "id": "sidebar.settings", | ||
715 | "start": { | ||
716 | "column": 12, | ||
717 | "line": 11 | ||
718 | } | ||
719 | }, | ||
720 | { | ||
721 | "defaultMessage": "!!!Add new service", | ||
722 | "end": { | ||
723 | "column": 3, | ||
724 | "line": 18 | ||
725 | }, | ||
726 | "file": "src/components/layout/Sidebar.js", | ||
727 | "id": "sidebar.addNewService", | ||
728 | "start": { | ||
729 | "column": 17, | ||
730 | "line": 15 | ||
731 | } | ||
732 | }, | ||
733 | { | ||
734 | "defaultMessage": "!!!Disable notifications & audio", | ||
735 | "end": { | ||
736 | "column": 3, | ||
737 | "line": 22 | ||
738 | }, | ||
739 | "file": "src/components/layout/Sidebar.js", | ||
740 | "id": "sidebar.muteApp", | ||
741 | "start": { | ||
742 | "column": 8, | ||
743 | "line": 19 | ||
744 | } | ||
745 | }, | ||
746 | { | ||
747 | "defaultMessage": "!!!Enable notifications & audio", | ||
748 | "end": { | ||
749 | "column": 3, | ||
750 | "line": 26 | ||
751 | }, | ||
752 | "file": "src/components/layout/Sidebar.js", | ||
753 | "id": "sidebar.unmuteApp", | ||
754 | "start": { | ||
755 | "column": 10, | ||
756 | "line": 23 | ||
757 | } | ||
758 | } | ||
759 | ], | ||
760 | "path": "src/components/layout/Sidebar.json" | ||
761 | }, | ||
762 | { | ||
763 | "descriptors": [ | ||
764 | { | ||
765 | "defaultMessage": "!!!Oh no!", | ||
766 | "end": { | ||
767 | "column": 3, | ||
768 | "line": 15 | ||
769 | }, | ||
770 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
771 | "id": "service.errorHandler.headline", | ||
772 | "start": { | ||
773 | "column": 12, | ||
774 | "line": 12 | ||
775 | } | ||
776 | }, | ||
777 | { | ||
778 | "defaultMessage": "!!!{name} has failed to load.", | ||
779 | "end": { | ||
780 | "column": 3, | ||
781 | "line": 19 | ||
782 | }, | ||
783 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
784 | "id": "service.errorHandler.text", | ||
785 | "start": { | ||
786 | "column": 8, | ||
787 | "line": 16 | ||
788 | } | ||
789 | }, | ||
790 | { | ||
791 | "defaultMessage": "!!!Reload {name}", | ||
792 | "end": { | ||
793 | "column": 3, | ||
794 | "line": 23 | ||
795 | }, | ||
796 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
797 | "id": "service.errorHandler.action", | ||
798 | "start": { | ||
799 | "column": 10, | ||
800 | "line": 20 | ||
801 | } | ||
802 | }, | ||
803 | { | ||
804 | "defaultMessage": "!!!Edit {name}", | ||
805 | "end": { | ||
806 | "column": 3, | ||
807 | "line": 27 | ||
808 | }, | ||
809 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
810 | "id": "service.errorHandler.editAction", | ||
811 | "start": { | ||
812 | "column": 14, | ||
813 | "line": 24 | ||
814 | } | ||
815 | }, | ||
816 | { | ||
817 | "defaultMessage": "!!!Error:", | ||
818 | "end": { | ||
819 | "column": 3, | ||
820 | "line": 31 | ||
821 | }, | ||
822 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
823 | "id": "service.errorHandler.message", | ||
824 | "start": { | ||
825 | "column": 16, | ||
826 | "line": 28 | ||
827 | } | ||
828 | } | ||
829 | ], | ||
830 | "path": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.json" | ||
831 | }, | ||
832 | { | ||
833 | "descriptors": [ | ||
834 | { | ||
835 | "defaultMessage": "!!!{name} is disabled", | ||
836 | "end": { | ||
837 | "column": 3, | ||
838 | "line": 12 | ||
839 | }, | ||
840 | "file": "src/components/services/content/ServiceDisabled.js", | ||
841 | "id": "service.disabledHandler.headline", | ||
842 | "start": { | ||
843 | "column": 12, | ||
844 | "line": 9 | ||
845 | } | ||
846 | }, | ||
847 | { | ||
848 | "defaultMessage": "!!!Enable {name}", | ||
849 | "end": { | ||
850 | "column": 3, | ||
851 | "line": 16 | ||
852 | }, | ||
853 | "file": "src/components/services/content/ServiceDisabled.js", | ||
854 | "id": "service.disabledHandler.action", | ||
855 | "start": { | ||
856 | "column": 10, | ||
857 | "line": 13 | ||
858 | } | ||
859 | } | ||
860 | ], | ||
861 | "path": "src/components/services/content/ServiceDisabled.json" | ||
862 | }, | ||
863 | { | ||
864 | "descriptors": [ | ||
865 | { | ||
866 | "defaultMessage": "!!!Welcome to Franz", | ||
867 | "end": { | ||
868 | "column": 3, | ||
869 | "line": 14 | ||
870 | }, | ||
871 | "file": "src/components/services/content/Services.js", | ||
872 | "id": "services.welcome", | ||
873 | "start": { | ||
874 | "column": 11, | ||
875 | "line": 11 | ||
876 | } | ||
877 | }, | ||
878 | { | ||
879 | "defaultMessage": "!!!Get started", | ||
880 | "end": { | ||
881 | "column": 3, | ||
882 | "line": 18 | ||
883 | }, | ||
884 | "file": "src/components/services/content/Services.js", | ||
885 | "id": "services.getStarted", | ||
886 | "start": { | ||
887 | "column": 14, | ||
888 | "line": 15 | ||
889 | } | ||
890 | } | ||
891 | ], | ||
892 | "path": "src/components/services/content/Services.json" | ||
893 | }, | ||
894 | { | ||
895 | "descriptors": [ | ||
896 | { | ||
897 | "defaultMessage": "!!!Oh no!", | ||
898 | "end": { | ||
899 | "column": 3, | ||
900 | "line": 13 | ||
901 | }, | ||
902 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
903 | "id": "service.crashHandler.headline", | ||
904 | "start": { | ||
905 | "column": 12, | ||
906 | "line": 10 | ||
907 | } | ||
908 | }, | ||
909 | { | ||
910 | "defaultMessage": "!!!{name} has caused an error.", | ||
911 | "end": { | ||
912 | "column": 3, | ||
913 | "line": 17 | ||
914 | }, | ||
915 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
916 | "id": "service.crashHandler.text", | ||
917 | "start": { | ||
918 | "column": 8, | ||
919 | "line": 14 | ||
920 | } | ||
921 | }, | ||
922 | { | ||
923 | "defaultMessage": "!!!Reload {name}", | ||
924 | "end": { | ||
925 | "column": 3, | ||
926 | "line": 21 | ||
927 | }, | ||
928 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
929 | "id": "service.crashHandler.action", | ||
930 | "start": { | ||
931 | "column": 10, | ||
932 | "line": 18 | ||
933 | } | ||
934 | }, | ||
935 | { | ||
936 | "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", | ||
937 | "end": { | ||
938 | "column": 3, | ||
939 | "line": 25 | ||
940 | }, | ||
941 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
942 | "id": "service.crashHandler.autoReload", | ||
943 | "start": { | ||
944 | "column": 14, | ||
945 | "line": 22 | ||
946 | } | ||
947 | } | ||
948 | ], | ||
949 | "path": "src/components/services/content/WebviewCrashHandler.json" | ||
950 | }, | ||
951 | { | ||
952 | "descriptors": [ | ||
953 | { | ||
954 | "defaultMessage": "!!!Reload", | ||
955 | "end": { | ||
956 | "column": 3, | ||
957 | "line": 18 | ||
958 | }, | ||
959 | "file": "src/components/services/tabs/TabItem.js", | ||
960 | "id": "tabs.item.reload", | ||
961 | "start": { | ||
962 | "column": 10, | ||
963 | "line": 15 | ||
964 | } | ||
965 | }, | ||
966 | { | ||
967 | "defaultMessage": "!!!Edit", | ||
968 | "end": { | ||
969 | "column": 3, | ||
970 | "line": 22 | ||
971 | }, | ||
972 | "file": "src/components/services/tabs/TabItem.js", | ||
973 | "id": "tabs.item.edit", | ||
974 | "start": { | ||
975 | "column": 8, | ||
976 | "line": 19 | ||
977 | } | ||
978 | }, | ||
979 | { | ||
980 | "defaultMessage": "!!!Disable notifications", | ||
981 | "end": { | ||
982 | "column": 3, | ||
983 | "line": 26 | ||
984 | }, | ||
985 | "file": "src/components/services/tabs/TabItem.js", | ||
986 | "id": "tabs.item.disableNotifications", | ||
987 | "start": { | ||
988 | "column": 24, | ||
989 | "line": 23 | ||
990 | } | ||
991 | }, | ||
992 | { | ||
993 | "defaultMessage": "!!!Enable notifications", | ||
994 | "end": { | ||
995 | "column": 3, | ||
996 | "line": 30 | ||
997 | }, | ||
998 | "file": "src/components/services/tabs/TabItem.js", | ||
999 | "id": "tabs.item.enableNotification", | ||
1000 | "start": { | ||
1001 | "column": 23, | ||
1002 | "line": 27 | ||
1003 | } | ||
1004 | }, | ||
1005 | { | ||
1006 | "defaultMessage": "!!!Disable audio", | ||
1007 | "end": { | ||
1008 | "column": 3, | ||
1009 | "line": 34 | ||
1010 | }, | ||
1011 | "file": "src/components/services/tabs/TabItem.js", | ||
1012 | "id": "tabs.item.disableAudio", | ||
1013 | "start": { | ||
1014 | "column": 16, | ||
1015 | "line": 31 | ||
1016 | } | ||
1017 | }, | ||
1018 | { | ||
1019 | "defaultMessage": "!!!Enable audio", | ||
1020 | "end": { | ||
1021 | "column": 3, | ||
1022 | "line": 38 | ||
1023 | }, | ||
1024 | "file": "src/components/services/tabs/TabItem.js", | ||
1025 | "id": "tabs.item.enableAudio", | ||
1026 | "start": { | ||
1027 | "column": 15, | ||
1028 | "line": 35 | ||
1029 | } | ||
1030 | }, | ||
1031 | { | ||
1032 | "defaultMessage": "!!!Disable Service", | ||
1033 | "end": { | ||
1034 | "column": 3, | ||
1035 | "line": 42 | ||
1036 | }, | ||
1037 | "file": "src/components/services/tabs/TabItem.js", | ||
1038 | "id": "tabs.item.disableService", | ||
1039 | "start": { | ||
1040 | "column": 18, | ||
1041 | "line": 39 | ||
1042 | } | ||
1043 | }, | ||
1044 | { | ||
1045 | "defaultMessage": "!!!Enable Service", | ||
1046 | "end": { | ||
1047 | "column": 3, | ||
1048 | "line": 46 | ||
1049 | }, | ||
1050 | "file": "src/components/services/tabs/TabItem.js", | ||
1051 | "id": "tabs.item.enableService", | ||
1052 | "start": { | ||
1053 | "column": 17, | ||
1054 | "line": 43 | ||
1055 | } | ||
1056 | }, | ||
1057 | { | ||
1058 | "defaultMessage": "!!!Delete Service", | ||
1059 | "end": { | ||
1060 | "column": 3, | ||
1061 | "line": 50 | ||
1062 | }, | ||
1063 | "file": "src/components/services/tabs/TabItem.js", | ||
1064 | "id": "tabs.item.deleteService", | ||
1065 | "start": { | ||
1066 | "column": 17, | ||
1067 | "line": 47 | ||
1068 | } | ||
1069 | } | ||
1070 | ], | ||
1071 | "path": "src/components/services/tabs/TabItem.json" | ||
1072 | }, | ||
1073 | { | ||
1074 | "descriptors": [ | ||
1075 | { | ||
1076 | "defaultMessage": "!!!Account", | ||
1077 | "end": { | ||
1078 | "column": 3, | ||
1079 | "line": 18 | ||
1080 | }, | ||
1081 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1082 | "id": "settings.account.headline", | ||
1083 | "start": { | ||
1084 | "column": 12, | ||
1085 | "line": 15 | ||
1086 | } | ||
1087 | }, | ||
1088 | { | ||
1089 | "defaultMessage": "!!!Your Subscription", | ||
1090 | "end": { | ||
1091 | "column": 3, | ||
1092 | "line": 22 | ||
1093 | }, | ||
1094 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1095 | "id": "settings.account.headlineSubscription", | ||
1096 | "start": { | ||
1097 | "column": 24, | ||
1098 | "line": 19 | ||
1099 | } | ||
1100 | }, | ||
1101 | { | ||
1102 | "defaultMessage": "!!!Upgrade your Account", | ||
1103 | "end": { | ||
1104 | "column": 3, | ||
1105 | "line": 26 | ||
1106 | }, | ||
1107 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1108 | "id": "settings.account.headlineUpgrade", | ||
1109 | "start": { | ||
1110 | "column": 19, | ||
1111 | "line": 23 | ||
1112 | } | ||
1113 | }, | ||
1114 | { | ||
1115 | "defaultMessage": "!!Invoices", | ||
1116 | "end": { | ||
1117 | "column": 3, | ||
1118 | "line": 30 | ||
1119 | }, | ||
1120 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1121 | "id": "settings.account.headlineInvoices", | ||
1122 | "start": { | ||
1123 | "column": 20, | ||
1124 | "line": 27 | ||
1125 | } | ||
1126 | }, | ||
1127 | { | ||
1128 | "defaultMessage": "!!Danger Zone", | ||
1129 | "end": { | ||
1130 | "column": 3, | ||
1131 | "line": 34 | ||
1132 | }, | ||
1133 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1134 | "id": "settings.account.headlineDangerZone", | ||
1135 | "start": { | ||
1136 | "column": 22, | ||
1137 | "line": 31 | ||
1138 | } | ||
1139 | }, | ||
1140 | { | ||
1141 | "defaultMessage": "!!!Manage your subscription", | ||
1142 | "end": { | ||
1143 | "column": 3, | ||
1144 | "line": 38 | ||
1145 | }, | ||
1146 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1147 | "id": "settings.account.manageSubscription.label", | ||
1148 | "start": { | ||
1149 | "column": 33, | ||
1150 | "line": 35 | ||
1151 | } | ||
1152 | }, | ||
1153 | { | ||
1154 | "defaultMessage": "!!!Basic Account", | ||
1155 | "end": { | ||
1156 | "column": 3, | ||
1157 | "line": 42 | ||
1158 | }, | ||
1159 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1160 | "id": "settings.account.accountType.basic", | ||
1161 | "start": { | ||
1162 | "column": 20, | ||
1163 | "line": 39 | ||
1164 | } | ||
1165 | }, | ||
1166 | { | ||
1167 | "defaultMessage": "!!!Premium Supporter Account", | ||
1168 | "end": { | ||
1169 | "column": 3, | ||
1170 | "line": 46 | ||
1171 | }, | ||
1172 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1173 | "id": "settings.account.accountType.premium", | ||
1174 | "start": { | ||
1175 | "column": 22, | ||
1176 | "line": 43 | ||
1177 | } | ||
1178 | }, | ||
1179 | { | ||
1180 | "defaultMessage": "!!!Edit Account", | ||
1181 | "end": { | ||
1182 | "column": 3, | ||
1183 | "line": 50 | ||
1184 | }, | ||
1185 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1186 | "id": "settings.account.account.editButton", | ||
1187 | "start": { | ||
1188 | "column": 21, | ||
1189 | "line": 47 | ||
1190 | } | ||
1191 | }, | ||
1192 | { | ||
1193 | "defaultMessage": "!!!Download", | ||
1194 | "end": { | ||
1195 | "column": 3, | ||
1196 | "line": 54 | ||
1197 | }, | ||
1198 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1199 | "id": "settings.account.invoiceDownload", | ||
1200 | "start": { | ||
1201 | "column": 19, | ||
1202 | "line": 51 | ||
1203 | } | ||
1204 | }, | ||
1205 | { | ||
1206 | "defaultMessage": "!!!Could not load user information", | ||
1207 | "end": { | ||
1208 | "column": 3, | ||
1209 | "line": 58 | ||
1210 | }, | ||
1211 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1212 | "id": "settings.account.userInfoRequestFailed", | ||
1213 | "start": { | ||
1214 | "column": 25, | ||
1215 | "line": 55 | ||
1216 | } | ||
1217 | }, | ||
1218 | { | ||
1219 | "defaultMessage": "!!!Try again", | ||
1220 | "end": { | ||
1221 | "column": 3, | ||
1222 | "line": 62 | ||
1223 | }, | ||
1224 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1225 | "id": "settings.account.tryReloadUserInfoRequest", | ||
1226 | "start": { | ||
1227 | "column": 28, | ||
1228 | "line": 59 | ||
1229 | } | ||
1230 | }, | ||
1231 | { | ||
1232 | "defaultMessage": "!!!Delete account", | ||
1233 | "end": { | ||
1234 | "column": 3, | ||
1235 | "line": 66 | ||
1236 | }, | ||
1237 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1238 | "id": "settings.account.deleteAccount", | ||
1239 | "start": { | ||
1240 | "column": 17, | ||
1241 | "line": 63 | ||
1242 | } | ||
1243 | }, | ||
1244 | { | ||
1245 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", | ||
1246 | "end": { | ||
1247 | "column": 3, | ||
1248 | "line": 70 | ||
1249 | }, | ||
1250 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1251 | "id": "settings.account.deleteInfo", | ||
1252 | "start": { | ||
1253 | "column": 14, | ||
1254 | "line": 67 | ||
1255 | } | ||
1256 | }, | ||
1257 | { | ||
1258 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | ||
1259 | "end": { | ||
1260 | "column": 3, | ||
1261 | "line": 74 | ||
1262 | }, | ||
1263 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1264 | "id": "settings.account.deleteEmailSent", | ||
1265 | "start": { | ||
1266 | "column": 19, | ||
1267 | "line": 71 | ||
1268 | } | ||
1269 | } | ||
1270 | ], | ||
1271 | "path": "src/components/settings/account/AccountDashboard.json" | ||
1272 | }, | ||
1273 | { | ||
1274 | "descriptors": [ | ||
1275 | { | ||
1276 | "defaultMessage": "!!!Available services", | ||
1277 | "end": { | ||
1278 | "column": 3, | ||
1279 | "line": 12 | ||
1280 | }, | ||
1281 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1282 | "id": "settings.navigation.availableServices", | ||
1283 | "start": { | ||
1284 | "column": 21, | ||
1285 | "line": 9 | ||
1286 | } | ||
1287 | }, | ||
1288 | { | ||
1289 | "defaultMessage": "!!!Your services", | ||
1290 | "end": { | ||
1291 | "column": 3, | ||
1292 | "line": 16 | ||
1293 | }, | ||
1294 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1295 | "id": "settings.navigation.yourServices", | ||
1296 | "start": { | ||
1297 | "column": 16, | ||
1298 | "line": 13 | ||
1299 | } | ||
1300 | }, | ||
1301 | { | ||
1302 | "defaultMessage": "!!!Account", | ||
1303 | "end": { | ||
1304 | "column": 3, | ||
1305 | "line": 20 | ||
1306 | }, | ||
1307 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1308 | "id": "settings.navigation.account", | ||
1309 | "start": { | ||
1310 | "column": 11, | ||
1311 | "line": 17 | ||
1312 | } | ||
1313 | }, | ||
1314 | { | ||
1315 | "defaultMessage": "!!!Settings", | ||
1316 | "end": { | ||
1317 | "column": 3, | ||
1318 | "line": 24 | ||
1319 | }, | ||
1320 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1321 | "id": "settings.navigation.settings", | ||
1322 | "start": { | ||
1323 | "column": 12, | ||
1324 | "line": 21 | ||
1325 | } | ||
1326 | }, | ||
1327 | { | ||
1328 | "defaultMessage": "!!!Invite Friends", | ||
1329 | "end": { | ||
1330 | "column": 3, | ||
1331 | "line": 28 | ||
1332 | }, | ||
1333 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1334 | "id": "settings.navigation.inviteFriends", | ||
1335 | "start": { | ||
1336 | "column": 17, | ||
1337 | "line": 25 | ||
1338 | } | ||
1339 | }, | ||
1340 | { | ||
1341 | "defaultMessage": "!!!Logout", | ||
1342 | "end": { | ||
1343 | "column": 3, | ||
1344 | "line": 32 | ||
1345 | }, | ||
1346 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
1347 | "id": "settings.navigation.logout", | ||
1348 | "start": { | ||
1349 | "column": 10, | ||
1350 | "line": 29 | ||
1351 | } | ||
1352 | } | ||
1353 | ], | ||
1354 | "path": "src/components/settings/navigation/SettingsNavigation.json" | ||
1355 | }, | ||
1356 | { | ||
1357 | "descriptors": [ | ||
1358 | { | ||
1359 | "defaultMessage": "!!!Available Services", | ||
1360 | "end": { | ||
1361 | "column": 3, | ||
1362 | "line": 18 | ||
1363 | }, | ||
1364 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1365 | "id": "settings.recipes.headline", | ||
1366 | "start": { | ||
1367 | "column": 12, | ||
1368 | "line": 15 | ||
1369 | } | ||
1370 | }, | ||
1371 | { | ||
1372 | "defaultMessage": "!!!Search service", | ||
1373 | "end": { | ||
1374 | "column": 3, | ||
1375 | "line": 22 | ||
1376 | }, | ||
1377 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1378 | "id": "settings.searchService", | ||
1379 | "start": { | ||
1380 | "column": 17, | ||
1381 | "line": 19 | ||
1382 | } | ||
1383 | }, | ||
1384 | { | ||
1385 | "defaultMessage": "!!!Most popular", | ||
1386 | "end": { | ||
1387 | "column": 3, | ||
1388 | "line": 26 | ||
1389 | }, | ||
1390 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1391 | "id": "settings.recipes.mostPopular", | ||
1392 | "start": { | ||
1393 | "column": 22, | ||
1394 | "line": 23 | ||
1395 | } | ||
1396 | }, | ||
1397 | { | ||
1398 | "defaultMessage": "!!!All services", | ||
1399 | "end": { | ||
1400 | "column": 3, | ||
1401 | "line": 30 | ||
1402 | }, | ||
1403 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1404 | "id": "settings.recipes.all", | ||
1405 | "start": { | ||
1406 | "column": 14, | ||
1407 | "line": 27 | ||
1408 | } | ||
1409 | }, | ||
1410 | { | ||
1411 | "defaultMessage": "!!!Development", | ||
1412 | "end": { | ||
1413 | "column": 3, | ||
1414 | "line": 34 | ||
1415 | }, | ||
1416 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1417 | "id": "settings.recipes.dev", | ||
1418 | "start": { | ||
1419 | "column": 14, | ||
1420 | "line": 31 | ||
1421 | } | ||
1422 | }, | ||
1423 | { | ||
1424 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | ||
1425 | "end": { | ||
1426 | "column": 3, | ||
1427 | "line": 38 | ||
1428 | }, | ||
1429 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1430 | "id": "settings.recipes.nothingFound", | ||
1431 | "start": { | ||
1432 | "column": 16, | ||
1433 | "line": 35 | ||
1434 | } | ||
1435 | }, | ||
1436 | { | ||
1437 | "defaultMessage": "!!!Service successfully added", | ||
1438 | "end": { | ||
1439 | "column": 3, | ||
1440 | "line": 42 | ||
1441 | }, | ||
1442 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1443 | "id": "settings.recipes.servicesSuccessfulAddedInfo", | ||
1444 | "start": { | ||
1445 | "column": 31, | ||
1446 | "line": 39 | ||
1447 | } | ||
1448 | }, | ||
1449 | { | ||
1450 | "defaultMessage": "!!!Missing a service?", | ||
1451 | "end": { | ||
1452 | "column": 3, | ||
1453 | "line": 46 | ||
1454 | }, | ||
1455 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1456 | "id": "settings.recipes.missingService", | ||
1457 | "start": { | ||
1458 | "column": 18, | ||
1459 | "line": 43 | ||
1460 | } | ||
1461 | } | ||
1462 | ], | ||
1463 | "path": "src/components/settings/recipes/RecipesDashboard.json" | ||
1464 | }, | ||
1465 | { | ||
1466 | "descriptors": [ | ||
1467 | { | ||
1468 | "defaultMessage": "!!!Save service", | ||
1469 | "end": { | ||
1470 | "column": 3, | ||
1471 | "line": 25 | ||
1472 | }, | ||
1473 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1474 | "id": "settings.service.form.saveButton", | ||
1475 | "start": { | ||
1476 | "column": 15, | ||
1477 | "line": 22 | ||
1478 | } | ||
1479 | }, | ||
1480 | { | ||
1481 | "defaultMessage": "!!!Delete Service", | ||
1482 | "end": { | ||
1483 | "column": 3, | ||
1484 | "line": 29 | ||
1485 | }, | ||
1486 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1487 | "id": "settings.service.form.deleteButton", | ||
1488 | "start": { | ||
1489 | "column": 17, | ||
1490 | "line": 26 | ||
1491 | } | ||
1492 | }, | ||
1493 | { | ||
1494 | "defaultMessage": "!!!Available services", | ||
1495 | "end": { | ||
1496 | "column": 3, | ||
1497 | "line": 33 | ||
1498 | }, | ||
1499 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1500 | "id": "settings.service.form.availableServices", | ||
1501 | "start": { | ||
1502 | "column": 21, | ||
1503 | "line": 30 | ||
1504 | } | ||
1505 | }, | ||
1506 | { | ||
1507 | "defaultMessage": "!!!Your services", | ||
1508 | "end": { | ||
1509 | "column": 3, | ||
1510 | "line": 37 | ||
1511 | }, | ||
1512 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1513 | "id": "settings.service.form.yourServices", | ||
1514 | "start": { | ||
1515 | "column": 16, | ||
1516 | "line": 34 | ||
1517 | } | ||
1518 | }, | ||
1519 | { | ||
1520 | "defaultMessage": "!!!Add {name}", | ||
1521 | "end": { | ||
1522 | "column": 3, | ||
1523 | "line": 41 | ||
1524 | }, | ||
1525 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1526 | "id": "settings.service.form.addServiceHeadline", | ||
1527 | "start": { | ||
1528 | "column": 22, | ||
1529 | "line": 38 | ||
1530 | } | ||
1531 | }, | ||
1532 | { | ||
1533 | "defaultMessage": "!!!Edit {name}", | ||
1534 | "end": { | ||
1535 | "column": 3, | ||
1536 | "line": 45 | ||
1537 | }, | ||
1538 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1539 | "id": "settings.service.form.editServiceHeadline", | ||
1540 | "start": { | ||
1541 | "column": 23, | ||
1542 | "line": 42 | ||
1543 | } | ||
1544 | }, | ||
1545 | { | ||
1546 | "defaultMessage": "!!!Hosted", | ||
1547 | "end": { | ||
1548 | "column": 3, | ||
1549 | "line": 49 | ||
1550 | }, | ||
1551 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1552 | "id": "settings.service.form.tabHosted", | ||
1553 | "start": { | ||
1554 | "column": 13, | ||
1555 | "line": 46 | ||
1556 | } | ||
1557 | }, | ||
1558 | { | ||
1559 | "defaultMessage": "!!!Self hosted âï¸", | ||
1560 | "end": { | ||
1561 | "column": 3, | ||
1562 | "line": 53 | ||
1563 | }, | ||
1564 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1565 | "id": "settings.service.form.tabOnPremise", | ||
1566 | "start": { | ||
1567 | "column": 16, | ||
1568 | "line": 50 | ||
1569 | } | ||
1570 | }, | ||
1571 | { | ||
1572 | "defaultMessage": "!!!Use the hosted {name} service.", | ||
1573 | "end": { | ||
1574 | "column": 3, | ||
1575 | "line": 57 | ||
1576 | }, | ||
1577 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1578 | "id": "settings.service.form.useHostedService", | ||
1579 | "start": { | ||
1580 | "column": 20, | ||
1581 | "line": 54 | ||
1582 | } | ||
1583 | }, | ||
1584 | { | ||
1585 | "defaultMessage": "!!!Could not validate custom {name} server.", | ||
1586 | "end": { | ||
1587 | "column": 3, | ||
1588 | "line": 61 | ||
1589 | }, | ||
1590 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1591 | "id": "settings.service.form.customUrlValidationError", | ||
1592 | "start": { | ||
1593 | "column": 28, | ||
1594 | "line": 58 | ||
1595 | } | ||
1596 | }, | ||
1597 | { | ||
1598 | "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", | ||
1599 | "end": { | ||
1600 | "column": 3, | ||
1601 | "line": 65 | ||
1602 | }, | ||
1603 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1604 | "id": "settings.service.form.customUrlPremiumInfo", | ||
1605 | "start": { | ||
1606 | "column": 24, | ||
1607 | "line": 62 | ||
1608 | } | ||
1609 | }, | ||
1610 | { | ||
1611 | "defaultMessage": "!!!Upgrade your account", | ||
1612 | "end": { | ||
1613 | "column": 3, | ||
1614 | "line": 69 | ||
1615 | }, | ||
1616 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1617 | "id": "settings.service.form.customUrlUpgradeAccount", | ||
1618 | "start": { | ||
1619 | "column": 27, | ||
1620 | "line": 66 | ||
1621 | } | ||
1622 | }, | ||
1623 | { | ||
1624 | "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | ||
1625 | "end": { | ||
1626 | "column": 3, | ||
1627 | "line": 73 | ||
1628 | }, | ||
1629 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1630 | "id": "settings.service.form.indirectMessageInfo", | ||
1631 | "start": { | ||
1632 | "column": 23, | ||
1633 | "line": 70 | ||
1634 | } | ||
1635 | }, | ||
1636 | { | ||
1637 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", | ||
1638 | "end": { | ||
1639 | "column": 3, | ||
1640 | "line": 77 | ||
1641 | }, | ||
1642 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1643 | "id": "settings.service.form.isMutedInfo", | ||
1644 | "start": { | ||
1645 | "column": 15, | ||
1646 | "line": 74 | ||
1647 | } | ||
1648 | }, | ||
1649 | { | ||
1650 | "defaultMessage": "!!!Notifications", | ||
1651 | "end": { | ||
1652 | "column": 3, | ||
1653 | "line": 81 | ||
1654 | }, | ||
1655 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1656 | "id": "settings.service.form.headlineNotifications", | ||
1657 | "start": { | ||
1658 | "column": 25, | ||
1659 | "line": 78 | ||
1660 | } | ||
1661 | }, | ||
1662 | { | ||
1663 | "defaultMessage": "!!!Unread message badges", | ||
1664 | "end": { | ||
1665 | "column": 3, | ||
1666 | "line": 85 | ||
1667 | }, | ||
1668 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1669 | "id": "settings.service.form.headlineBadges", | ||
1670 | "start": { | ||
1671 | "column": 18, | ||
1672 | "line": 82 | ||
1673 | } | ||
1674 | }, | ||
1675 | { | ||
1676 | "defaultMessage": "!!!General", | ||
1677 | "end": { | ||
1678 | "column": 3, | ||
1679 | "line": 89 | ||
1680 | }, | ||
1681 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1682 | "id": "settings.service.form.headlineGeneral", | ||
1683 | "start": { | ||
1684 | "column": 19, | ||
1685 | "line": 86 | ||
1686 | } | ||
1687 | }, | ||
1688 | { | ||
1689 | "defaultMessage": "!!!Delete", | ||
1690 | "end": { | ||
1691 | "column": 3, | ||
1692 | "line": 93 | ||
1693 | }, | ||
1694 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1695 | "id": "settings.service.form.iconDelete", | ||
1696 | "start": { | ||
1697 | "column": 14, | ||
1698 | "line": 90 | ||
1699 | } | ||
1700 | }, | ||
1701 | { | ||
1702 | "defaultMessage": "!!!Drop your image, or click here", | ||
1703 | "end": { | ||
1704 | "column": 3, | ||
1705 | "line": 97 | ||
1706 | }, | ||
1707 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1708 | "id": "settings.service.form.iconUpload", | ||
1709 | "start": { | ||
1710 | "column": 14, | ||
1711 | "line": 94 | ||
1712 | } | ||
1713 | }, | ||
1714 | { | ||
1715 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", | ||
1716 | "end": { | ||
1717 | "column": 3, | ||
1718 | "line": 101 | ||
1719 | }, | ||
1720 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1721 | "id": "settings.service.form.proxy.headline", | ||
1722 | "start": { | ||
1723 | "column": 17, | ||
1724 | "line": 98 | ||
1725 | } | ||
1726 | }, | ||
1727 | { | ||
1728 | "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", | ||
1729 | "end": { | ||
1730 | "column": 3, | ||
1731 | "line": 105 | ||
1732 | }, | ||
1733 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1734 | "id": "settings.service.form.proxy.restartInfo", | ||
1735 | "start": { | ||
1736 | "column": 20, | ||
1737 | "line": 102 | ||
1738 | } | ||
1739 | }, | ||
1740 | { | ||
1741 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", | ||
1742 | "end": { | ||
1743 | "column": 3, | ||
1744 | "line": 109 | ||
1745 | }, | ||
1746 | "file": "src/components/settings/services/EditServiceForm.js", | ||
1747 | "id": "settings.service.form.proxy.info", | ||
1748 | "start": { | ||
1749 | "column": 13, | ||
1750 | "line": 106 | ||
1751 | } | ||
1752 | } | ||
1753 | ], | ||
1754 | "path": "src/components/settings/services/EditServiceForm.json" | ||
1755 | }, | ||
1756 | { | ||
1757 | "descriptors": [ | ||
1758 | { | ||
1759 | "defaultMessage": "!!!Error", | ||
1760 | "end": { | ||
1761 | "column": 3, | ||
1762 | "line": 13 | ||
1763 | }, | ||
1764 | "file": "src/components/settings/services/ServiceError.js", | ||
1765 | "id": "settings.service.error.headline", | ||
1766 | "start": { | ||
1767 | "column": 12, | ||
1768 | "line": 10 | ||
1769 | } | ||
1770 | }, | ||
1771 | { | ||
1772 | "defaultMessage": "!!!Back to services", | ||
1773 | "end": { | ||
1774 | "column": 3, | ||
1775 | "line": 17 | ||
1776 | }, | ||
1777 | "file": "src/components/settings/services/ServiceError.js", | ||
1778 | "id": "settings.service.error.goBack", | ||
1779 | "start": { | ||
1780 | "column": 10, | ||
1781 | "line": 14 | ||
1782 | } | ||
1783 | }, | ||
1784 | { | ||
1785 | "defaultMessage": "!!!Available services", | ||
1786 | "end": { | ||
1787 | "column": 3, | ||
1788 | "line": 21 | ||
1789 | }, | ||
1790 | "file": "src/components/settings/services/ServiceError.js", | ||
1791 | "id": "settings.service.form.availableServices", | ||
1792 | "start": { | ||
1793 | "column": 21, | ||
1794 | "line": 18 | ||
1795 | } | ||
1796 | }, | ||
1797 | { | ||
1798 | "defaultMessage": "!!!Could not load service recipe.", | ||
1799 | "end": { | ||
1800 | "column": 3, | ||
1801 | "line": 25 | ||
1802 | }, | ||
1803 | "file": "src/components/settings/services/ServiceError.js", | ||
1804 | "id": "settings.service.error.message", | ||
1805 | "start": { | ||
1806 | "column": 16, | ||
1807 | "line": 22 | ||
1808 | } | ||
1809 | } | ||
1810 | ], | ||
1811 | "path": "src/components/settings/services/ServiceError.json" | ||
1812 | }, | ||
1813 | { | ||
1814 | "descriptors": [ | ||
1815 | { | ||
1816 | "defaultMessage": "!!!Service is disabled", | ||
1817 | "end": { | ||
1818 | "column": 3, | ||
1819 | "line": 14 | ||
1820 | }, | ||
1821 | "file": "src/components/settings/services/ServiceItem.js", | ||
1822 | "id": "settings.services.tooltip.isDisabled", | ||
1823 | "start": { | ||
1824 | "column": 21, | ||
1825 | "line": 11 | ||
1826 | } | ||
1827 | }, | ||
1828 | { | ||
1829 | "defaultMessage": "!!!Notifications are disabled", | ||
1830 | "end": { | ||
1831 | "column": 3, | ||
1832 | "line": 18 | ||
1833 | }, | ||
1834 | "file": "src/components/settings/services/ServiceItem.js", | ||
1835 | "id": "settings.services.tooltip.notificationsDisabled", | ||
1836 | "start": { | ||
1837 | "column": 32, | ||
1838 | "line": 15 | ||
1839 | } | ||
1840 | }, | ||
1841 | { | ||
1842 | "defaultMessage": "!!!All sounds are muted", | ||
1843 | "end": { | ||
1844 | "column": 3, | ||
1845 | "line": 22 | ||
1846 | }, | ||
1847 | "file": "src/components/settings/services/ServiceItem.js", | ||
1848 | "id": "settings.services.tooltip.isMuted", | ||
1849 | "start": { | ||
1850 | "column": 18, | ||
1851 | "line": 19 | ||
1852 | } | ||
1853 | } | ||
1854 | ], | ||
1855 | "path": "src/components/settings/services/ServiceItem.json" | ||
1856 | }, | ||
1857 | { | ||
1858 | "descriptors": [ | ||
1859 | { | ||
1860 | "defaultMessage": "!!!Your services", | ||
1861 | "end": { | ||
1862 | "column": 3, | ||
1863 | "line": 17 | ||
1864 | }, | ||
1865 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1866 | "id": "settings.services.headline", | ||
1867 | "start": { | ||
1868 | "column": 12, | ||
1869 | "line": 14 | ||
1870 | } | ||
1871 | }, | ||
1872 | { | ||
1873 | "defaultMessage": "!!!Search service", | ||
1874 | "end": { | ||
1875 | "column": 3, | ||
1876 | "line": 21 | ||
1877 | }, | ||
1878 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1879 | "id": "settings.searchService", | ||
1880 | "start": { | ||
1881 | "column": 17, | ||
1882 | "line": 18 | ||
1883 | } | ||
1884 | }, | ||
1885 | { | ||
1886 | "defaultMessage": "!!!You haven't added any services yet.", | ||
1887 | "end": { | ||
1888 | "column": 3, | ||
1889 | "line": 25 | ||
1890 | }, | ||
1891 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1892 | "id": "settings.services.noServicesAdded", | ||
1893 | "start": { | ||
1894 | "column": 19, | ||
1895 | "line": 22 | ||
1896 | } | ||
1897 | }, | ||
1898 | { | ||
1899 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | ||
1900 | "end": { | ||
1901 | "column": 3, | ||
1902 | "line": 29 | ||
1903 | }, | ||
1904 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1905 | "id": "settings.recipes.nothingFound", | ||
1906 | "start": { | ||
1907 | "column": 18, | ||
1908 | "line": 26 | ||
1909 | } | ||
1910 | }, | ||
1911 | { | ||
1912 | "defaultMessage": "!!!Discover services", | ||
1913 | "end": { | ||
1914 | "column": 3, | ||
1915 | "line": 33 | ||
1916 | }, | ||
1917 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1918 | "id": "settings.services.discoverServices", | ||
1919 | "start": { | ||
1920 | "column": 20, | ||
1921 | "line": 30 | ||
1922 | } | ||
1923 | }, | ||
1924 | { | ||
1925 | "defaultMessage": "!!!Could not load your services", | ||
1926 | "end": { | ||
1927 | "column": 3, | ||
1928 | "line": 37 | ||
1929 | }, | ||
1930 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1931 | "id": "settings.services.servicesRequestFailed", | ||
1932 | "start": { | ||
1933 | "column": 25, | ||
1934 | "line": 34 | ||
1935 | } | ||
1936 | }, | ||
1937 | { | ||
1938 | "defaultMessage": "!!!Try again", | ||
1939 | "end": { | ||
1940 | "column": 3, | ||
1941 | "line": 41 | ||
1942 | }, | ||
1943 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1944 | "id": "settings.account.tryReloadServices", | ||
1945 | "start": { | ||
1946 | "column": 21, | ||
1947 | "line": 38 | ||
1948 | } | ||
1949 | }, | ||
1950 | { | ||
1951 | "defaultMessage": "!!!Your changes have been saved", | ||
1952 | "end": { | ||
1953 | "column": 3, | ||
1954 | "line": 45 | ||
1955 | }, | ||
1956 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1957 | "id": "settings.services.updatedInfo", | ||
1958 | "start": { | ||
1959 | "column": 15, | ||
1960 | "line": 42 | ||
1961 | } | ||
1962 | }, | ||
1963 | { | ||
1964 | "defaultMessage": "!!!Service has been deleted", | ||
1965 | "end": { | ||
1966 | "column": 3, | ||
1967 | "line": 49 | ||
1968 | }, | ||
1969 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
1970 | "id": "settings.services.deletedInfo", | ||
1971 | "start": { | ||
1972 | "column": 15, | ||
1973 | "line": 46 | ||
1974 | } | ||
1975 | } | ||
1976 | ], | ||
1977 | "path": "src/components/settings/services/ServicesDashboard.json" | ||
1978 | }, | ||
1979 | { | ||
1980 | "descriptors": [ | ||
1981 | { | ||
1982 | "defaultMessage": "!!!Settings", | ||
1983 | "end": { | ||
1984 | "column": 3, | ||
1985 | "line": 19 | ||
1986 | }, | ||
1987 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
1988 | "id": "settings.app.headline", | ||
1989 | "start": { | ||
1990 | "column": 12, | ||
1991 | "line": 16 | ||
1992 | } | ||
1993 | }, | ||
1994 | { | ||
1995 | "defaultMessage": "!!!General", | ||
1996 | "end": { | ||
1997 | "column": 3, | ||
1998 | "line": 23 | ||
1999 | }, | ||
2000 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2001 | "id": "settings.app.headlineGeneral", | ||
2002 | "start": { | ||
2003 | "column": 19, | ||
2004 | "line": 20 | ||
2005 | } | ||
2006 | }, | ||
2007 | { | ||
2008 | "defaultMessage": "!!!Language", | ||
2009 | "end": { | ||
2010 | "column": 3, | ||
2011 | "line": 27 | ||
2012 | }, | ||
2013 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2014 | "id": "settings.app.headlineLanguage", | ||
2015 | "start": { | ||
2016 | "column": 20, | ||
2017 | "line": 24 | ||
2018 | } | ||
2019 | }, | ||
2020 | { | ||
2021 | "defaultMessage": "!!!Updates", | ||
2022 | "end": { | ||
2023 | "column": 3, | ||
2024 | "line": 31 | ||
2025 | }, | ||
2026 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2027 | "id": "settings.app.headlineUpdates", | ||
2028 | "start": { | ||
2029 | "column": 19, | ||
2030 | "line": 28 | ||
2031 | } | ||
2032 | }, | ||
2033 | { | ||
2034 | "defaultMessage": "!!!Appearance", | ||
2035 | "end": { | ||
2036 | "column": 3, | ||
2037 | "line": 35 | ||
2038 | }, | ||
2039 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2040 | "id": "settings.app.headlineAppearance", | ||
2041 | "start": { | ||
2042 | "column": 22, | ||
2043 | "line": 32 | ||
2044 | } | ||
2045 | }, | ||
2046 | { | ||
2047 | "defaultMessage": "!!!Advanced", | ||
2048 | "end": { | ||
2049 | "column": 3, | ||
2050 | "line": 39 | ||
2051 | }, | ||
2052 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2053 | "id": "settings.app.headlineAdvanced", | ||
2054 | "start": { | ||
2055 | "column": 20, | ||
2056 | "line": 36 | ||
2057 | } | ||
2058 | }, | ||
2059 | { | ||
2060 | "defaultMessage": "!!!Help us to translate Franz into your language.", | ||
2061 | "end": { | ||
2062 | "column": 3, | ||
2063 | "line": 43 | ||
2064 | }, | ||
2065 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2066 | "id": "settings.app.translationHelp", | ||
2067 | "start": { | ||
2068 | "column": 19, | ||
2069 | "line": 40 | ||
2070 | } | ||
2071 | }, | ||
2072 | { | ||
2073 | "defaultMessage": "!!!Cache", | ||
2074 | "end": { | ||
2075 | "column": 3, | ||
2076 | "line": 47 | ||
2077 | }, | ||
2078 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2079 | "id": "settings.app.subheadlineCache", | ||
2080 | "start": { | ||
2081 | "column": 20, | ||
2082 | "line": 44 | ||
2083 | } | ||
2084 | }, | ||
2085 | { | ||
2086 | "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", | ||
2087 | "end": { | ||
2088 | "column": 3, | ||
2089 | "line": 51 | ||
2090 | }, | ||
2091 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2092 | "id": "settings.app.cacheInfo", | ||
2093 | "start": { | ||
2094 | "column": 13, | ||
2095 | "line": 48 | ||
2096 | } | ||
2097 | }, | ||
2098 | { | ||
2099 | "defaultMessage": "!!!Clear cache", | ||
2100 | "end": { | ||
2101 | "column": 3, | ||
2102 | "line": 55 | ||
2103 | }, | ||
2104 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2105 | "id": "settings.app.buttonClearAllCache", | ||
2106 | "start": { | ||
2107 | "column": 23, | ||
2108 | "line": 52 | ||
2109 | } | ||
2110 | }, | ||
2111 | { | ||
2112 | "defaultMessage": "!!!Check for updates", | ||
2113 | "end": { | ||
2114 | "column": 3, | ||
2115 | "line": 59 | ||
2116 | }, | ||
2117 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2118 | "id": "settings.app.buttonSearchForUpdate", | ||
2119 | "start": { | ||
2120 | "column": 25, | ||
2121 | "line": 56 | ||
2122 | } | ||
2123 | }, | ||
2124 | { | ||
2125 | "defaultMessage": "!!!Restart & install update", | ||
2126 | "end": { | ||
2127 | "column": 3, | ||
2128 | "line": 63 | ||
2129 | }, | ||
2130 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2131 | "id": "settings.app.buttonInstallUpdate", | ||
2132 | "start": { | ||
2133 | "column": 23, | ||
2134 | "line": 60 | ||
2135 | } | ||
2136 | }, | ||
2137 | { | ||
2138 | "defaultMessage": "!!!Is searching for update", | ||
2139 | "end": { | ||
2140 | "column": 3, | ||
2141 | "line": 67 | ||
2142 | }, | ||
2143 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2144 | "id": "settings.app.updateStatusSearching", | ||
2145 | "start": { | ||
2146 | "column": 25, | ||
2147 | "line": 64 | ||
2148 | } | ||
2149 | }, | ||
2150 | { | ||
2151 | "defaultMessage": "!!!Update available, downloading...", | ||
2152 | "end": { | ||
2153 | "column": 3, | ||
2154 | "line": 71 | ||
2155 | }, | ||
2156 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2157 | "id": "settings.app.updateStatusAvailable", | ||
2158 | "start": { | ||
2159 | "column": 25, | ||
2160 | "line": 68 | ||
2161 | } | ||
2162 | }, | ||
2163 | { | ||
2164 | "defaultMessage": "!!!You are using the latest version of Franz", | ||
2165 | "end": { | ||
2166 | "column": 3, | ||
2167 | "line": 75 | ||
2168 | }, | ||
2169 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2170 | "id": "settings.app.updateStatusUpToDate", | ||
2171 | "start": { | ||
2172 | "column": 24, | ||
2173 | "line": 72 | ||
2174 | } | ||
2175 | }, | ||
2176 | { | ||
2177 | "defaultMessage": "!!!Current version:", | ||
2178 | "end": { | ||
2179 | "column": 3, | ||
2180 | "line": 79 | ||
2181 | }, | ||
2182 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2183 | "id": "settings.app.currentVersion", | ||
2184 | "start": { | ||
2185 | "column": 18, | ||
2186 | "line": 76 | ||
2187 | } | ||
2188 | }, | ||
2189 | { | ||
2190 | "defaultMessage": "!!!Changes require restart", | ||
2191 | "end": { | ||
2192 | "column": 3, | ||
2193 | "line": 83 | ||
2194 | }, | ||
2195 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2196 | "id": "settings.app.restartRequired", | ||
2197 | "start": { | ||
2198 | "column": 29, | ||
2199 | "line": 80 | ||
2200 | } | ||
2201 | } | ||
2202 | ], | ||
2203 | "path": "src/components/settings/settings/EditSettingsForm.json" | ||
2204 | }, | ||
2205 | { | ||
2206 | "descriptors": [ | ||
2207 | { | ||
2208 | "defaultMessage": "!!!Account", | ||
2209 | "end": { | ||
2210 | "column": 3, | ||
2211 | "line": 18 | ||
2212 | }, | ||
2213 | "file": "src/components/settings/user/EditUserForm.js", | ||
2214 | "id": "settings.account.headline", | ||
2215 | "start": { | ||
2216 | "column": 12, | ||
2217 | "line": 15 | ||
2218 | } | ||
2219 | }, | ||
2220 | { | ||
2221 | "defaultMessage": "!!!Update Profile", | ||
2222 | "end": { | ||
2223 | "column": 3, | ||
2224 | "line": 22 | ||
2225 | }, | ||
2226 | "file": "src/components/settings/user/EditUserForm.js", | ||
2227 | "id": "settings.account.headlineProfile", | ||
2228 | "start": { | ||
2229 | "column": 19, | ||
2230 | "line": 19 | ||
2231 | } | ||
2232 | }, | ||
2233 | { | ||
2234 | "defaultMessage": "!!!Account Information", | ||
2235 | "end": { | ||
2236 | "column": 3, | ||
2237 | "line": 26 | ||
2238 | }, | ||
2239 | "file": "src/components/settings/user/EditUserForm.js", | ||
2240 | "id": "settings.account.headlineAccount", | ||
2241 | "start": { | ||
2242 | "column": 19, | ||
2243 | "line": 23 | ||
2244 | } | ||
2245 | }, | ||
2246 | { | ||
2247 | "defaultMessage": "!!!Change Password", | ||
2248 | "end": { | ||
2249 | "column": 3, | ||
2250 | "line": 30 | ||
2251 | }, | ||
2252 | "file": "src/components/settings/user/EditUserForm.js", | ||
2253 | "id": "settings.account.headlinePassword", | ||
2254 | "start": { | ||
2255 | "column": 20, | ||
2256 | "line": 27 | ||
2257 | } | ||
2258 | }, | ||
2259 | { | ||
2260 | "defaultMessage": "!!!Your changes have been saved", | ||
2261 | "end": { | ||
2262 | "column": 3, | ||
2263 | "line": 34 | ||
2264 | }, | ||
2265 | "file": "src/components/settings/user/EditUserForm.js", | ||
2266 | "id": "settings.account.successInfo", | ||
2267 | "start": { | ||
2268 | "column": 15, | ||
2269 | "line": 31 | ||
2270 | } | ||
2271 | }, | ||
2272 | { | ||
2273 | "defaultMessage": "!!!Update profile", | ||
2274 | "end": { | ||
2275 | "column": 3, | ||
2276 | "line": 38 | ||
2277 | }, | ||
2278 | "file": "src/components/settings/user/EditUserForm.js", | ||
2279 | "id": "settings.account.buttonSave", | ||
2280 | "start": { | ||
2281 | "column": 14, | ||
2282 | "line": 35 | ||
2283 | } | ||
2284 | } | ||
2285 | ], | ||
2286 | "path": "src/components/settings/user/EditUserForm.json" | ||
2287 | }, | ||
2288 | { | ||
2289 | "descriptors": [ | ||
2290 | { | ||
2291 | "defaultMessage": "!!!Support the development of Franz", | ||
2292 | "end": { | ||
2293 | "column": 3, | ||
2294 | "line": 17 | ||
2295 | }, | ||
2296 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2297 | "id": "subscription.submit.label", | ||
2298 | "start": { | ||
2299 | "column": 21, | ||
2300 | "line": 14 | ||
2301 | } | ||
2302 | }, | ||
2303 | { | ||
2304 | "defaultMessage": "!!!Could not initialize payment form", | ||
2305 | "end": { | ||
2306 | "column": 3, | ||
2307 | "line": 21 | ||
2308 | }, | ||
2309 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2310 | "id": "subscription.paymentSessionError", | ||
2311 | "start": { | ||
2312 | "column": 23, | ||
2313 | "line": 18 | ||
2314 | } | ||
2315 | }, | ||
2316 | { | ||
2317 | "defaultMessage": "!!!free", | ||
2318 | "end": { | ||
2319 | "column": 3, | ||
2320 | "line": 25 | ||
2321 | }, | ||
2322 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2323 | "id": "subscription.type.free", | ||
2324 | "start": { | ||
2325 | "column": 12, | ||
2326 | "line": 22 | ||
2327 | } | ||
2328 | }, | ||
2329 | { | ||
2330 | "defaultMessage": "!!!month", | ||
2331 | "end": { | ||
2332 | "column": 3, | ||
2333 | "line": 29 | ||
2334 | }, | ||
2335 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2336 | "id": "subscription.type.month", | ||
2337 | "start": { | ||
2338 | "column": 15, | ||
2339 | "line": 26 | ||
2340 | } | ||
2341 | }, | ||
2342 | { | ||
2343 | "defaultMessage": "!!!year", | ||
2344 | "end": { | ||
2345 | "column": 3, | ||
2346 | "line": 33 | ||
2347 | }, | ||
2348 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2349 | "id": "subscription.type.year", | ||
2350 | "start": { | ||
2351 | "column": 14, | ||
2352 | "line": 30 | ||
2353 | } | ||
2354 | }, | ||
2355 | { | ||
2356 | "defaultMessage": "!!!The Franz Premium Supporter Account includes", | ||
2357 | "end": { | ||
2358 | "column": 3, | ||
2359 | "line": 37 | ||
2360 | }, | ||
2361 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2362 | "id": "subscription.includedFeatures", | ||
2363 | "start": { | ||
2364 | "column": 20, | ||
2365 | "line": 34 | ||
2366 | } | ||
2367 | }, | ||
2368 | { | ||
2369 | "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", | ||
2370 | "end": { | ||
2371 | "column": 3, | ||
2372 | "line": 41 | ||
2373 | }, | ||
2374 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2375 | "id": "subscription.features.onpremise.mattermost", | ||
2376 | "start": { | ||
2377 | "column": 13, | ||
2378 | "line": 38 | ||
2379 | } | ||
2380 | }, | ||
2381 | { | ||
2382 | "defaultMessage": "!!!No app delays & nagging to upgrade license", | ||
2383 | "end": { | ||
2384 | "column": 3, | ||
2385 | "line": 45 | ||
2386 | }, | ||
2387 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2388 | "id": "subscription.features.noInterruptions", | ||
2389 | "start": { | ||
2390 | "column": 19, | ||
2391 | "line": 42 | ||
2392 | } | ||
2393 | }, | ||
2394 | { | ||
2395 | "defaultMessage": "!!!Proxy support for services", | ||
2396 | "end": { | ||
2397 | "column": 3, | ||
2398 | "line": 49 | ||
2399 | }, | ||
2400 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2401 | "id": "subscription.features.proxy", | ||
2402 | "start": { | ||
2403 | "column": 9, | ||
2404 | "line": 46 | ||
2405 | } | ||
2406 | }, | ||
2407 | { | ||
2408 | "defaultMessage": "!!!Support for Spellchecker", | ||
2409 | "end": { | ||
2410 | "column": 3, | ||
2411 | "line": 53 | ||
2412 | }, | ||
2413 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2414 | "id": "subscription.features.spellchecker", | ||
2415 | "start": { | ||
2416 | "column": 16, | ||
2417 | "line": 50 | ||
2418 | } | ||
2419 | }, | ||
2420 | { | ||
2421 | "defaultMessage": "!!!No ads, ever!", | ||
2422 | "end": { | ||
2423 | "column": 3, | ||
2424 | "line": 57 | ||
2425 | }, | ||
2426 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2427 | "id": "subscription.features.ads", | ||
2428 | "start": { | ||
2429 | "column": 7, | ||
2430 | "line": 54 | ||
2431 | } | ||
2432 | }, | ||
2433 | { | ||
2434 | "defaultMessage": "!!!coming soon", | ||
2435 | "end": { | ||
2436 | "column": 3, | ||
2437 | "line": 61 | ||
2438 | }, | ||
2439 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2440 | "id": "subscription.features.comingSoon", | ||
2441 | "start": { | ||
2442 | "column": 14, | ||
2443 | "line": 58 | ||
2444 | } | ||
2445 | }, | ||
2446 | { | ||
2447 | "defaultMessage": "!!!EU residents: local sales tax may apply", | ||
2448 | "end": { | ||
2449 | "column": 3, | ||
2450 | "line": 65 | ||
2451 | }, | ||
2452 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2453 | "id": "subscription.euTaxInfo", | ||
2454 | "start": { | ||
2455 | "column": 13, | ||
2456 | "line": 62 | ||
2457 | } | ||
2458 | } | ||
2459 | ], | ||
2460 | "path": "src/components/subscription/SubscriptionForm.json" | ||
2461 | }, | ||
2462 | { | ||
2463 | "descriptors": [ | ||
2464 | { | ||
2465 | "defaultMessage": "!!!Cancel", | ||
2466 | "end": { | ||
2467 | "column": 3, | ||
2468 | "line": 14 | ||
2469 | }, | ||
2470 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
2471 | "id": "subscriptionPopup.buttonCancel", | ||
2472 | "start": { | ||
2473 | "column": 16, | ||
2474 | "line": 11 | ||
2475 | } | ||
2476 | }, | ||
2477 | { | ||
2478 | "defaultMessage": "!!!Done", | ||
2479 | "end": { | ||
2480 | "column": 3, | ||
2481 | "line": 18 | ||
2482 | }, | ||
2483 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
2484 | "id": "subscriptionPopup.buttonDone", | ||
2485 | "start": { | ||
2486 | "column": 14, | ||
2487 | "line": 15 | ||
2488 | } | ||
2489 | } | ||
2490 | ], | ||
2491 | "path": "src/components/subscription/SubscriptionPopup.json" | ||
2492 | }, | ||
2493 | { | ||
2494 | "descriptors": [ | ||
2495 | { | ||
2496 | "defaultMessage": "!!!Upgrade account", | ||
2497 | "end": { | ||
2498 | "column": 3, | ||
2499 | "line": 17 | ||
2500 | }, | ||
2501 | "file": "src/components/ui/PremiumFeatureContainer/index.js", | ||
2502 | "id": "premiumFeature.button.upgradeAccount", | ||
2503 | "start": { | ||
2504 | "column": 10, | ||
2505 | "line": 14 | ||
2506 | } | ||
2507 | } | ||
2508 | ], | ||
2509 | "path": "src/components/ui/PremiumFeatureContainer/index.json" | ||
2510 | }, | ||
2511 | { | ||
2512 | "descriptors": [ | ||
2513 | { | ||
2514 | "defaultMessage": "!!!Something went wrong.", | ||
2515 | "end": { | ||
2516 | "column": 3, | ||
2517 | "line": 14 | ||
2518 | }, | ||
2519 | "file": "src/components/util/ErrorBoundary/index.js", | ||
2520 | "id": "app.errorHandler.headline", | ||
2521 | "start": { | ||
2522 | "column": 12, | ||
2523 | "line": 11 | ||
2524 | } | ||
2525 | }, | ||
2526 | { | ||
2527 | "defaultMessage": "!!!Reload", | ||
2528 | "end": { | ||
2529 | "column": 3, | ||
2530 | "line": 18 | ||
2531 | }, | ||
2532 | "file": "src/components/util/ErrorBoundary/index.js", | ||
2533 | "id": "app.errorHandler.action", | ||
2534 | "start": { | ||
2535 | "column": 10, | ||
2536 | "line": 15 | ||
2537 | } | ||
2538 | } | ||
2539 | ], | ||
2540 | "path": "src/components/util/ErrorBoundary/index.json" | ||
2541 | }, | ||
2542 | { | ||
2543 | "descriptors": [ | ||
2544 | { | ||
2545 | "defaultMessage": "!!!Name", | ||
2546 | "end": { | ||
2547 | "column": 3, | ||
2548 | "line": 31 | ||
2549 | }, | ||
2550 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2551 | "id": "settings.service.form.name", | ||
2552 | "start": { | ||
2553 | "column": 8, | ||
2554 | "line": 28 | ||
2555 | } | ||
2556 | }, | ||
2557 | { | ||
2558 | "defaultMessage": "!!!Enable service", | ||
2559 | "end": { | ||
2560 | "column": 3, | ||
2561 | "line": 35 | ||
2562 | }, | ||
2563 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2564 | "id": "settings.service.form.enableService", | ||
2565 | "start": { | ||
2566 | "column": 17, | ||
2567 | "line": 32 | ||
2568 | } | ||
2569 | }, | ||
2570 | { | ||
2571 | "defaultMessage": "!!!Enable Notifications", | ||
2572 | "end": { | ||
2573 | "column": 3, | ||
2574 | "line": 39 | ||
2575 | }, | ||
2576 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2577 | "id": "settings.service.form.enableNotification", | ||
2578 | "start": { | ||
2579 | "column": 22, | ||
2580 | "line": 36 | ||
2581 | } | ||
2582 | }, | ||
2583 | { | ||
2584 | "defaultMessage": "!!!Show unread message badges", | ||
2585 | "end": { | ||
2586 | "column": 3, | ||
2587 | "line": 43 | ||
2588 | }, | ||
2589 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2590 | "id": "settings.service.form.enableBadge", | ||
2591 | "start": { | ||
2592 | "column": 15, | ||
2593 | "line": 40 | ||
2594 | } | ||
2595 | }, | ||
2596 | { | ||
2597 | "defaultMessage": "!!!Enable audio", | ||
2598 | "end": { | ||
2599 | "column": 3, | ||
2600 | "line": 47 | ||
2601 | }, | ||
2602 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2603 | "id": "settings.service.form.enableAudio", | ||
2604 | "start": { | ||
2605 | "column": 15, | ||
2606 | "line": 44 | ||
2607 | } | ||
2608 | }, | ||
2609 | { | ||
2610 | "defaultMessage": "!!!Team", | ||
2611 | "end": { | ||
2612 | "column": 3, | ||
2613 | "line": 51 | ||
2614 | }, | ||
2615 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2616 | "id": "settings.service.form.team", | ||
2617 | "start": { | ||
2618 | "column": 8, | ||
2619 | "line": 48 | ||
2620 | } | ||
2621 | }, | ||
2622 | { | ||
2623 | "defaultMessage": "!!!Custom server", | ||
2624 | "end": { | ||
2625 | "column": 3, | ||
2626 | "line": 55 | ||
2627 | }, | ||
2628 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2629 | "id": "settings.service.form.customUrl", | ||
2630 | "start": { | ||
2631 | "column": 13, | ||
2632 | "line": 52 | ||
2633 | } | ||
2634 | }, | ||
2635 | { | ||
2636 | "defaultMessage": "!!!Show message badge for all new messages", | ||
2637 | "end": { | ||
2638 | "column": 3, | ||
2639 | "line": 59 | ||
2640 | }, | ||
2641 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2642 | "id": "settings.service.form.indirectMessages", | ||
2643 | "start": { | ||
2644 | "column": 20, | ||
2645 | "line": 56 | ||
2646 | } | ||
2647 | }, | ||
2648 | { | ||
2649 | "defaultMessage": "!!!Custom icon", | ||
2650 | "end": { | ||
2651 | "column": 3, | ||
2652 | "line": 63 | ||
2653 | }, | ||
2654 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2655 | "id": "settings.service.form.icon", | ||
2656 | "start": { | ||
2657 | "column": 8, | ||
2658 | "line": 60 | ||
2659 | } | ||
2660 | }, | ||
2661 | { | ||
2662 | "defaultMessage": "!!!Enable Dark Mode", | ||
2663 | "end": { | ||
2664 | "column": 3, | ||
2665 | "line": 67 | ||
2666 | }, | ||
2667 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2668 | "id": "settings.service.form.enableDarkMode", | ||
2669 | "start": { | ||
2670 | "column": 18, | ||
2671 | "line": 64 | ||
2672 | } | ||
2673 | }, | ||
2674 | { | ||
2675 | "defaultMessage": "!!!Use Proxy", | ||
2676 | "end": { | ||
2677 | "column": 3, | ||
2678 | "line": 71 | ||
2679 | }, | ||
2680 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2681 | "id": "settings.service.form.proxy.isEnabled", | ||
2682 | "start": { | ||
2683 | "column": 15, | ||
2684 | "line": 68 | ||
2685 | } | ||
2686 | }, | ||
2687 | { | ||
2688 | "defaultMessage": "!!!Proxy Host/IP", | ||
2689 | "end": { | ||
2690 | "column": 3, | ||
2691 | "line": 75 | ||
2692 | }, | ||
2693 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2694 | "id": "settings.service.form.proxy.host", | ||
2695 | "start": { | ||
2696 | "column": 13, | ||
2697 | "line": 72 | ||
2698 | } | ||
2699 | }, | ||
2700 | { | ||
2701 | "defaultMessage": "!!!Port", | ||
2702 | "end": { | ||
2703 | "column": 3, | ||
2704 | "line": 79 | ||
2705 | }, | ||
2706 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2707 | "id": "settings.service.form.proxy.port", | ||
2708 | "start": { | ||
2709 | "column": 13, | ||
2710 | "line": 76 | ||
2711 | } | ||
2712 | }, | ||
2713 | { | ||
2714 | "defaultMessage": "!!!User", | ||
2715 | "end": { | ||
2716 | "column": 3, | ||
2717 | "line": 83 | ||
2718 | }, | ||
2719 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2720 | "id": "settings.service.form.proxy.user", | ||
2721 | "start": { | ||
2722 | "column": 13, | ||
2723 | "line": 80 | ||
2724 | } | ||
2725 | }, | ||
2726 | { | ||
2727 | "defaultMessage": "!!!Password", | ||
2728 | "end": { | ||
2729 | "column": 3, | ||
2730 | "line": 87 | ||
2731 | }, | ||
2732 | "file": "src/containers/settings/EditServiceScreen.js", | ||
2733 | "id": "settings.service.form.proxy.password", | ||
2734 | "start": { | ||
2735 | "column": 17, | ||
2736 | "line": 84 | ||
2737 | } | ||
2738 | } | ||
2739 | ], | ||
2740 | "path": "src/containers/settings/EditServiceScreen.json" | ||
2741 | }, | ||
2742 | { | ||
2743 | "descriptors": [ | ||
2744 | { | ||
2745 | "defaultMessage": "!!!Launch Franz on start", | ||
2746 | "end": { | ||
2747 | "column": 3, | ||
2748 | "line": 25 | ||
2749 | }, | ||
2750 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2751 | "id": "settings.app.form.autoLaunchOnStart", | ||
2752 | "start": { | ||
2753 | "column": 21, | ||
2754 | "line": 22 | ||
2755 | } | ||
2756 | }, | ||
2757 | { | ||
2758 | "defaultMessage": "!!!Open in background", | ||
2759 | "end": { | ||
2760 | "column": 3, | ||
2761 | "line": 29 | ||
2762 | }, | ||
2763 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2764 | "id": "settings.app.form.autoLaunchInBackground", | ||
2765 | "start": { | ||
2766 | "column": 26, | ||
2767 | "line": 26 | ||
2768 | } | ||
2769 | }, | ||
2770 | { | ||
2771 | "defaultMessage": "!!!Keep Franz in background when closing the window", | ||
2772 | "end": { | ||
2773 | "column": 3, | ||
2774 | "line": 33 | ||
2775 | }, | ||
2776 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2777 | "id": "settings.app.form.runInBackground", | ||
2778 | "start": { | ||
2779 | "column": 19, | ||
2780 | "line": 30 | ||
2781 | } | ||
2782 | }, | ||
2783 | { | ||
2784 | "defaultMessage": "!!!Show Franz in system tray", | ||
2785 | "end": { | ||
2786 | "column": 3, | ||
2787 | "line": 37 | ||
2788 | }, | ||
2789 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2790 | "id": "settings.app.form.enableSystemTray", | ||
2791 | "start": { | ||
2792 | "column": 20, | ||
2793 | "line": 34 | ||
2794 | } | ||
2795 | }, | ||
2796 | { | ||
2797 | "defaultMessage": "!!!Minimize Franz to system tray", | ||
2798 | "end": { | ||
2799 | "column": 3, | ||
2800 | "line": 41 | ||
2801 | }, | ||
2802 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2803 | "id": "settings.app.form.minimizeToSystemTray", | ||
2804 | "start": { | ||
2805 | "column": 24, | ||
2806 | "line": 38 | ||
2807 | } | ||
2808 | }, | ||
2809 | { | ||
2810 | "defaultMessage": "!!!Language", | ||
2811 | "end": { | ||
2812 | "column": 3, | ||
2813 | "line": 45 | ||
2814 | }, | ||
2815 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2816 | "id": "settings.app.form.language", | ||
2817 | "start": { | ||
2818 | "column": 12, | ||
2819 | "line": 42 | ||
2820 | } | ||
2821 | }, | ||
2822 | { | ||
2823 | "defaultMessage": "!!!Dark Mode", | ||
2824 | "end": { | ||
2825 | "column": 3, | ||
2826 | "line": 49 | ||
2827 | }, | ||
2828 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2829 | "id": "settings.app.form.darkMode", | ||
2830 | "start": { | ||
2831 | "column": 12, | ||
2832 | "line": 46 | ||
2833 | } | ||
2834 | }, | ||
2835 | { | ||
2836 | "defaultMessage": "!!!Display disabled services tabs", | ||
2837 | "end": { | ||
2838 | "column": 3, | ||
2839 | "line": 53 | ||
2840 | }, | ||
2841 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2842 | "id": "settings.app.form.showDisabledServices", | ||
2843 | "start": { | ||
2844 | "column": 24, | ||
2845 | "line": 50 | ||
2846 | } | ||
2847 | }, | ||
2848 | { | ||
2849 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | ||
2850 | "end": { | ||
2851 | "column": 3, | ||
2852 | "line": 57 | ||
2853 | }, | ||
2854 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2855 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | ||
2856 | "start": { | ||
2857 | "column": 29, | ||
2858 | "line": 54 | ||
2859 | } | ||
2860 | }, | ||
2861 | { | ||
2862 | "defaultMessage": "!!!Enable spell checking", | ||
2863 | "end": { | ||
2864 | "column": 3, | ||
2865 | "line": 61 | ||
2866 | }, | ||
2867 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2868 | "id": "settings.app.form.enableSpellchecking", | ||
2869 | "start": { | ||
2870 | "column": 23, | ||
2871 | "line": 58 | ||
2872 | } | ||
2873 | }, | ||
2874 | { | ||
2875 | "defaultMessage": "!!!Enable GPU Acceleration", | ||
2876 | "end": { | ||
2877 | "column": 3, | ||
2878 | "line": 65 | ||
2879 | }, | ||
2880 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2881 | "id": "settings.app.form.enableGPUAcceleration", | ||
2882 | "start": { | ||
2883 | "column": 25, | ||
2884 | "line": 62 | ||
2885 | } | ||
2886 | }, | ||
2887 | { | ||
2888 | "defaultMessage": "!!!Include beta versions", | ||
2889 | "end": { | ||
2890 | "column": 3, | ||
2891 | "line": 69 | ||
2892 | }, | ||
2893 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
2894 | "id": "settings.app.form.beta", | ||
2895 | "start": { | ||
2896 | "column": 8, | ||
2897 | "line": 66 | ||
2898 | } | ||
2899 | } | ||
2900 | ], | ||
2901 | "path": "src/containers/settings/EditSettingsScreen.json" | ||
2902 | }, | ||
2903 | { | ||
2904 | "descriptors": [ | ||
2905 | { | ||
2906 | "defaultMessage": "!!!Firstname", | ||
2907 | "end": { | ||
2908 | "column": 3, | ||
2909 | "line": 17 | ||
2910 | }, | ||
2911 | "file": "src/containers/settings/EditUserScreen.js", | ||
2912 | "id": "settings.user.form.firstname", | ||
2913 | "start": { | ||
2914 | "column": 13, | ||
2915 | "line": 14 | ||
2916 | } | ||
2917 | }, | ||
2918 | { | ||
2919 | "defaultMessage": "!!!Lastname", | ||
2920 | "end": { | ||
2921 | "column": 3, | ||
2922 | "line": 21 | ||
2923 | }, | ||
2924 | "file": "src/containers/settings/EditUserScreen.js", | ||
2925 | "id": "settings.user.form.lastname", | ||
2926 | "start": { | ||
2927 | "column": 12, | ||
2928 | "line": 18 | ||
2929 | } | ||
2930 | }, | ||
2931 | { | ||
2932 | "defaultMessage": "!!!Email", | ||
2933 | "end": { | ||
2934 | "column": 3, | ||
2935 | "line": 25 | ||
2936 | }, | ||
2937 | "file": "src/containers/settings/EditUserScreen.js", | ||
2938 | "id": "settings.user.form.email", | ||
2939 | "start": { | ||
2940 | "column": 9, | ||
2941 | "line": 22 | ||
2942 | } | ||
2943 | }, | ||
2944 | { | ||
2945 | "defaultMessage": "!!!Account type", | ||
2946 | "end": { | ||
2947 | "column": 3, | ||
2948 | "line": 29 | ||
2949 | }, | ||
2950 | "file": "src/containers/settings/EditUserScreen.js", | ||
2951 | "id": "settings.user.form.accountType.label", | ||
2952 | "start": { | ||
2953 | "column": 20, | ||
2954 | "line": 26 | ||
2955 | } | ||
2956 | }, | ||
2957 | { | ||
2958 | "defaultMessage": "!!!Individual", | ||
2959 | "end": { | ||
2960 | "column": 3, | ||
2961 | "line": 33 | ||
2962 | }, | ||
2963 | "file": "src/containers/settings/EditUserScreen.js", | ||
2964 | "id": "settings.user.form.accountType.individual", | ||
2965 | "start": { | ||
2966 | "column": 25, | ||
2967 | "line": 30 | ||
2968 | } | ||
2969 | }, | ||
2970 | { | ||
2971 | "defaultMessage": "!!!Non-Profit", | ||
2972 | "end": { | ||
2973 | "column": 3, | ||
2974 | "line": 37 | ||
2975 | }, | ||
2976 | "file": "src/containers/settings/EditUserScreen.js", | ||
2977 | "id": "settings.user.form.accountType.non-profit", | ||
2978 | "start": { | ||
2979 | "column": 24, | ||
2980 | "line": 34 | ||
2981 | } | ||
2982 | }, | ||
2983 | { | ||
2984 | "defaultMessage": "!!!Company", | ||
2985 | "end": { | ||
2986 | "column": 3, | ||
2987 | "line": 41 | ||
2988 | }, | ||
2989 | "file": "src/containers/settings/EditUserScreen.js", | ||
2990 | "id": "settings.user.form.accountType.company", | ||
2991 | "start": { | ||
2992 | "column": 22, | ||
2993 | "line": 38 | ||
2994 | } | ||
2995 | }, | ||
2996 | { | ||
2997 | "defaultMessage": "!!!Current password", | ||
2998 | "end": { | ||
2999 | "column": 3, | ||
3000 | "line": 45 | ||
3001 | }, | ||
3002 | "file": "src/containers/settings/EditUserScreen.js", | ||
3003 | "id": "settings.user.form.currentPassword", | ||
3004 | "start": { | ||
3005 | "column": 19, | ||
3006 | "line": 42 | ||
3007 | } | ||
3008 | }, | ||
3009 | { | ||
3010 | "defaultMessage": "!!!New password", | ||
3011 | "end": { | ||
3012 | "column": 3, | ||
3013 | "line": 49 | ||
3014 | }, | ||
3015 | "file": "src/containers/settings/EditUserScreen.js", | ||
3016 | "id": "settings.user.form.newPassword", | ||
3017 | "start": { | ||
3018 | "column": 15, | ||
3019 | "line": 46 | ||
3020 | } | ||
3021 | } | ||
3022 | ], | ||
3023 | "path": "src/containers/settings/EditUserScreen.json" | ||
3024 | }, | ||
3025 | { | ||
3026 | "descriptors": [ | ||
3027 | { | ||
3028 | "defaultMessage": "!!!Please purchase license to skip waiting", | ||
3029 | "end": { | ||
3030 | "column": 3, | ||
3031 | "line": 18 | ||
3032 | }, | ||
3033 | "file": "src/features/delayApp/Component.js", | ||
3034 | "id": "feature.delayApp.headline", | ||
3035 | "start": { | ||
3036 | "column": 12, | ||
3037 | "line": 15 | ||
3038 | } | ||
3039 | }, | ||
3040 | { | ||
3041 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
3042 | "end": { | ||
3043 | "column": 3, | ||
3044 | "line": 22 | ||
3045 | }, | ||
3046 | "file": "src/features/delayApp/Component.js", | ||
3047 | "id": "feature.delayApp.action", | ||
3048 | "start": { | ||
3049 | "column": 10, | ||
3050 | "line": 19 | ||
3051 | } | ||
3052 | }, | ||
3053 | { | ||
3054 | "defaultMessage": "!!!Franz will continue in {seconds} seconds.", | ||
3055 | "end": { | ||
3056 | "column": 3, | ||
3057 | "line": 26 | ||
3058 | }, | ||
3059 | "file": "src/features/delayApp/Component.js", | ||
3060 | "id": "feature.delayApp.text", | ||
3061 | "start": { | ||
3062 | "column": 8, | ||
3063 | "line": 23 | ||
3064 | } | ||
3065 | } | ||
3066 | ], | ||
3067 | "path": "src/features/delayApp/Component.json" | ||
3068 | }, | ||
3069 | { | ||
3070 | "descriptors": [ | ||
3071 | { | ||
3072 | "defaultMessage": "!!!Franz is better together!", | ||
3073 | "end": { | ||
3074 | "column": 3, | ||
3075 | "line": 18 | ||
3076 | }, | ||
3077 | "file": "src/features/shareFranz/Component.js", | ||
3078 | "id": "feature.shareFranz.headline", | ||
3079 | "start": { | ||
3080 | "column": 12, | ||
3081 | "line": 15 | ||
3082 | } | ||
3083 | }, | ||
3084 | { | ||
3085 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
3086 | "end": { | ||
3087 | "column": 3, | ||
3088 | "line": 22 | ||
3089 | }, | ||
3090 | "file": "src/features/shareFranz/Component.js", | ||
3091 | "id": "feature.shareFranz.text", | ||
3092 | "start": { | ||
3093 | "column": 8, | ||
3094 | "line": 19 | ||
3095 | } | ||
3096 | }, | ||
3097 | { | ||
3098 | "defaultMessage": "!!!Share as email", | ||
3099 | "end": { | ||
3100 | "column": 3, | ||
3101 | "line": 26 | ||
3102 | }, | ||
3103 | "file": "src/features/shareFranz/Component.js", | ||
3104 | "id": "feature.shareFranz.action.email", | ||
3105 | "start": { | ||
3106 | "column": 16, | ||
3107 | "line": 23 | ||
3108 | } | ||
3109 | }, | ||
3110 | { | ||
3111 | "defaultMessage": "!!!Share on Facebook", | ||
3112 | "end": { | ||
3113 | "column": 3, | ||
3114 | "line": 30 | ||
3115 | }, | ||
3116 | "file": "src/features/shareFranz/Component.js", | ||
3117 | "id": "feature.shareFranz.action.facebook", | ||
3118 | "start": { | ||
3119 | "column": 19, | ||
3120 | "line": 27 | ||
3121 | } | ||
3122 | }, | ||
3123 | { | ||
3124 | "defaultMessage": "!!!Share on Twitter", | ||
3125 | "end": { | ||
3126 | "column": 3, | ||
3127 | "line": 34 | ||
3128 | }, | ||
3129 | "file": "src/features/shareFranz/Component.js", | ||
3130 | "id": "feature.shareFranz.action.twitter", | ||
3131 | "start": { | ||
3132 | "column": 18, | ||
3133 | "line": 31 | ||
3134 | } | ||
3135 | }, | ||
3136 | { | ||
3137 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | ||
3138 | "end": { | ||
3139 | "column": 3, | ||
3140 | "line": 38 | ||
3141 | }, | ||
3142 | "file": "src/features/shareFranz/Component.js", | ||
3143 | "id": "feature.shareFranz.shareText.email", | ||
3144 | "start": { | ||
3145 | "column": 18, | ||
3146 | "line": 35 | ||
3147 | } | ||
3148 | }, | ||
3149 | { | ||
3150 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", | ||
3151 | "end": { | ||
3152 | "column": 3, | ||
3153 | "line": 42 | ||
3154 | }, | ||
3155 | "file": "src/features/shareFranz/Component.js", | ||
3156 | "id": "feature.shareFranz.shareText.twitter", | ||
3157 | "start": { | ||
3158 | "column": 20, | ||
3159 | "line": 39 | ||
3160 | } | ||
3161 | } | ||
3162 | ], | ||
3163 | "path": "src/features/shareFranz/Component.json" | ||
3164 | }, | ||
3165 | { | ||
3166 | "descriptors": [ | ||
3167 | { | ||
3168 | "defaultMessage": "!!!Field is required", | ||
3169 | "end": { | ||
3170 | "column": 3, | ||
3171 | "line": 7 | ||
3172 | }, | ||
3173 | "file": "src/helpers/validation-helpers.js", | ||
3174 | "id": "validation.required", | ||
3175 | "start": { | ||
3176 | "column": 12, | ||
3177 | "line": 4 | ||
3178 | } | ||
3179 | }, | ||
3180 | { | ||
3181 | "defaultMessage": "!!!Email not valid", | ||
3182 | "end": { | ||
3183 | "column": 3, | ||
3184 | "line": 11 | ||
3185 | }, | ||
3186 | "file": "src/helpers/validation-helpers.js", | ||
3187 | "id": "validation.email", | ||
3188 | "start": { | ||
3189 | "column": 9, | ||
3190 | "line": 8 | ||
3191 | } | ||
3192 | }, | ||
3193 | { | ||
3194 | "defaultMessage": "!!!Not a valid URL", | ||
3195 | "end": { | ||
3196 | "column": 3, | ||
3197 | "line": 15 | ||
3198 | }, | ||
3199 | "file": "src/helpers/validation-helpers.js", | ||
3200 | "id": "validation.url", | ||
3201 | "start": { | ||
3202 | "column": 7, | ||
3203 | "line": 12 | ||
3204 | } | ||
3205 | }, | ||
3206 | { | ||
3207 | "defaultMessage": "!!!Too few characters", | ||
3208 | "end": { | ||
3209 | "column": 3, | ||
3210 | "line": 19 | ||
3211 | }, | ||
3212 | "file": "src/helpers/validation-helpers.js", | ||
3213 | "id": "validation.minLength", | ||
3214 | "start": { | ||
3215 | "column": 13, | ||
3216 | "line": 16 | ||
3217 | } | ||
3218 | }, | ||
3219 | { | ||
3220 | "defaultMessage": "!!!At least one is required", | ||
3221 | "end": { | ||
3222 | "column": 3, | ||
3223 | "line": 23 | ||
3224 | }, | ||
3225 | "file": "src/helpers/validation-helpers.js", | ||
3226 | "id": "validation.oneRequired", | ||
3227 | "start": { | ||
3228 | "column": 15, | ||
3229 | "line": 20 | ||
3230 | } | ||
3231 | } | ||
3232 | ], | ||
3233 | "path": "src/helpers/validation-helpers.json" | ||
3234 | }, | ||
3235 | { | ||
3236 | "descriptors": [ | ||
3237 | { | ||
3238 | "defaultMessage": "!!!Can't connect to Franz Online Services", | ||
3239 | "end": { | ||
3240 | "column": 3, | ||
3241 | "line": 7 | ||
3242 | }, | ||
3243 | "file": "src/i18n/globalMessages.js", | ||
3244 | "id": "global.api.unhealthy", | ||
3245 | "start": { | ||
3246 | "column": 16, | ||
3247 | "line": 4 | ||
3248 | } | ||
3249 | }, | ||
3250 | { | ||
3251 | "defaultMessage": "!!!You are not connected to the internet.", | ||
3252 | "end": { | ||
3253 | "column": 3, | ||
3254 | "line": 11 | ||
3255 | }, | ||
3256 | "file": "src/i18n/globalMessages.js", | ||
3257 | "id": "global.notConnectedToTheInternet", | ||
3258 | "start": { | ||
3259 | "column": 29, | ||
3260 | "line": 8 | ||
3261 | } | ||
3262 | }, | ||
3263 | { | ||
3264 | "defaultMessage": "!!!Spell checking language", | ||
3265 | "end": { | ||
3266 | "column": 3, | ||
3267 | "line": 15 | ||
3268 | }, | ||
3269 | "file": "src/i18n/globalMessages.js", | ||
3270 | "id": "global.spellchecking.language", | ||
3271 | "start": { | ||
3272 | "column": 24, | ||
3273 | "line": 12 | ||
3274 | } | ||
3275 | }, | ||
3276 | { | ||
3277 | "defaultMessage": "!!!Use System Default ({default})", | ||
3278 | "end": { | ||
3279 | "column": 3, | ||
3280 | "line": 19 | ||
3281 | }, | ||
3282 | "file": "src/i18n/globalMessages.js", | ||
3283 | "id": "global.spellchecker.useDefault", | ||
3284 | "start": { | ||
3285 | "column": 29, | ||
3286 | "line": 16 | ||
3287 | } | ||
3288 | }, | ||
3289 | { | ||
3290 | "defaultMessage": "!!!Detect language automatically", | ||
3291 | "end": { | ||
3292 | "column": 3, | ||
3293 | "line": 23 | ||
3294 | }, | ||
3295 | "file": "src/i18n/globalMessages.js", | ||
3296 | "id": "global.spellchecking.autodetect", | ||
3297 | "start": { | ||
3298 | "column": 34, | ||
3299 | "line": 20 | ||
3300 | } | ||
3301 | }, | ||
3302 | { | ||
3303 | "defaultMessage": "!!!Automatic", | ||
3304 | "end": { | ||
3305 | "column": 3, | ||
3306 | "line": 27 | ||
3307 | }, | ||
3308 | "file": "src/i18n/globalMessages.js", | ||
3309 | "id": "global.spellchecking.autodetect.short", | ||
3310 | "start": { | ||
3311 | "column": 39, | ||
3312 | "line": 24 | ||
3313 | } | ||
3314 | } | ||
3315 | ], | ||
3316 | "path": "src/i18n/globalMessages.json" | ||
3317 | }, | ||
3318 | { | ||
3319 | "descriptors": [ | ||
3320 | { | ||
3321 | "defaultMessage": "!!!Edit", | ||
3322 | "end": { | ||
3323 | "column": 3, | ||
3324 | "line": 13 | ||
3325 | }, | ||
3326 | "file": "src/lib/Menu.js", | ||
3327 | "id": "menu.edit", | ||
3328 | "start": { | ||
3329 | "column": 8, | ||
3330 | "line": 10 | ||
3331 | } | ||
3332 | }, | ||
3333 | { | ||
3334 | "defaultMessage": "!!!Undo", | ||
3335 | "end": { | ||
3336 | "column": 3, | ||
3337 | "line": 17 | ||
3338 | }, | ||
3339 | "file": "src/lib/Menu.js", | ||
3340 | "id": "menu.edit.undo", | ||
3341 | "start": { | ||
3342 | "column": 8, | ||
3343 | "line": 14 | ||
3344 | } | ||
3345 | }, | ||
3346 | { | ||
3347 | "defaultMessage": "!!!Redo", | ||
3348 | "end": { | ||
3349 | "column": 3, | ||
3350 | "line": 21 | ||
3351 | }, | ||
3352 | "file": "src/lib/Menu.js", | ||
3353 | "id": "menu.edit.redo", | ||
3354 | "start": { | ||
3355 | "column": 8, | ||
3356 | "line": 18 | ||
3357 | } | ||
3358 | }, | ||
3359 | { | ||
3360 | "defaultMessage": "!!!Cut", | ||
3361 | "end": { | ||
3362 | "column": 3, | ||
3363 | "line": 25 | ||
3364 | }, | ||
3365 | "file": "src/lib/Menu.js", | ||
3366 | "id": "menu.edit.cut", | ||
3367 | "start": { | ||
3368 | "column": 7, | ||
3369 | "line": 22 | ||
3370 | } | ||
3371 | }, | ||
3372 | { | ||
3373 | "defaultMessage": "!!!Copy", | ||
3374 | "end": { | ||
3375 | "column": 3, | ||
3376 | "line": 29 | ||
3377 | }, | ||
3378 | "file": "src/lib/Menu.js", | ||
3379 | "id": "menu.edit.copy", | ||
3380 | "start": { | ||
3381 | "column": 8, | ||
3382 | "line": 26 | ||
3383 | } | ||
3384 | }, | ||
3385 | { | ||
3386 | "defaultMessage": "!!!Paste", | ||
3387 | "end": { | ||
3388 | "column": 3, | ||
3389 | "line": 33 | ||
3390 | }, | ||
3391 | "file": "src/lib/Menu.js", | ||
3392 | "id": "menu.edit.paste", | ||
3393 | "start": { | ||
3394 | "column": 9, | ||
3395 | "line": 30 | ||
3396 | } | ||
3397 | }, | ||
3398 | { | ||
3399 | "defaultMessage": "!!!Paste And Match Style", | ||
3400 | "end": { | ||
3401 | "column": 3, | ||
3402 | "line": 37 | ||
3403 | }, | ||
3404 | "file": "src/lib/Menu.js", | ||
3405 | "id": "menu.edit.pasteAndMatchStyle", | ||
3406 | "start": { | ||
3407 | "column": 22, | ||
3408 | "line": 34 | ||
3409 | } | ||
3410 | }, | ||
3411 | { | ||
3412 | "defaultMessage": "!!!Delete", | ||
3413 | "end": { | ||
3414 | "column": 3, | ||
3415 | "line": 41 | ||
3416 | }, | ||
3417 | "file": "src/lib/Menu.js", | ||
3418 | "id": "menu.edit.delete", | ||
3419 | "start": { | ||
3420 | "column": 10, | ||
3421 | "line": 38 | ||
3422 | } | ||
3423 | }, | ||
3424 | { | ||
3425 | "defaultMessage": "!!!Select All", | ||
3426 | "end": { | ||
3427 | "column": 3, | ||
3428 | "line": 45 | ||
3429 | }, | ||
3430 | "file": "src/lib/Menu.js", | ||
3431 | "id": "menu.edit.selectAll", | ||
3432 | "start": { | ||
3433 | "column": 13, | ||
3434 | "line": 42 | ||
3435 | } | ||
3436 | }, | ||
3437 | { | ||
3438 | "defaultMessage": "!!!Speech", | ||
3439 | "end": { | ||
3440 | "column": 3, | ||
3441 | "line": 49 | ||
3442 | }, | ||
3443 | "file": "src/lib/Menu.js", | ||
3444 | "id": "menu.edit.speech", | ||
3445 | "start": { | ||
3446 | "column": 10, | ||
3447 | "line": 46 | ||
3448 | } | ||
3449 | }, | ||
3450 | { | ||
3451 | "defaultMessage": "!!!Start Speaking", | ||
3452 | "end": { | ||
3453 | "column": 3, | ||
3454 | "line": 53 | ||
3455 | }, | ||
3456 | "file": "src/lib/Menu.js", | ||
3457 | "id": "menu.edit.startSpeaking", | ||
3458 | "start": { | ||
3459 | "column": 17, | ||
3460 | "line": 50 | ||
3461 | } | ||
3462 | }, | ||
3463 | { | ||
3464 | "defaultMessage": "!!!Stop Speaking", | ||
3465 | "end": { | ||
3466 | "column": 3, | ||
3467 | "line": 57 | ||
3468 | }, | ||
3469 | "file": "src/lib/Menu.js", | ||
3470 | "id": "menu.edit.stopSpeaking", | ||
3471 | "start": { | ||
3472 | "column": 16, | ||
3473 | "line": 54 | ||
3474 | } | ||
3475 | }, | ||
3476 | { | ||
3477 | "defaultMessage": "!!!Start Dictation", | ||
3478 | "end": { | ||
3479 | "column": 3, | ||
3480 | "line": 61 | ||
3481 | }, | ||
3482 | "file": "src/lib/Menu.js", | ||
3483 | "id": "menu.edit.startDictation", | ||
3484 | "start": { | ||
3485 | "column": 18, | ||
3486 | "line": 58 | ||
3487 | } | ||
3488 | }, | ||
3489 | { | ||
3490 | "defaultMessage": "!!!Emoji & Symbols", | ||
3491 | "end": { | ||
3492 | "column": 3, | ||
3493 | "line": 65 | ||
3494 | }, | ||
3495 | "file": "src/lib/Menu.js", | ||
3496 | "id": "menu.edit.emojiSymbols", | ||
3497 | "start": { | ||
3498 | "column": 16, | ||
3499 | "line": 62 | ||
3500 | } | ||
3501 | }, | ||
3502 | { | ||
3503 | "defaultMessage": "!!!Actual Size", | ||
3504 | "end": { | ||
3505 | "column": 3, | ||
3506 | "line": 69 | ||
3507 | }, | ||
3508 | "file": "src/lib/Menu.js", | ||
3509 | "id": "menu.view.resetZoom", | ||
3510 | "start": { | ||
3511 | "column": 13, | ||
3512 | "line": 66 | ||
3513 | } | ||
3514 | }, | ||
3515 | { | ||
3516 | "defaultMessage": "!!!Zoom In", | ||
3517 | "end": { | ||
3518 | "column": 3, | ||
3519 | "line": 73 | ||
3520 | }, | ||
3521 | "file": "src/lib/Menu.js", | ||
3522 | "id": "menu.view.zoomIn", | ||
3523 | "start": { | ||
3524 | "column": 10, | ||
3525 | "line": 70 | ||
3526 | } | ||
3527 | }, | ||
3528 | { | ||
3529 | "defaultMessage": "!!!Zoom Out", | ||
3530 | "end": { | ||
3531 | "column": 3, | ||
3532 | "line": 77 | ||
3533 | }, | ||
3534 | "file": "src/lib/Menu.js", | ||
3535 | "id": "menu.view.zoomOut", | ||
3536 | "start": { | ||
3537 | "column": 11, | ||
3538 | "line": 74 | ||
3539 | } | ||
3540 | }, | ||
3541 | { | ||
3542 | "defaultMessage": "!!!Enter Full Screen", | ||
3543 | "end": { | ||
3544 | "column": 3, | ||
3545 | "line": 81 | ||
3546 | }, | ||
3547 | "file": "src/lib/Menu.js", | ||
3548 | "id": "menu.view.enterFullScreen", | ||
3549 | "start": { | ||
3550 | "column": 19, | ||
3551 | "line": 78 | ||
3552 | } | ||
3553 | }, | ||
3554 | { | ||
3555 | "defaultMessage": "!!!Exit Full Screen", | ||
3556 | "end": { | ||
3557 | "column": 3, | ||
3558 | "line": 85 | ||
3559 | }, | ||
3560 | "file": "src/lib/Menu.js", | ||
3561 | "id": "menu.view.exitFullScreen", | ||
3562 | "start": { | ||
3563 | "column": 18, | ||
3564 | "line": 82 | ||
3565 | } | ||
3566 | }, | ||
3567 | { | ||
3568 | "defaultMessage": "!!!Toggle Full Screen", | ||
3569 | "end": { | ||
3570 | "column": 3, | ||
3571 | "line": 89 | ||
3572 | }, | ||
3573 | "file": "src/lib/Menu.js", | ||
3574 | "id": "menu.view.toggleFullScreen", | ||
3575 | "start": { | ||
3576 | "column": 20, | ||
3577 | "line": 86 | ||
3578 | } | ||
3579 | }, | ||
3580 | { | ||
3581 | "defaultMessage": "!!!Toggle Developer Tools", | ||
3582 | "end": { | ||
3583 | "column": 3, | ||
3584 | "line": 93 | ||
3585 | }, | ||
3586 | "file": "src/lib/Menu.js", | ||
3587 | "id": "menu.view.toggleDevTools", | ||
3588 | "start": { | ||
3589 | "column": 18, | ||
3590 | "line": 90 | ||
3591 | } | ||
3592 | }, | ||
3593 | { | ||
3594 | "defaultMessage": "!!!Toggle Service Developer Tools", | ||
3595 | "end": { | ||
3596 | "column": 3, | ||
3597 | "line": 97 | ||
3598 | }, | ||
3599 | "file": "src/lib/Menu.js", | ||
3600 | "id": "menu.view.toggleServiceDevTools", | ||
3601 | "start": { | ||
3602 | "column": 25, | ||
3603 | "line": 94 | ||
3604 | } | ||
3605 | }, | ||
3606 | { | ||
3607 | "defaultMessage": "!!!Reload Service", | ||
3608 | "end": { | ||
3609 | "column": 3, | ||
3610 | "line": 101 | ||
3611 | }, | ||
3612 | "file": "src/lib/Menu.js", | ||
3613 | "id": "menu.view.reloadService", | ||
3614 | "start": { | ||
3615 | "column": 17, | ||
3616 | "line": 98 | ||
3617 | } | ||
3618 | }, | ||
3619 | { | ||
3620 | "defaultMessage": "!!!Reload Franz", | ||
3621 | "end": { | ||
3622 | "column": 3, | ||
3623 | "line": 105 | ||
3624 | }, | ||
3625 | "file": "src/lib/Menu.js", | ||
3626 | "id": "menu.view.reloadFranz", | ||
3627 | "start": { | ||
3628 | "column": 15, | ||
3629 | "line": 102 | ||
3630 | } | ||
3631 | }, | ||
3632 | { | ||
3633 | "defaultMessage": "!!!Minimize", | ||
3634 | "end": { | ||
3635 | "column": 3, | ||
3636 | "line": 109 | ||
3637 | }, | ||
3638 | "file": "src/lib/Menu.js", | ||
3639 | "id": "menu.window.minimize", | ||
3640 | "start": { | ||
3641 | "column": 12, | ||
3642 | "line": 106 | ||
3643 | } | ||
3644 | }, | ||
3645 | { | ||
3646 | "defaultMessage": "!!!Close", | ||
3647 | "end": { | ||
3648 | "column": 3, | ||
3649 | "line": 113 | ||
3650 | }, | ||
3651 | "file": "src/lib/Menu.js", | ||
3652 | "id": "menu.window.close", | ||
3653 | "start": { | ||
3654 | "column": 9, | ||
3655 | "line": 110 | ||
3656 | } | ||
3657 | }, | ||
3658 | { | ||
3659 | "defaultMessage": "!!!Learn More", | ||
3660 | "end": { | ||
3661 | "column": 3, | ||
3662 | "line": 117 | ||
3663 | }, | ||
3664 | "file": "src/lib/Menu.js", | ||
3665 | "id": "menu.help.learnMore", | ||
3666 | "start": { | ||
3667 | "column": 13, | ||
3668 | "line": 114 | ||
3669 | } | ||
3670 | }, | ||
3671 | { | ||
3672 | "defaultMessage": "!!!Changelog", | ||
3673 | "end": { | ||
3674 | "column": 3, | ||
3675 | "line": 121 | ||
3676 | }, | ||
3677 | "file": "src/lib/Menu.js", | ||
3678 | "id": "menu.help.changelog", | ||
3679 | "start": { | ||
3680 | "column": 13, | ||
3681 | "line": 118 | ||
3682 | } | ||
3683 | }, | ||
3684 | { | ||
3685 | "defaultMessage": "!!!Support", | ||
3686 | "end": { | ||
3687 | "column": 3, | ||
3688 | "line": 125 | ||
3689 | }, | ||
3690 | "file": "src/lib/Menu.js", | ||
3691 | "id": "menu.help.support", | ||
3692 | "start": { | ||
3693 | "column": 11, | ||
3694 | "line": 122 | ||
3695 | } | ||
3696 | }, | ||
3697 | { | ||
3698 | "defaultMessage": "!!!Terms of Service", | ||
3699 | "end": { | ||
3700 | "column": 3, | ||
3701 | "line": 129 | ||
3702 | }, | ||
3703 | "file": "src/lib/Menu.js", | ||
3704 | "id": "menu.help.tos", | ||
3705 | "start": { | ||
3706 | "column": 7, | ||
3707 | "line": 126 | ||
3708 | } | ||
3709 | }, | ||
3710 | { | ||
3711 | "defaultMessage": "!!!Privacy Statement", | ||
3712 | "end": { | ||
3713 | "column": 3, | ||
3714 | "line": 133 | ||
3715 | }, | ||
3716 | "file": "src/lib/Menu.js", | ||
3717 | "id": "menu.help.privacy", | ||
3718 | "start": { | ||
3719 | "column": 11, | ||
3720 | "line": 130 | ||
3721 | } | ||
3722 | }, | ||
3723 | { | ||
3724 | "defaultMessage": "!!!File", | ||
3725 | "end": { | ||
3726 | "column": 3, | ||
3727 | "line": 137 | ||
3728 | }, | ||
3729 | "file": "src/lib/Menu.js", | ||
3730 | "id": "menu.file", | ||
3731 | "start": { | ||
3732 | "column": 8, | ||
3733 | "line": 134 | ||
3734 | } | ||
3735 | }, | ||
3736 | { | ||
3737 | "defaultMessage": "!!!View", | ||
3738 | "end": { | ||
3739 | "column": 3, | ||
3740 | "line": 141 | ||
3741 | }, | ||
3742 | "file": "src/lib/Menu.js", | ||
3743 | "id": "menu.view", | ||
3744 | "start": { | ||
3745 | "column": 8, | ||
3746 | "line": 138 | ||
3747 | } | ||
3748 | }, | ||
3749 | { | ||
3750 | "defaultMessage": "!!!Services", | ||
3751 | "end": { | ||
3752 | "column": 3, | ||
3753 | "line": 145 | ||
3754 | }, | ||
3755 | "file": "src/lib/Menu.js", | ||
3756 | "id": "menu.services", | ||
3757 | "start": { | ||
3758 | "column": 12, | ||
3759 | "line": 142 | ||
3760 | } | ||
3761 | }, | ||
3762 | { | ||
3763 | "defaultMessage": "!!!Window", | ||
3764 | "end": { | ||
3765 | "column": 3, | ||
3766 | "line": 149 | ||
3767 | }, | ||
3768 | "file": "src/lib/Menu.js", | ||
3769 | "id": "menu.window", | ||
3770 | "start": { | ||
3771 | "column": 10, | ||
3772 | "line": 146 | ||
3773 | } | ||
3774 | }, | ||
3775 | { | ||
3776 | "defaultMessage": "!!!Help", | ||
3777 | "end": { | ||
3778 | "column": 3, | ||
3779 | "line": 153 | ||
3780 | }, | ||
3781 | "file": "src/lib/Menu.js", | ||
3782 | "id": "menu.help", | ||
3783 | "start": { | ||
3784 | "column": 8, | ||
3785 | "line": 150 | ||
3786 | } | ||
3787 | }, | ||
3788 | { | ||
3789 | "defaultMessage": "!!!About Franz", | ||
3790 | "end": { | ||
3791 | "column": 3, | ||
3792 | "line": 157 | ||
3793 | }, | ||
3794 | "file": "src/lib/Menu.js", | ||
3795 | "id": "menu.app.about", | ||
3796 | "start": { | ||
3797 | "column": 9, | ||
3798 | "line": 154 | ||
3799 | } | ||
3800 | }, | ||
3801 | { | ||
3802 | "defaultMessage": "!!!Settings", | ||
3803 | "end": { | ||
3804 | "column": 3, | ||
3805 | "line": 161 | ||
3806 | }, | ||
3807 | "file": "src/lib/Menu.js", | ||
3808 | "id": "menu.app.settings", | ||
3809 | "start": { | ||
3810 | "column": 12, | ||
3811 | "line": 158 | ||
3812 | } | ||
3813 | }, | ||
3814 | { | ||
3815 | "defaultMessage": "!!!Hide", | ||
3816 | "end": { | ||
3817 | "column": 3, | ||
3818 | "line": 165 | ||
3819 | }, | ||
3820 | "file": "src/lib/Menu.js", | ||
3821 | "id": "menu.app.hide", | ||
3822 | "start": { | ||
3823 | "column": 8, | ||
3824 | "line": 162 | ||
3825 | } | ||
3826 | }, | ||
3827 | { | ||
3828 | "defaultMessage": "!!!Hide Others", | ||
3829 | "end": { | ||
3830 | "column": 3, | ||
3831 | "line": 169 | ||
3832 | }, | ||
3833 | "file": "src/lib/Menu.js", | ||
3834 | "id": "menu.app.hideOthers", | ||
3835 | "start": { | ||
3836 | "column": 14, | ||
3837 | "line": 166 | ||
3838 | } | ||
3839 | }, | ||
3840 | { | ||
3841 | "defaultMessage": "!!!Unhide", | ||
3842 | "end": { | ||
3843 | "column": 3, | ||
3844 | "line": 173 | ||
3845 | }, | ||
3846 | "file": "src/lib/Menu.js", | ||
3847 | "id": "menu.app.unhide", | ||
3848 | "start": { | ||
3849 | "column": 10, | ||
3850 | "line": 170 | ||
3851 | } | ||
3852 | }, | ||
3853 | { | ||
3854 | "defaultMessage": "!!!Quit", | ||
3855 | "end": { | ||
3856 | "column": 3, | ||
3857 | "line": 177 | ||
3858 | }, | ||
3859 | "file": "src/lib/Menu.js", | ||
3860 | "id": "menu.app.quit", | ||
3861 | "start": { | ||
3862 | "column": 8, | ||
3863 | "line": 174 | ||
3864 | } | ||
3865 | }, | ||
3866 | { | ||
3867 | "defaultMessage": "!!!Add New Service...", | ||
3868 | "end": { | ||
3869 | "column": 3, | ||
3870 | "line": 181 | ||
3871 | }, | ||
3872 | "file": "src/lib/Menu.js", | ||
3873 | "id": "menu.services.addNewService", | ||
3874 | "start": { | ||
3875 | "column": 17, | ||
3876 | "line": 178 | ||
3877 | } | ||
3878 | }, | ||
3879 | { | ||
3880 | "defaultMessage": "!!!Activate next service...", | ||
3881 | "end": { | ||
3882 | "column": 3, | ||
3883 | "line": 185 | ||
3884 | }, | ||
3885 | "file": "src/lib/Menu.js", | ||
3886 | "id": "menu.services.setNextServiceActive", | ||
3887 | "start": { | ||
3888 | "column": 23, | ||
3889 | "line": 182 | ||
3890 | } | ||
3891 | }, | ||
3892 | { | ||
3893 | "defaultMessage": "!!!Activate previous service...", | ||
3894 | "end": { | ||
3895 | "column": 3, | ||
3896 | "line": 189 | ||
3897 | }, | ||
3898 | "file": "src/lib/Menu.js", | ||
3899 | "id": "menu.services.activatePreviousService", | ||
3900 | "start": { | ||
3901 | "column": 27, | ||
3902 | "line": 186 | ||
3903 | } | ||
3904 | }, | ||
3905 | { | ||
3906 | "defaultMessage": "!!!Disable notifications & audio", | ||
3907 | "end": { | ||
3908 | "column": 3, | ||
3909 | "line": 193 | ||
3910 | }, | ||
3911 | "file": "src/lib/Menu.js", | ||
3912 | "id": "sidebar.muteApp", | ||
3913 | "start": { | ||
3914 | "column": 11, | ||
3915 | "line": 190 | ||
3916 | } | ||
3917 | }, | ||
3918 | { | ||
3919 | "defaultMessage": "!!!Enable notifications & audio", | ||
3920 | "end": { | ||
3921 | "column": 3, | ||
3922 | "line": 197 | ||
3923 | }, | ||
3924 | "file": "src/lib/Menu.js", | ||
3925 | "id": "sidebar.unmuteApp", | ||
3926 | "start": { | ||
3927 | "column": 13, | ||
3928 | "line": 194 | ||
3929 | } | ||
3930 | } | ||
3931 | ], | ||
3932 | "path": "src/lib/Menu.json" | ||
3933 | } | ||
3934 | ] \ No newline at end of file | ||
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index 671eecd41..9639ec5f7 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "ΕπαναφόÏτωση", | 2 | "app.errorHandler.action" : "ΕπαναφόÏτωση", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Κάτι δεν λειτουÏγεί", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz θα συνεχίσει σε {seconds} δευτεÏόλεπτα.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανÎÏ‚ υπηÏεσίες του Franz", | 14 | "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανÎÏ‚ υπηÏεσίες του Franz", |
8 | "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", | 15 | "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Franz 4", | 20 | "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Franz 4", |
10 | "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5", | 21 | "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5", |
11 | "import.skip.label" : "ΘÎλω να Ï€ÏοσθÎσω υπηÏεσίες χειÏοκίνητα", | 22 | "import.skip.label" : "ΘÎλω να Ï€ÏοσθÎσω υπηÏεσίες χειÏοκίνητα", |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 4e0c5575d..7543d38bd 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -1,281 +1,285 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action": "Reload", | ||
3 | "app.errorHandler.headline": "Something went wrong", | ||
4 | "feature.delayApp.action": "Get a Franz Supporter License", | ||
5 | "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", | ||
6 | "feature.delayApp.text": "Franz will continue in {seconds} seconds.", | ||
7 | "feature.shareFranz.action.email": "Send as email", | ||
8 | "feature.shareFranz.action.facebook": "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter": "Share on Twitter", | ||
10 | "feature.shareFranz.headline": "Franz is better together!", | ||
11 | "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.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", | ||
13 | "feature.shareFranz.text": "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
2 | "global.api.unhealthy": "Can't connect to Franz online services", | 14 | "global.api.unhealthy": "Can't connect to Franz online services", |
3 | "global.notConnectedToTheInternet": "You are not connected to the internet.", | 15 | "global.notConnectedToTheInternet": "You are not connected to the internet.", |
4 | "global.spellchecking.language": "Spell checking language", | ||
5 | "global.spellchecker.useDefault": "Use System Default ({default})", | 16 | "global.spellchecker.useDefault": "Use System Default ({default})", |
6 | "global.spellchecking.autodetect": "Detect language automatically", | 17 | "global.spellchecking.autodetect": "Detect language automatically", |
7 | "global.spellchecking.autodetect.short": "Automatic", | 18 | "global.spellchecking.autodetect.short": "Automatic", |
8 | "welcome.signupButton": "Create a free account", | 19 | "global.spellchecking.language": "Spell checking language", |
9 | "welcome.loginButton": "Login to your account", | 20 | "import.headline": "Import your Franz 4 services", |
10 | "welcome.slogan": "Messaging that works for you", | 21 | "import.notSupportedHeadline": "Services not yet supported in Franz 5", |
11 | "login.headline": "Sign in", | 22 | "import.skip.label": "I want to add services manually", |
23 | "import.submit.label": "Import services", | ||
24 | "infobar.buttonChangelog": "What is new?", | ||
25 | "infobar.buttonInstallUpdate": "Restart & install update", | ||
26 | "infobar.buttonReloadServices": "Reload services", | ||
27 | "infobar.requiredRequestsFailed": "Could not load services and user information", | ||
28 | "infobar.servicesUpdated": "Your services have been updated.", | ||
29 | "infobar.updateAvailable": "A new update for Franz is available.", | ||
30 | "invite.email.label": "Email address", | ||
31 | "invite.headline.friends": "Invite 3 of your friends or colleagues", | ||
32 | "invite.name.label": "Name", | ||
33 | "invite.skip.label": "I want to do this later", | ||
34 | "invite.submit.label": "Send invites", | ||
35 | "invite.successInfo": "Invitations sent successfully", | ||
12 | "login.email.label": "Email address", | 36 | "login.email.label": "Email address", |
37 | "login.headline": "Sign in", | ||
38 | "login.invalidCredentials": "Email or password not valid", | ||
39 | "login.link.password": "Reset password", | ||
40 | "login.link.signup": "Create a free account", | ||
13 | "login.password.label": "Password", | 41 | "login.password.label": "Password", |
42 | "login.serverLogout": "Your session expired, please login again.", | ||
14 | "login.submit.label": "Sign in", | 43 | "login.submit.label": "Sign in", |
15 | "login.invalidCredentials": "Email or password not valid", | ||
16 | "login.tokenExpired": "Your session expired, please login again.", | 44 | "login.tokenExpired": "Your session expired, please login again.", |
17 | "login.serverLogout": "Your session expired, please login again.", | 45 | "menu.app.about": "About Franz", |
18 | "login.link.signup": "Create a free account", | 46 | "menu.app.hide": "Hide", |
19 | "login.link.password": "Reset password", | 47 | "menu.app.hideOthers": "Hide Others", |
20 | "password.headline": "Reset password", | 48 | "menu.app.quit": "Quit", |
49 | "menu.app.settings": "Settings", | ||
50 | "menu.app.unhide": "Unhide", | ||
51 | "menu.edit": "Edit", | ||
52 | "menu.edit.copy": "Copy", | ||
53 | "menu.edit.cut": "Cut", | ||
54 | "menu.edit.delete": "Delete", | ||
55 | "menu.edit.emojiSymbols": "Emoji & Symbols", | ||
56 | "menu.edit.paste": "Paste", | ||
57 | "menu.edit.pasteAndMatchStyle": "Paste And Match Style", | ||
58 | "menu.edit.redo": "Redo", | ||
59 | "menu.edit.selectAll": "Select All", | ||
60 | "menu.edit.speech": "Speech", | ||
61 | "menu.edit.startDictation": "Start Dictation", | ||
62 | "menu.edit.startSpeaking": "Start Speaking", | ||
63 | "menu.edit.stopSpeaking": "Stop Speaking", | ||
64 | "menu.edit.undo": "Undo", | ||
65 | "menu.file": "File", | ||
66 | "menu.help": "Help", | ||
67 | "menu.help.changelog": "Changelog", | ||
68 | "menu.help.learnMore": "Learn More", | ||
69 | "menu.help.privacy": "Privacy Statement", | ||
70 | "menu.help.support": "Support", | ||
71 | "menu.help.tos": "Terms of Service", | ||
72 | "menu.services": "Services", | ||
73 | "menu.services.activatePreviousService": "Activate previous service", | ||
74 | "menu.services.addNewService": "Add New Service...", | ||
75 | "menu.services.setNextServiceActive": "Activate next service", | ||
76 | "menu.view": "View", | ||
77 | "menu.view.enterFullScreen": "Enter Full Screen", | ||
78 | "menu.view.exitFullScreen": "Exit Full Screen", | ||
79 | "menu.view.reloadFranz": "Reload Franz", | ||
80 | "menu.view.reloadService": "Reload Service", | ||
81 | "menu.view.resetZoom": "Actual Size", | ||
82 | "menu.view.toggleDevTools": "Toggle Developer Tools", | ||
83 | "menu.view.toggleFullScreen": "Toggle Full Screen", | ||
84 | "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", | ||
85 | "menu.view.zoomIn": "Zoom In", | ||
86 | "menu.view.zoomOut": "Zoom Out", | ||
87 | "menu.window": "Window", | ||
88 | "menu.window.close": "Close", | ||
89 | "menu.window.minimize": "Minimize", | ||
21 | "password.email.label": "Email address", | 90 | "password.email.label": "Email address", |
22 | "password.submit.label": "Submit", | 91 | "password.headline": "Reset password", |
92 | "password.link.login": "Sign in to your account", | ||
93 | "password.link.signup": "Create a free account", | ||
23 | "password.noUser": "No user with that email address was found", | 94 | "password.noUser": "No user with that email address was found", |
95 | "password.submit.label": "Submit", | ||
24 | "password.successInfo": "Please check your email", | 96 | "password.successInfo": "Please check your email", |
25 | "password.link.signup": "Create a free account", | 97 | "premiumFeature.button.upgradeAccount": "Upgrade account", |
26 | "password.link.login": "Sign in to your account", | ||
27 | "signup.headline": "Sign up", | ||
28 | "signup.firstname.label": "First Name", | ||
29 | "signup.lastname.label": "Last Name", | ||
30 | "signup.email.label": "Email address", | ||
31 | "signup.company.label": "Company", | ||
32 | "signup.password.label": "Password", | ||
33 | "signup.submit.label": "Create account", | ||
34 | "signup.link.login": "Already have an account, sign in?", | ||
35 | "signup.emailDuplicate": "A user with that email address already exists", | ||
36 | "signup.legal.info": "By creating a Franz account you accept the", | ||
37 | "signup.legal.terms": "Terms of service", | ||
38 | "signup.legal.privacy": "Privacy Statement", | ||
39 | "pricing.headline": "Support Franz", | 98 | "pricing.headline": "Support Franz", |
40 | "pricing.support.label": "Select your support plan", | ||
41 | "pricing.submit.label": "I want to support the development of Franz", | ||
42 | "pricing.link.skipPayment": "I don't want to support the development of Franz.", | 99 | "pricing.link.skipPayment": "I don't want to support the development of Franz.", |
43 | "import.headline": "Import your Franz 4 services", | 100 | "pricing.submit.label": "I want to support the development of Franz", |
44 | "import.notSupportedHeadline": "Services not yet supported in Franz 5", | 101 | "pricing.support.label": "Select your support plan", |
45 | "import.submit.label": "Import services", | 102 | "service.crashHandler.action": "Reload {name}", |
46 | "import.skip.label": "I want to add services manually", | 103 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", |
47 | "invite.submit.label": "Send invites", | 104 | "service.crashHandler.headline": "Oh no!", |
48 | "invite.headline.friends": "Invite 3 of your friends or colleagues", | 105 | "service.crashHandler.text": "{name} has caused an error.", |
49 | "invite.name.label": "Name", | 106 | "service.disabledHandler.action": "Enable {name}", |
50 | "invite.email.label": "Email address", | 107 | "service.disabledHandler.headline": "{name} is disabled", |
51 | "invite.skip.label": "I want to do this later", | 108 | "service.errorHandler.action": "Reload {name}", |
52 | "invite.successInfo": "Invitations sent successfully", | 109 | "service.errorHandler.editAction": "Edit {name}", |
53 | "subscription.submit.label": "I want to support the development of Franz", | 110 | "service.errorHandler.headline": "Oh no!", |
54 | "subscription.paymentSessionError": "Could not initialize payment form", | 111 | "service.errorHandler.message": "Error", |
55 | "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", | 112 | "service.errorHandler.text": "{name} has failed to load.", |
56 | "subscription.features.onpremise": "Add on-premise/hosted services like HipChat", | ||
57 | "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", | ||
58 | "subscription.features.encryptedSync": "Encrypted session synchronization", | ||
59 | "subscription.features.proxy": "Proxy support for services", | ||
60 | "subscription.features.ads": "No ads, ever!", | ||
61 | "subscription.features.spellchecker": "Support for spellchecker", | ||
62 | "subscription.features.noInterruptions": "No app delays & nagging to upgrade license", | ||
63 | "subscription.features.comingSoon": "coming soon", | ||
64 | "infobar.servicesUpdated": "Your services have been updated.", | ||
65 | "infobar.updateAvailable": "A new update for Franz is available.", | ||
66 | "infobar.buttonReloadServices": "Reload services", | ||
67 | "infobar.buttonInstallUpdate": "Restart & install update", | ||
68 | "infobar.buttonChangelog": "What is new?", | ||
69 | "infobar.requiredRequestsFailed": "Could not load services and user information", | ||
70 | "sidebar.settings": "Settings", | ||
71 | "sidebar.addNewService": "Add new service", | ||
72 | "sidebar.muteApp": "Disable notifications & audio", | ||
73 | "sidebar.unmuteApp": "Enable notifications & audio", | ||
74 | "services.welcome": "Welcome to Franz", | ||
75 | "services.getStarted": "Get started", | 113 | "services.getStarted": "Get started", |
76 | "settings.searchService": "Search service", | 114 | "services.welcome": "Welcome to Franz", |
77 | "settings.account.headline": "Account", | 115 | "settings.account.account.editButton": "Edit account", |
78 | "settings.account.headlineSubscription": "Your subscription", | ||
79 | "settings.account.headlineUpgrade": "Upgrade your account & support Franz", | ||
80 | "settings.account.headlineInvoices": "Invoices", | ||
81 | "settings.account.headlineDangerZone": "Danger Zone", | ||
82 | "settings.account.manageSubscription.label": "Manage your subscription", | ||
83 | "settings.account.accountType.basic": "Basic Account", | 116 | "settings.account.accountType.basic": "Basic Account", |
84 | "settings.account.accountType.premium": "Premium Supporter Account", | 117 | "settings.account.accountType.premium": "Premium Supporter Account", |
85 | "settings.account.account.editButton": "Edit account", | ||
86 | "settings.account.invoiceDownload": "Download", | ||
87 | "settings.account.userInfoRequestFailed": "Could not load user information", | ||
88 | "settings.account.tryReloadUserInfoRequest": "Try again", | ||
89 | "settings.account.headlineProfile": "Update profile", | ||
90 | "settings.account.headlineAccount": "Account information", | ||
91 | "settings.account.headlinePassword": "Change password", | ||
92 | "settings.account.successInfo": "Your changes have been saved", | ||
93 | "settings.account.buttonSave": "Update profile", | 118 | "settings.account.buttonSave": "Update profile", |
94 | "settings.account.deleteAccount": "Delete account", | 119 | "settings.account.deleteAccount": "Delete account", |
95 | "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.", | ||
96 | "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 120 | "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
121 | "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.", | ||
122 | "settings.account.headline": "Account", | ||
123 | "settings.account.headlineAccount": "Account information", | ||
124 | "settings.account.headlineDangerZone": "Danger Zone", | ||
125 | "settings.account.headlineInvoices": "Invoices", | ||
126 | "settings.account.headlinePassword": "Change password", | ||
127 | "settings.account.headlineProfile": "Update profile", | ||
128 | "settings.account.headlineSubscription": "Your subscription", | ||
129 | "settings.account.headlineUpgrade": "Upgrade your account & support Franz", | ||
130 | "settings.account.invoiceDownload": "Download", | ||
131 | "settings.account.manageSubscription.label": "Manage your subscription", | ||
132 | "settings.account.successInfo": "Your changes have been saved", | ||
133 | "settings.account.tryReloadServices": "Try again", | ||
134 | "settings.account.tryReloadUserInfoRequest": "Try again", | ||
135 | "settings.account.userInfoRequestFailed": "Could not load user information", | ||
136 | "settings.app.buttonClearAllCache": "Clear cache", | ||
137 | "settings.app.buttonInstallUpdate": "Restart & install update", | ||
138 | "settings.app.buttonSearchForUpdate": "Check for updates", | ||
139 | "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.", | ||
140 | "settings.app.currentVersion": "Current version:", | ||
141 | "settings.app.form.autoLaunchInBackground": "Open in background", | ||
142 | "settings.app.form.autoLaunchOnStart": "Launch Franz on start", | ||
143 | "settings.app.form.beta": "Include beta versions", | ||
144 | "settings.app.form.darkMode": "Join the Dark Side", | ||
145 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", | ||
146 | "settings.app.form.enableSpellchecking": "Enable spell checking", | ||
147 | "settings.app.form.enableSystemTray": "Show Franz in system tray", | ||
148 | "settings.app.form.language": "Language", | ||
149 | "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", | ||
150 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", | ||
151 | "settings.app.form.showDisabledServices": "Display disabled services tabs", | ||
152 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", | ||
153 | "settings.app.headline": "Settings", | ||
154 | "settings.app.headlineAdvanced": "Advanced", | ||
155 | "settings.app.headlineAppearance": "Appearance", | ||
156 | "settings.app.headlineGeneral": "General", | ||
157 | "settings.app.headlineLanguage": "Language", | ||
158 | "settings.app.headlineUpdates": "Updates", | ||
159 | "settings.app.restartRequired": "Changes require restart", | ||
160 | "settings.app.subheadlineCache": "Cache", | ||
161 | "settings.app.translationHelp": "Help us to translate Franz into your language.", | ||
162 | "settings.app.updateStatusAvailable": "Update available, downloading...", | ||
163 | "settings.app.updateStatusSearching": "Is searching for update", | ||
164 | "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", | ||
97 | "settings.invite.headline": "Invite Friends", | 165 | "settings.invite.headline": "Invite Friends", |
98 | "settings.navigation.availableServices": "Available services", | ||
99 | "settings.navigation.yourServices": "Your services", | ||
100 | "settings.navigation.account": "Account", | 166 | "settings.navigation.account": "Account", |
101 | "settings.navigation.settings": "Settings", | 167 | "settings.navigation.availableServices": "Available services", |
102 | "settings.navigation.inviteFriends": "Invite Friends", | 168 | "settings.navigation.inviteFriends": "Invite Friends", |
103 | "settings.navigation.logout": "Logout", | 169 | "settings.navigation.logout": "Logout", |
104 | "settings.recipes.headline": "Available services", | 170 | "settings.navigation.settings": "Settings", |
105 | "settings.recipes.mostPopular": "Most popular", | 171 | "settings.navigation.yourServices": "Your services", |
106 | "settings.recipes.all": "All services", | 172 | "settings.recipes.all": "All services", |
107 | "settings.recipes.dev": "Development", | 173 | "settings.recipes.dev": "Development", |
174 | "settings.recipes.headline": "Available services", | ||
175 | "settings.recipes.missingService": "Missing a service?", | ||
176 | "settings.recipes.mostPopular": "Most popular", | ||
108 | "settings.recipes.nothingFound": "Sorry, but no service matched your search term.", | 177 | "settings.recipes.nothingFound": "Sorry, but no service matched your search term.", |
109 | "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added", | 178 | "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added", |
110 | "settings.recipes.missingService": "Missing a service?", | 179 | "settings.searchService": "Search service", |
111 | "settings.service.form.saveButton": "Save service", | 180 | "settings.service.error.goBack": "Back to services", |
112 | "settings.service.form.deleteButton": "Delete service", | 181 | "settings.service.error.headline": "Error", |
113 | "settings.service.form.availableServices": "Available services", | 182 | "settings.service.error.message": "Could not load service recipe.", |
114 | "settings.service.form.yourServices": "Your services", | ||
115 | "settings.service.form.addServiceHeadline": "Add {name}", | 183 | "settings.service.form.addServiceHeadline": "Add {name}", |
116 | "settings.service.form.editServiceHeadline": "Edit {name}", | 184 | "settings.service.form.availableServices": "Available services", |
117 | "settings.service.form.tabHosted": "Hosted", | 185 | "settings.service.form.customUrl": "Custom server", |
118 | "settings.service.form.tabOnPremise": "Self hosted âï¸", | ||
119 | "settings.service.form.useHostedService": "Use the hosted {name} service.", | ||
120 | "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", | ||
121 | "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", | 186 | "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", |
122 | "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", | 187 | "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", |
123 | "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | 188 | "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", |
124 | "settings.service.form.name": "Name", | 189 | "settings.service.form.deleteButton": "Delete service", |
125 | "settings.service.form.enableService": "Enable service", | 190 | "settings.service.form.editServiceHeadline": "Edit {name}", |
126 | "settings.service.form.enableNotification": "Enable notifications", | ||
127 | "settings.service.form.enableBadge": "Show unread message badges", | ||
128 | "settings.service.form.team": "Team", | ||
129 | "settings.service.form.customUrl": "Custom server", | ||
130 | "settings.service.form.indirectMessages": "Show message badge for all new messages", | ||
131 | "settings.service.form.enableAudio": "Enable audio", | 191 | "settings.service.form.enableAudio": "Enable audio", |
132 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", | 192 | "settings.service.form.enableBadge": "Show unread message badges", |
133 | "settings.service.form.headlineNotifications": "Notifications", | 193 | "settings.service.form.enableDarkMode": "Enable Dark Mode", |
194 | "settings.service.form.enableNotification": "Enable notifications", | ||
195 | "settings.service.form.enableService": "Enable service", | ||
134 | "settings.service.form.headlineBadges": "Unread message badges", | 196 | "settings.service.form.headlineBadges": "Unread message badges", |
135 | "settings.service.form.headlineGeneral": "General", | 197 | "settings.service.form.headlineGeneral": "General", |
198 | "settings.service.form.headlineNotifications": "Notifications", | ||
136 | "settings.service.form.icon": "Custom icon", | 199 | "settings.service.form.icon": "Custom icon", |
137 | "settings.service.form.iconDelete": "Delete", | 200 | "settings.service.form.iconDelete": "Delete", |
138 | "settings.service.form.iconUpload": "Drop your image, or click here", | 201 | "settings.service.form.iconUpload": "Drop your image, or click here", |
139 | "settings.service.form.enableDarkMode": "Enable Dark Mode", | 202 | "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", |
203 | "settings.service.form.indirectMessages": "Show message badge for all new messages", | ||
204 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", | ||
205 | "settings.service.form.name": "Name", | ||
140 | "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", |
141 | "settings.service.form.proxy.isEnabled": "Use Proxy", | ||
142 | "settings.service.form.proxy.host": "Proxy Host/IP", | 207 | "settings.service.form.proxy.host": "Proxy Host/IP", |
143 | "settings.service.form.proxy.port": "Port", | ||
144 | "settings.service.form.proxy.user": "User (optional)", | ||
145 | "settings.service.form.proxy.password": "Password (optional)", | ||
146 | "settings.service.form.proxy.info": "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info": "Proxy settings will not synced with the Franz servers.", |
209 | "settings.service.form.proxy.isEnabled": "Use Proxy", | ||
210 | "settings.service.form.proxy.password": "Password (optional)", | ||
211 | "settings.service.form.proxy.port": "Port", | ||
147 | "settings.service.form.proxy.restartInfo": "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo": "Please restart Franz after changing proxy Settings.", |
148 | "settings.service.form.spellcheckerLanguage": "Spell checking Language", | 213 | "settings.service.form.proxy.user": "User (optional)", |
149 | "settings.service.form.spellcheckerLanguage.default": "Use System Default ({default})", | 214 | "settings.service.form.saveButton": "Save service", |
150 | "settings.service.error.headline": "Error", | 215 | "settings.service.form.tabHosted": "Hosted", |
151 | "settings.service.error.goBack": "Back to services", | 216 | "settings.service.form.tabOnPremise": "Self hosted âï¸", |
152 | "settings.service.error.message": "Could not load service recipe.", | 217 | "settings.service.form.team": "Team", |
153 | "settings.services.tooltip.isDisabled": "Service is disabled", | 218 | "settings.service.form.useHostedService": "Use the hosted {name} service.", |
154 | "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", | 219 | "settings.service.form.yourServices": "Your services", |
155 | "settings.services.tooltip.isMuted": "All sounds are muted", | 220 | "settings.services.deletedInfo": "Service has been deleted", |
221 | "settings.services.discoverServices": "Discover services", | ||
156 | "settings.services.headline": "Your services", | 222 | "settings.services.headline": "Your services", |
157 | "settings.services.noServicesAdded": "You haven't added any services yet.", | 223 | "settings.services.noServicesAdded": "You haven't added any services yet.", |
158 | "settings.services.discoverServices": "Discover services", | 224 | "settings.services.servicesRequestFailed": "Could not load your services", |
225 | "settings.services.tooltip.isDisabled": "Service is disabled", | ||
226 | "settings.services.tooltip.isMuted": "All sounds are muted", | ||
227 | "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", | ||
159 | "settings.services.updatedInfo": "Your changes have been saved", | 228 | "settings.services.updatedInfo": "Your changes have been saved", |
160 | "settings.services.deletedInfo": "Service has been deleted", | 229 | "settings.user.form.accountType.company": "Company", |
161 | "settings.app.headline": "Settings", | 230 | "settings.user.form.accountType.individual": "Individual", |
162 | "settings.app.headlineGeneral": "General", | 231 | "settings.user.form.accountType.label": "Account type", |
163 | "settings.app.headlineLanguage": "Language", | 232 | "settings.user.form.accountType.non-profit": "Non-Profit", |
164 | "settings.app.headlineUpdates": "Updates", | 233 | "settings.user.form.currentPassword": "Current password", |
165 | "settings.app.headlineAppearance": "Appearance", | 234 | "settings.user.form.email": "Email", |
166 | "settings.app.headlineAdvanced": "Advanced", | ||
167 | "settings.app.buttonSearchForUpdate": "Check for updates", | ||
168 | "settings.app.buttonInstallUpdate": "Restart & install update", | ||
169 | "settings.app.updateStatusSearching": "Is searching for update", | ||
170 | "settings.app.updateStatusAvailable": "Update available, downloading...", | ||
171 | "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", | ||
172 | "settings.app.subheadlineCache": "Cache", | ||
173 | "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.", | ||
174 | "settings.app.buttonClearAllCache": "Clear cache", | ||
175 | "settings.app.form.autoLaunchOnStart": "Launch Franz on start", | ||
176 | "settings.app.form.autoLaunchInBackground": "Open in background", | ||
177 | "settings.app.form.enableSystemTray": "Show Franz in system tray", | ||
178 | "settings.app.form.darkMode": "Join the Dark Side", | ||
179 | "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", | ||
180 | "settings.app.form.enableMenuBar": "Show Franz in Menu Bar", | ||
181 | "settings.app.form.hideDockIcon": "Hide Franz icon in Dock", | ||
182 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", | ||
183 | "settings.app.form.language": "Language", | ||
184 | "settings.app.form.enableSpellchecking": "Enable spell checking", | ||
185 | "settings.app.form.spellcheckerLanguage": "Spell checking language", | ||
186 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", | ||
187 | "settings.app.form.showDisabledServices": "Display disabled services tabs", | ||
188 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", | ||
189 | "settings.app.form.beta": "Include beta versions", | ||
190 | "settings.app.translationHelp": "Help us to translate Franz into your language.", | ||
191 | "settings.app.currentVersion": "Current version:", | ||
192 | "settings.app.restartRequired": "Changes require restart", | ||
193 | "settings.user.form.firstname": "First Name", | 235 | "settings.user.form.firstname": "First Name", |
194 | "settings.user.form.lastname": "Last Name", | 236 | "settings.user.form.lastname": "Last Name", |
195 | "settings.user.form.email": "Email", | ||
196 | "settings.user.form.currentPassword": "Current password", | ||
197 | "settings.user.form.newPassword": "New password", | 237 | "settings.user.form.newPassword": "New password", |
198 | "settings.user.form.accountType.label": "Account type", | 238 | "sidebar.addNewService": "Add new service", |
199 | "settings.user.form.accountType.individual": "Individual", | 239 | "sidebar.muteApp": "Disable notifications & audio", |
200 | "settings.user.form.accountType.non-profit": "Non-Profit", | 240 | "sidebar.settings": "Settings", |
201 | "settings.user.form.accountType.company": "Company", | 241 | "sidebar.unmuteApp": "Enable notifications & audio", |
242 | "signup.company.label": "Company", | ||
243 | "signup.email.label": "Email address", | ||
244 | "signup.emailDuplicate": "A user with that email address already exists", | ||
245 | "signup.firstname.label": "First Name", | ||
246 | "signup.headline": "Sign up", | ||
247 | "signup.lastname.label": "Last Name", | ||
248 | "signup.legal.info": "By creating a Franz account you accept the", | ||
249 | "signup.legal.privacy": "Privacy Statement", | ||
250 | "signup.legal.terms": "Terms of service", | ||
251 | "signup.link.login": "Already have an account, sign in?", | ||
252 | "signup.password.label": "Password", | ||
253 | "signup.submit.label": "Create account", | ||
254 | "subscription.euTaxInfo": "EU residents: local sales tax may apply", | ||
255 | "subscription.features.ads": "No ads, ever!", | ||
256 | "subscription.features.comingSoon": "coming soon", | ||
257 | "subscription.features.noInterruptions": "No app delays & nagging to upgrade license", | ||
258 | "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", | ||
259 | "subscription.features.proxy": "Proxy support for services", | ||
260 | "subscription.features.spellchecker": "Support for spellchecker", | ||
261 | "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", | ||
262 | "subscription.paymentSessionError": "Could not initialize payment form", | ||
263 | "subscription.submit.label": "I want to support the development of Franz", | ||
202 | "subscription.type.free": "free", | 264 | "subscription.type.free": "free", |
203 | "subscription.type.month": "month", | 265 | "subscription.type.month": "month", |
204 | "subscription.type.year": "year", | 266 | "subscription.type.year": "year", |
205 | "subscription.euTaxInfo": "EU residents: local sales tax may apply", | ||
206 | "subscriptionPopup.buttonCancel": "Cancel", | 267 | "subscriptionPopup.buttonCancel": "Cancel", |
207 | "subscriptionPopup.buttonDone": "Done", | 268 | "subscriptionPopup.buttonDone": "Done", |
208 | "tabs.item.reload": "Reload", | 269 | "tabs.item.deleteService": "Delete service", |
209 | "tabs.item.edit": "Edit", | ||
210 | "tabs.item.disableNotifications": "Disable notifications", | ||
211 | "tabs.item.enableNotification": "Enable notifications", | ||
212 | "tabs.item.disableAudio": "Disable audio", | 270 | "tabs.item.disableAudio": "Disable audio", |
213 | "tabs.item.enableAudio": "Enable audio", | 271 | "tabs.item.disableNotifications": "Disable notifications", |
214 | "tabs.item.disableService": "Disable service", | 272 | "tabs.item.disableService": "Disable service", |
273 | "tabs.item.edit": "Edit", | ||
274 | "tabs.item.enableAudio": "Enable audio", | ||
275 | "tabs.item.enableNotification": "Enable notifications", | ||
215 | "tabs.item.enableService": "Enable service", | 276 | "tabs.item.enableService": "Enable service", |
216 | "tabs.item.deleteService": "Delete service", | 277 | "tabs.item.reload": "Reload", |
217 | "service.crashHandler.headline": "Oh no!", | ||
218 | "service.crashHandler.text": "{name} has caused an error.", | ||
219 | "service.crashHandler.action": "Reload {name}", | ||
220 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", | ||
221 | "service.errorHandler.headline": "Oh no!", | ||
222 | "service.errorHandler.text": "{name} has failed to load.", | ||
223 | "service.errorHandler.message": "Error", | ||
224 | "service.errorHandler.action": "Reload {name}", | ||
225 | "service.errorHandler.editAction": "Edit {name}", | ||
226 | "service.disabledHandler.headline": "{name} is disabled", | ||
227 | "service.disabledHandler.action": "Enable {name}", | ||
228 | "menu.edit": "Edit", | ||
229 | "menu.edit.undo": "Undo", | ||
230 | "menu.edit.redo": "Redo", | ||
231 | "menu.edit.cut": "Cut", | ||
232 | "menu.edit.copy": "Copy", | ||
233 | "menu.edit.paste": "Paste", | ||
234 | "menu.edit.pasteAndMatchStyle": "Paste And Match Style", | ||
235 | "menu.edit.delete": "Delete", | ||
236 | "menu.edit.selectAll": "Select All", | ||
237 | "menu.edit.speech": "Speech", | ||
238 | "menu.edit.startSpeaking": "Start Speaking", | ||
239 | "menu.edit.stopSpeaking": "Stop Speaking", | ||
240 | "menu.edit.startDictation": "Start Dictation", | ||
241 | "menu.edit.emojiSymbols": "Emoji & Symbols", | ||
242 | "menu.view.resetZoom": "Actual Size", | ||
243 | "menu.view.zoomIn": "Zoom In", | ||
244 | "menu.view.zoomOut": "Zoom Out", | ||
245 | "menu.view.enterFullScreen": "Enter Full Screen", | ||
246 | "menu.view.exitFullScreen": "Exit Full Screen", | ||
247 | "menu.view.toggleFullScreen": "Toggle Full Screen", | ||
248 | "menu.view.toggleDevTools": "Toggle Developer Tools", | ||
249 | "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", | ||
250 | "menu.view.reloadService": "Reload Service", | ||
251 | "menu.view.reloadFranz": "Reload Franz", | ||
252 | "menu.window.minimize": "Minimize", | ||
253 | "menu.window.close": "Close", | ||
254 | "menu.help.learnMore": "Learn More", | ||
255 | "menu.help.changelog": "Changelog", | ||
256 | "menu.help.support": "Support", | ||
257 | "menu.help.tos": "Terms of Service", | ||
258 | "menu.help.privacy": "Privacy Statement", | ||
259 | "menu.file": "File", | ||
260 | "menu.view": "View", | ||
261 | "menu.services": "Services", | ||
262 | "menu.window": "Window", | ||
263 | "menu.help": "Help", | ||
264 | "menu.app.about": "About Franz", | ||
265 | "menu.app.settings": "Settings", | ||
266 | "menu.app.hide": "Hide", | ||
267 | "menu.app.hideOthers": "Hide Others", | ||
268 | "menu.app.unhide": "Unhide", | ||
269 | "menu.app.quit": "Quit", | ||
270 | "menu.services.addNewService": "Add New Service...", | ||
271 | "validation.required": "{field} is required", | ||
272 | "validation.email": "{field} is not valid", | 278 | "validation.email": "{field} is not valid", |
273 | "validation.url": "{field} is not a valid URL", | ||
274 | "validation.minLength": "{field} should be at least {length} characters long", | 279 | "validation.minLength": "{field} should be at least {length} characters long", |
275 | "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", | 280 | "validation.oneRequired": "At least one is required", |
276 | "feature.delayApp.action": "Get a Franz Supporter License", | 281 | "validation.required": "{field} is required", |
277 | "feature.delayApp.text": "Franz will continue in {seconds} seconds.", | 282 | "validation.url": "{field} is not a valid URL", |
278 | "premiumFeature.button.upgradeAccount": "Upgrade account", | 283 | "welcome.loginButton": "Login to your account", |
279 | "app.errorHandler.headline": "Something went wrong", | 284 | "welcome.signupButton": "Create a free account" |
280 | "app.errorHandler.action": "Reload" | 285 | } \ No newline at end of file |
281 | } | ||
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 669b4d2dd..3ac23d9a5 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recargar", | 2 | "app.errorHandler.action" : "Recargar", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Ha surgido un error", |
4 | "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", | 4 | "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", |
5 | "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera", | 5 | "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera", |
6 | "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", | 6 | "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "No es posible conectarse a los servicios en lÃnea de Franz.", | 14 | "global.api.unhealthy" : "No es posible conectarse a los servicios en lÃnea de Franz.", |
8 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", | 15 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", |
16 | "global.spellchecker.useDefault" : "Utilizar estándar del sistema ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Corrector de ortografÃa", | ||
9 | "import.headline" : "Importa tus servicios de Franz 4", | 20 | "import.headline" : "Importa tus servicios de Franz 4", |
10 | "import.notSupportedHeadline" : "Servicios no admitidos aún en Franz 5", | 21 | "import.notSupportedHeadline" : "Servicios no admitidos aún en Franz 5", |
11 | "import.skip.label" : "Quiero agregar servicios manualmente", | 22 | "import.skip.label" : "Quiero agregar servicios manualmente", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Editar {name}", | 107 | "service.errorHandler.editAction" : "Editar {name}", |
97 | "service.errorHandler.headline" : "¡Oh, no!", | 108 | "service.errorHandler.headline" : "¡Oh, no!", |
98 | "service.errorHandler.message" : "Error", | 109 | "service.errorHandler.message" : "Error", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} ha fallado la carga", |
100 | "services.getStarted" : "Primeros pasos", | 111 | "services.getStarted" : "Primeros pasos", |
101 | "services.welcome" : "Bienvenido a Franz", | 112 | "services.welcome" : "Bienvenido a Franz", |
102 | "settings.account.account.editButton" : "Editar cuenta", | 113 | "settings.account.account.editButton" : "Editar cuenta", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Mostrar señal de notificación para todos los mensajes nuevos", | 203 | "settings.service.form.indirectMessages" : "Mostrar señal de notificación para todos los mensajes nuevos", |
193 | "settings.service.form.isMutedInfo" : "Cuando estén desactivados, todos los sonidos de notificación y la reproducción de audio serán silenciados", | 204 | "settings.service.form.isMutedInfo" : "Cuando estén desactivados, todos los sonidos de notificación y la reproducción de audio serán silenciados", |
194 | "settings.service.form.name" : "Nombre", | 205 | "settings.service.form.name" : "Nombre", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Ajustes Proxy HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Las configuraciones de Proxy no se sincronizarán con los servidores de Franz.", | 208 | "settings.service.form.proxy.info" : "Las configuraciones de Proxy no se sincronizarán con los servidores de Franz.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Use Proxy", |
199 | "settings.service.form.proxy.password" : "Contraseña (opcional)", | 210 | "settings.service.form.proxy.password" : "Contraseña (opcional)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Puerto", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Por favor reinicie Franz despues de modificar los ajustes proxy.", |
202 | "settings.service.form.proxy.user" : "Usuario (opcional)", | 213 | "settings.service.form.proxy.user" : "Usuario (opcional)", |
203 | "settings.service.form.saveButton" : "Guardar servicio", | 214 | "settings.service.form.saveButton" : "Guardar servicio", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Marcar faltas de ortografÃa", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Utilizar estándar del sistema ({default})", |
206 | "settings.service.form.tabHosted" : "Alojado", | 217 | "settings.service.form.tabHosted" : "Alojado", |
207 | "settings.service.form.tabOnPremise" : "Auto alojado âï¸", | 218 | "settings.service.form.tabOnPremise" : "Auto alojado âï¸", |
208 | "settings.service.form.team" : "Equipo", | 219 | "settings.service.form.team" : "Equipo", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index a83767f1e..8af875a3d 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recharger", | 2 | "app.errorHandler.action" : "Recharger", |
3 | "app.errorHandler.headline" : "Une erreur s'est produite.", | 3 | "app.errorHandler.headline" : "Une erreur s'est produite", |
4 | "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", | 4 | "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", |
5 | "feature.delayApp.headline" : "Veuillez acheter une licence de Supporter Franz pour sauter le temps d'attente", | 5 | "feature.delayApp.headline" : "Veuillez acheter une licence de Supporter Franz pour sauter le temps d'attente", |
6 | "feature.delayApp.text" : "Franz continuera dans {seconds} secondes.", | 6 | "feature.delayApp.text" : "Franz reprendra dans {seconds} secondes.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", | 14 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", |
8 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", | 15 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", |
16 | "global.spellchecker.useDefault" : "Par défaut ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Langue de la vérification orthographique", | ||
9 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", | 20 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", |
10 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5", | 21 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5", |
11 | "import.skip.label" : "Je veux ajouter des services manuellement", | 22 | "import.skip.label" : "Je veux ajouter des services manuellement", |
@@ -198,10 +209,10 @@ | |||
198 | "settings.service.form.proxy.isEnabled" : "Utiliser un proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Utiliser un proxy", |
199 | "settings.service.form.proxy.password" : "Mot de passe (facultatif)", | 210 | "settings.service.form.proxy.password" : "Mot de passe (facultatif)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Franz après avoir modifier les paramètres proxy.", | 212 | "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Franz après avoir modifié les paramètres proxy.", |
202 | "settings.service.form.proxy.user" : "Utilisateur (facultatif)", | 213 | "settings.service.form.proxy.user" : "Utilisateur (facultatif)", |
203 | "settings.service.form.saveButton" : "Enregistrer le service", | 214 | "settings.service.form.saveButton" : "Enregistrer le service", |
204 | "settings.service.form.spellcheckerLanguage" : "Veuillez vérifier l'épellation Langage", | 215 | "settings.service.form.spellcheckerLanguage" : "Langue de vérification d'orthographe", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Par défaut ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Par défaut ({default})", |
206 | "settings.service.form.tabHosted" : "Hébergé", | 217 | "settings.service.form.tabHosted" : "Hébergé", |
207 | "settings.service.form.tabOnPremise" : "Auto-hébergé âï¸", | 218 | "settings.service.form.tabOnPremise" : "Auto-hébergé âï¸", |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 0d3d8623e..2b3d39b73 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -4,8 +4,19 @@ | |||
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nà féidir nascadh le seirbhÃsà Franz ar lÃne", | 14 | "global.api.unhealthy" : "Nà féidir nascadh le seirbhÃsà Franz ar lÃne", |
8 | "global.notConnectedToTheInternet" : "NÃl tú nasctha leis an IdirlÃon.", | 15 | "global.notConnectedToTheInternet" : "NÃl tú nasctha leis an IdirlÃon.", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "Iompórtáil do sheirbhÃsà Franz 4", | 20 | "import.headline" : "Iompórtáil do sheirbhÃsà Franz 4", |
10 | "import.notSupportedHeadline" : "NÃl na seirbhÃsà seo taca ag Franz 5 go fóill", | 21 | "import.notSupportedHeadline" : "NÃl na seirbhÃsà seo taca ag Franz 5 go fóill", |
11 | "import.skip.label" : "Ba mhaith liom seirbhÃsà a chur de láimh", | 22 | "import.skip.label" : "Ba mhaith liom seirbhÃsà a chur de láimh", |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 2ff69755d..dc1d579fa 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -4,8 +4,19 @@ | |||
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ", | 14 | "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ", |
8 | "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ", | 15 | "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "Uvezite svoje Franc 4 servise. ", | 20 | "import.headline" : "Uvezite svoje Franc 4 servise. ", |
10 | "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis", | 21 | "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis", |
11 | "import.skip.label" : "Želim ruÄno dodati ove usluge", | 22 | "import.skip.label" : "Želim ruÄno dodati ove usluge", |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 0b396cf3b..ddaffeebb 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Újratöltés", | 2 | "app.errorHandler.action" : "Újratöltés", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Valami nem jött össze", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Szerezz egy Franz Támogatói Liszencet", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "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.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "A Franz továbblép {seconds} másodperc múlva.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatáshoz", | 14 | "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatáshoz", |
8 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", | 15 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", |
16 | "global.spellchecker.useDefault" : "Rendszer alapbeállÃtás használata ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "HelyesÃrás-ellenÅ‘rzÅ‘ nyelve", | ||
9 | "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", | 20 | "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", |
10 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", | 21 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", |
11 | "import.skip.label" : "Manuálisan szeretném hozzáadni a szolgáltatásokat", | 22 | "import.skip.label" : "Manuálisan szeretném hozzáadni a szolgáltatásokat", |
@@ -51,7 +62,7 @@ | |||
51 | "menu.edit.startSpeaking" : "Beszélgetés kezdeményezése", | 62 | "menu.edit.startSpeaking" : "Beszélgetés kezdeményezése", |
52 | "menu.edit.stopSpeaking" : "Beszéd vége", | 63 | "menu.edit.stopSpeaking" : "Beszéd vége", |
53 | "menu.edit.undo" : "Visszavonás", | 64 | "menu.edit.undo" : "Visszavonás", |
54 | "menu.file" : "fájl", | 65 | "menu.file" : "Fájl", |
55 | "menu.help" : "Súgó", | 66 | "menu.help" : "Súgó", |
56 | "menu.help.changelog" : "Változások listája", | 67 | "menu.help.changelog" : "Változások listája", |
57 | "menu.help.learnMore" : "Tudjon meg többet", | 68 | "menu.help.learnMore" : "Tudjon meg többet", |
@@ -59,16 +70,16 @@ | |||
59 | "menu.help.support" : "Támogatás", | 70 | "menu.help.support" : "Támogatás", |
60 | "menu.help.tos" : "Felhasználói feltételek", | 71 | "menu.help.tos" : "Felhasználói feltételek", |
61 | "menu.services" : "Szolgáltatások", | 72 | "menu.services" : "Szolgáltatások", |
62 | "menu.services.addNewService" : "Új kiszolgáló hozzáadása", | 73 | "menu.services.addNewService" : "Új szolgáltatás hozzáadása...", |
63 | "menu.view" : "Nézet", | 74 | "menu.view" : "Nézet", |
64 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", | 75 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", |
65 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", | 76 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", |
66 | "menu.view.reloadFranz" : "Franz újrainditása", | 77 | "menu.view.reloadFranz" : "Franz újrainditása", |
67 | "menu.view.reloadService" : "Kiszolgáló újraindÃtása", | 78 | "menu.view.reloadService" : "Szolgáltatás újraindÃtása", |
68 | "menu.view.resetZoom" : "Tényleges méret", | 79 | "menu.view.resetZoom" : "Tényleges méret", |
69 | "menu.view.toggleDevTools" : "fejlesztői eszközök bekapcsolása", | 80 | "menu.view.toggleDevTools" : "Fejlesztői eszközök ki\/bekapcsolása", |
70 | "menu.view.toggleFullScreen" : "Váltás Teljes képernyős módra", | 81 | "menu.view.toggleFullScreen" : "Teljes képernyős mód ki\/bekapcsolása", |
71 | "menu.view.toggleServiceDevTools" : "Kiszolgáló Fejlesztői Eszközök Bekapcsolása", | 82 | "menu.view.toggleServiceDevTools" : "Szolgáltatás Fejlesztői Eszközök ki\/bekapcsolása", |
72 | "menu.view.zoomIn" : "NagyÃtás", | 83 | "menu.view.zoomIn" : "NagyÃtás", |
73 | "menu.view.zoomOut" : "KicsinyÃtés", | 84 | "menu.view.zoomOut" : "KicsinyÃtés", |
74 | "menu.window" : "Ablak", | 85 | "menu.window" : "Ablak", |
@@ -81,13 +92,13 @@ | |||
81 | "password.noUser" : "Nem található felhasználó a megadott email cÃmmel", | 92 | "password.noUser" : "Nem található felhasználó a megadott email cÃmmel", |
82 | "password.submit.label" : "Küldés", | 93 | "password.submit.label" : "Küldés", |
83 | "password.successInfo" : "Ellenőrizd az email fiókodat", | 94 | "password.successInfo" : "Ellenőrizd az email fiókodat", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Fiók frissÃtése", |
85 | "pricing.headline" : "Támogasd a Franz-ot", | 96 | "pricing.headline" : "Támogasd a Franz-ot", |
86 | "pricing.link.skipPayment" : "Nem szeretném támogatni a Franz fejlesztését.", | 97 | "pricing.link.skipPayment" : "Nem szeretném támogatni a Franz fejlesztését.", |
87 | "pricing.submit.label" : "Támogatni szeretném a Franz fejlesztését.", | 98 | "pricing.submit.label" : "Támogatni szeretném a Franz fejlesztését", |
88 | "pricing.support.label" : "Válaszd ki a támogatás módját", | 99 | "pricing.support.label" : "Válaszd ki a támogatás módját", |
89 | "service.crashHandler.action" : "{name} újratöltése", | 100 | "service.crashHandler.action" : "{name} újratöltése", |
90 | "service.crashHandler.autoReload" : "Megpróbáljuk automatikusan helyreállÃtani {name}-t {seconds} mp-en belül", | 101 | "service.crashHandler.autoReload" : "{name} automatikusan helyreállÃtása {seconds} másodpercen belül", |
91 | "service.crashHandler.headline" : "Jajj ne!", | 102 | "service.crashHandler.headline" : "Jajj ne!", |
92 | "service.crashHandler.text" : "{name} hibát okozott.", | 103 | "service.crashHandler.text" : "{name} hibát okozott.", |
93 | "service.disabledHandler.action" : "{name} engedélyezése", | 104 | "service.disabledHandler.action" : "{name} engedélyezése", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "{name} szerkesztése", | 107 | "service.errorHandler.editAction" : "{name} szerkesztése", |
97 | "service.errorHandler.headline" : "Jajj ne!", | 108 | "service.errorHandler.headline" : "Jajj ne!", |
98 | "service.errorHandler.message" : "Hiba", | 109 | "service.errorHandler.message" : "Hiba", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} nem tudott betöltődni.", |
100 | "services.getStarted" : "Kezdj hozzá", | 111 | "services.getStarted" : "Kezdj hozzá", |
101 | "services.welcome" : "Üdvözöl a Franz", | 112 | "services.welcome" : "Üdvözöl a Franz", |
102 | "settings.account.account.editButton" : "Fiók szerkesztése", | 113 | "settings.account.account.editButton" : "Fiók szerkesztése", |
@@ -108,7 +119,7 @@ | |||
108 | "settings.account.deleteInfo" : "Ha még nem szeretnéd fenntartani a Franz-fiókodat, akkor itt törölheted minden hozzá kapcsolódó adattal együtt.", | 119 | "settings.account.deleteInfo" : "Ha még nem szeretnéd fenntartani a Franz-fiókodat, akkor itt törölheted minden hozzá kapcsolódó adattal együtt.", |
109 | "settings.account.headline" : "Fiók", | 120 | "settings.account.headline" : "Fiók", |
110 | "settings.account.headlineAccount" : "Fiókinformációk", | 121 | "settings.account.headlineAccount" : "Fiókinformációk", |
111 | "settings.account.headlineDangerZone" : "Veszélyes terület, óvatosan!", | 122 | "settings.account.headlineDangerZone" : "Veszélyes terület", |
112 | "settings.account.headlineInvoices" : "Számlák", | 123 | "settings.account.headlineInvoices" : "Számlák", |
113 | "settings.account.headlinePassword" : "Jelszócsere", | 124 | "settings.account.headlinePassword" : "Jelszócsere", |
114 | "settings.account.headlineProfile" : "Profil frissÃtése", | 125 | "settings.account.headlineProfile" : "Profil frissÃtése", |
@@ -122,13 +133,13 @@ | |||
122 | "settings.app.buttonClearAllCache" : "GyorsÃtótár törlése", | 133 | "settings.app.buttonClearAllCache" : "GyorsÃtótár törlése", |
123 | "settings.app.buttonInstallUpdate" : "ÚjraindÃtás és frissÃtések telepÃtése", | 134 | "settings.app.buttonInstallUpdate" : "ÚjraindÃtás és frissÃtések telepÃtése", |
124 | "settings.app.buttonSearchForUpdate" : "FrissÃtések keresése", | 135 | "settings.app.buttonSearchForUpdate" : "FrissÃtések keresése", |
125 | "settings.app.cacheInfo" : "A Franz gyorsÃtótár jelenleg {space} lemezterületet használ.", | 136 | "settings.app.cacheInfo" : "A Franz gyorsÃtótár jelenleg {size} lemezterületet használ.", |
126 | "settings.app.currentVersion" : "Aktuális verzió:", | 137 | "settings.app.currentVersion" : "Aktuális verzió:", |
127 | "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben", | 138 | "settings.app.form.autoLaunchInBackground" : "Megnyitás háttérben", |
128 | "settings.app.form.autoLaunchOnStart" : "Franz betöltése indÃtáskor", | 139 | "settings.app.form.autoLaunchOnStart" : "Franz betöltése indÃtáskor", |
129 | "settings.app.form.beta" : "Béta verziók keresése", | 140 | "settings.app.form.beta" : "Béta verziók keresése", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz", |
131 | "settings.app.form.enableGPUAcceleration" : "hardveres gyorsÃtás engedélyezése", | 142 | "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsÃtás engedélyezése", |
132 | "settings.app.form.enableMenuBar" : "Franz megjelenÃtése a menüsorban", | 143 | "settings.app.form.enableMenuBar" : "Franz megjelenÃtése a menüsorban", |
133 | "settings.app.form.enableSpellchecking" : "HelyesÃrás-ellenÅ‘rzés engedélyezése", | 144 | "settings.app.form.enableSpellchecking" : "HelyesÃrás-ellenÅ‘rzés engedélyezése", |
134 | "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán", | 145 | "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán", |
@@ -137,8 +148,8 @@ | |||
137 | "settings.app.form.minimizeToSystemTray" : "Franz kicsinyÃtése a tálcára", | 148 | "settings.app.form.minimizeToSystemTray" : "Franz kicsinyÃtése a tálcára", |
138 | "settings.app.form.runInBackground" : "Franz fusson a háttérben az ablak bezárásakor", | 149 | "settings.app.form.runInBackground" : "Franz fusson a háttérben az ablak bezárásakor", |
139 | "settings.app.form.showDisabledServices" : "Letiltott szolgáltatások megjelenÃtése", | 150 | "settings.app.form.showDisabledServices" : "Letiltott szolgáltatások megjelenÃtése", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mutass az 'olvasatlan üzenet' jelzést amikor az értesÃtések le vannak tiltva.", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mutassa az 'olvasatlan üzenet' jelzést, amikor az értesÃtések le vannak tiltva", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "HelyesÃrás-ellenÅ‘rzÅ‘ nyelve", |
142 | "settings.app.headline" : "BeállÃtások", | 153 | "settings.app.headline" : "BeállÃtások", |
143 | "settings.app.headlineAdvanced" : "Haladó", | 154 | "settings.app.headlineAdvanced" : "Haladó", |
144 | "settings.app.headlineAppearance" : "Megjelenés", | 155 | "settings.app.headlineAppearance" : "Megjelenés", |
@@ -151,7 +162,7 @@ | |||
151 | "settings.app.updateStatusAvailable" : "FrissÃtés elérhetÅ‘, letöltés folyamatban...", | 162 | "settings.app.updateStatusAvailable" : "FrissÃtés elérhetÅ‘, letöltés folyamatban...", |
152 | "settings.app.updateStatusSearching" : "FrissÃtéseket keres", | 163 | "settings.app.updateStatusSearching" : "FrissÃtéseket keres", |
153 | "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod", | 164 | "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verzióját használod", |
154 | "settings.invite.headline" : "Barát meghÃvása", | 165 | "settings.invite.headline" : "Barátok meghÃvása", |
155 | "settings.navigation.account" : "Fiók", | 166 | "settings.navigation.account" : "Fiók", |
156 | "settings.navigation.availableServices" : "Elérhető szolgáltatások", | 167 | "settings.navigation.availableServices" : "Elérhető szolgáltatások", |
157 | "settings.navigation.inviteFriends" : "Barát meghÃvása", | 168 | "settings.navigation.inviteFriends" : "Barát meghÃvása", |
@@ -164,7 +175,7 @@ | |||
164 | "settings.recipes.missingService" : "Hiányzik egy szolgáltatás?", | 175 | "settings.recipes.missingService" : "Hiányzik egy szolgáltatás?", |
165 | "settings.recipes.mostPopular" : "Legnépszerűbb", | 176 | "settings.recipes.mostPopular" : "Legnépszerűbb", |
166 | "settings.recipes.nothingFound" : "Sajnáljuk, nincs egyezés a szolgáltatások között a keresett kifejezésre.", | 177 | "settings.recipes.nothingFound" : "Sajnáljuk, nincs egyezés a szolgáltatások között a keresett kifejezésre.", |
167 | "settings.recipes.servicesSuccessfulAddedInfo" : "Szolgáltatás sikeresen hozzáadva.", | 178 | "settings.recipes.servicesSuccessfulAddedInfo" : "Szolgáltatás sikeresen hozzáadva", |
168 | "settings.searchService" : "Szolgáltatások keresése", | 179 | "settings.searchService" : "Szolgáltatások keresése", |
169 | "settings.service.error.goBack" : "Vissza a szolgáltatásokhoz", | 180 | "settings.service.error.goBack" : "Vissza a szolgáltatásokhoz", |
170 | "settings.service.error.headline" : "Hiba", | 181 | "settings.service.error.headline" : "Hiba", |
@@ -174,12 +185,12 @@ | |||
174 | "settings.service.form.customUrl" : "Egyéni szerver", | 185 | "settings.service.form.customUrl" : "Egyéni szerver", |
175 | "settings.service.form.customUrlPremiumInfo" : "Egyénileg üzemeltetett szolgáltatások hozzáadásához Franz Prémium Támogató Fiók szükséges.", | 186 | "settings.service.form.customUrlPremiumInfo" : "Egyénileg üzemeltetett szolgáltatások hozzáadásához Franz Prémium Támogató Fiók szükséges.", |
176 | "settings.service.form.customUrlUpgradeAccount" : "FrissÃtsd fiókodat", | 187 | "settings.service.form.customUrlUpgradeAccount" : "FrissÃtsd fiókodat", |
177 | "settings.service.form.customUrlValidationError" : "Nem sikerült hitelesÃteni az egyéni {name} szervert.", | 188 | "settings.service.form.customUrlValidationError" : "Nem sikerült érvényesÃteni az egyéni {name} kiszolgálót.", |
178 | "settings.service.form.deleteButton" : "Szolgáltatás törlése", | 189 | "settings.service.form.deleteButton" : "Szolgáltatás törlése", |
179 | "settings.service.form.editServiceHeadline" : "{name} szerkesztése", | 190 | "settings.service.form.editServiceHeadline" : "{name} szerkesztése", |
180 | "settings.service.form.enableAudio" : "Hang engedélyezése", | 191 | "settings.service.form.enableAudio" : "Hang engedélyezése", |
181 | "settings.service.form.enableBadge" : "Mutasd az olvasatlan jelzéseket", | 192 | "settings.service.form.enableBadge" : "Mutasd az olvasatlan jelzéseket", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Sötét mód engedélyezése", |
183 | "settings.service.form.enableNotification" : "ÉrtesÃtések engedélyezése", | 194 | "settings.service.form.enableNotification" : "ÉrtesÃtések engedélyezése", |
184 | "settings.service.form.enableService" : "Szolgáltatás engedélyezése", | 195 | "settings.service.form.enableService" : "Szolgáltatás engedélyezése", |
185 | "settings.service.form.headlineBadges" : "Olvasatlan üzenet jelzések", | 196 | "settings.service.form.headlineBadges" : "Olvasatlan üzenet jelzések", |
@@ -188,31 +199,31 @@ | |||
188 | "settings.service.form.icon" : "Egyedi ikon", | 199 | "settings.service.form.icon" : "Egyedi ikon", |
189 | "settings.service.form.iconDelete" : "Törlés", | 200 | "settings.service.form.iconDelete" : "Törlés", |
190 | "settings.service.form.iconUpload" : "Húzd ide a képet, vagy kattints ide", | 201 | "settings.service.form.iconUpload" : "Húzd ide a képet, vagy kattints ide", |
191 | "settings.service.form.indirectMessageInfo" : "ÉrtesÃtést kapsz minden üzenetrÅ‘l a csatornában, nem csak @felhasználónév, @csatorna @here és egyéb emlÃtések esetén", | 202 | "settings.service.form.indirectMessageInfo" : "ÉrtesÃtést kapsz minden üzenetrÅ‘l a csatornában, nem csak @felhasználónév, @csatorna, @here és egyéb emlÃtések esetén", |
192 | "settings.service.form.indirectMessages" : "Ãœzenet kitűzÅ‘ megjelenÃtése minden üzenethez", | 203 | "settings.service.form.indirectMessages" : "Ãœzenet kitűzÅ‘ megjelenÃtése minden üzenethez", |
193 | "settings.service.form.isMutedInfo" : "Ha kikapcsolod, minden értesÃtési és lejátszott hang némÃtásra kerül.", | 204 | "settings.service.form.isMutedInfo" : "Ha kikapcsolod, minden értesÃtési és lejátszott hang némÃtásra kerül", |
194 | "settings.service.form.name" : "Név", | 205 | "settings.service.form.name" : "Név", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy beállÃtások", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "Proxy beállÃtások nem szinkronizálódnak a Franz kiszolgálókkal.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Proxy használata", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Jelszó (opcionális)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Kérjük indÃtsd újra a Franz-ot a proxy beállÃtások megváltoztatása után.", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Felhasználó (opcionális)", |
203 | "settings.service.form.saveButton" : "Szolgáltatás mentése", | 214 | "settings.service.form.saveButton" : "Szolgáltatás mentése", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "HelyesÃrás-ellenÅ‘rzÅ‘ nyelve", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Rendszer alapbeállÃtás használata ({default})", |
206 | "settings.service.form.tabHosted" : "Ãœzemeltetett", | 217 | "settings.service.form.tabHosted" : "Ãœzemeltetett", |
207 | "settings.service.form.tabOnPremise" : "Egyénileg üzemeltetett", | 218 | "settings.service.form.tabOnPremise" : "Egyénileg üzemeltetett", |
208 | "settings.service.form.team" : "Csapat", | 219 | "settings.service.form.team" : "Csapat", |
209 | "settings.service.form.useHostedService" : "A távoli {name} szolgáltatás használata", | 220 | "settings.service.form.useHostedService" : "A távoli {name} szolgáltatás használata.", |
210 | "settings.service.form.yourServices" : "Szolgáltatásaid", | 221 | "settings.service.form.yourServices" : "Szolgáltatásaid", |
211 | "settings.services.deletedInfo" : "A szolgáltatás törlésre került", | 222 | "settings.services.deletedInfo" : "A szolgáltatás törlésre került", |
212 | "settings.services.discoverServices" : "Szolgáltatások felfedezése", | 223 | "settings.services.discoverServices" : "Szolgáltatások felfedezése", |
213 | "settings.services.headline" : "Szolgáltatásaid", | 224 | "settings.services.headline" : "Szolgáltatásaid", |
214 | "settings.services.noServicesAdded" : "Még nem adtál hozzá egyetlen szolgáltatást sem eddig.", | 225 | "settings.services.noServicesAdded" : "Még nem adtál hozzá egyetlen szolgáltatást sem eddig.", |
215 | "settings.services.tooltip.isDisabled" : "Ez a szolgáltatás le van tiltva.", | 226 | "settings.services.tooltip.isDisabled" : "A szolgáltatás le van tiltva", |
216 | "settings.services.tooltip.isMuted" : "Minden hang lenémÃtva", | 227 | "settings.services.tooltip.isMuted" : "Minden hang lenémÃtva", |
217 | "settings.services.tooltip.notificationsDisabled" : "ÉrtesÃtések letiltva", | 228 | "settings.services.tooltip.notificationsDisabled" : "ÉrtesÃtések letiltva", |
218 | "settings.services.updatedInfo" : "A módosÃtásokat elmentettük", | 229 | "settings.services.updatedInfo" : "A módosÃtásokat elmentettük", |
@@ -243,13 +254,13 @@ | |||
243 | "signup.submit.label" : "Fiók létrehozása", | 254 | "signup.submit.label" : "Fiók létrehozása", |
244 | "subscription.euTaxInfo" : "EU állampolgárok: helyi vásárlás esetén adók kerülhetnek felszámolásra", | 255 | "subscription.euTaxInfo" : "EU állampolgárok: helyi vásárlás esetén adók kerülhetnek felszámolásra", |
245 | "subscription.features.ads" : "Hirdetésmentes, mindig!", | 256 | "subscription.features.ads" : "Hirdetésmentes, mindig!", |
246 | "subscription.features.comingSoon" : "Hamarosan!", | 257 | "subscription.features.comingSoon" : "hamarosan", |
247 | "subscription.features.encryptedSync" : "TitkosÃtott munkamenet szinkronizálás", | 258 | "subscription.features.encryptedSync" : "TitkosÃtott munkamenet szinkronizálás", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Nincs több app késlekedés és liszencfrissÃtési piszkálás", |
249 | "subscription.features.onpremise" : "Helyi\/üzemeltetett szolgáltatások használata, pl. HipChat", | 260 | "subscription.features.onpremise" : "Helyi\/üzemeltetett szolgáltatások használata, pl. HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Saját kiszolgálós szolgáltatások hozzáadása, pl.: Mattermost", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Proxy támogatás a szolgáltatásokhoz", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Támogatás a HelyesÃrás-ellenÅ‘rzÅ‘höz", |
253 | "subscription.includedFeatures" : "Az előfizetett Franz Prémium Támogató Fiók tartalmazza", | 264 | "subscription.includedFeatures" : "Az előfizetett Franz Prémium Támogató Fiók tartalmazza", |
254 | "subscription.paymentSessionError" : "Nem sikerült a fizetési felületet betölteni", | 265 | "subscription.paymentSessionError" : "Nem sikerült a fizetési felületet betölteni", |
255 | "subscription.submit.label" : "Szeretném támogatni a Franz fejlesztését", | 266 | "subscription.submit.label" : "Szeretném támogatni a Franz fejlesztését", |
@@ -268,8 +279,8 @@ | |||
268 | "tabs.item.enableService" : "Szolgáltatás engedélyezése", | 279 | "tabs.item.enableService" : "Szolgáltatás engedélyezése", |
269 | "tabs.item.reload" : "Újratöltés", | 280 | "tabs.item.reload" : "Újratöltés", |
270 | "validation.email" : "{field} nem érvényes", | 281 | "validation.email" : "{field} nem érvényes", |
271 | "validation.minLength" : "{field} legalább {length} karakter hosszúnak kell lennie", | 282 | "validation.minLength" : "{field} mezőnek legalább {length} karakter hosszúnak kell lennie", |
272 | "validation.required" : "{field} Kitöltése kötelező", | 283 | "validation.required" : "{field} kitöltése kötelező", |
273 | "validation.url" : "{field} nem érvényes URL", | 284 | "validation.url" : "{field} nem érvényes URL", |
274 | "welcome.loginButton" : "Jelentkezz be a fiókodba", | 285 | "welcome.loginButton" : "Jelentkezz be a fiókodba", |
275 | "welcome.signupButton" : "Új fiók létrehozása", | 286 | "welcome.signupButton" : "Új fiók létrehozása", |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 11596d142..6abbf064b 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Muat Ulang", | 2 | "app.errorHandler.action" : "Muat Ulang", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Terjadi kesalahan", |
4 | "feature.delayApp.action" : "Dapatkan Franz Supporter License", | 4 | "feature.delayApp.action" : "Dapatkan Franz Supporter License", |
5 | "feature.delayApp.headline" : "Beli Franz Supporter License agar tidak perlu menunggu", | 5 | "feature.delayApp.headline" : "Beli Franz Supporter License agar tidak perlu menunggu", |
6 | "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", | 6 | "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", | 14 | "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", |
8 | "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", | 15 | "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", |
16 | "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Periksa ejaan", | ||
9 | "import.headline" : "Impor layanan Franz 4 Anda", | 20 | "import.headline" : "Impor layanan Franz 4 Anda", |
10 | "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", | 21 | "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", |
11 | "import.skip.label" : "Saya ingin menambahkan layanan secara manual", | 22 | "import.skip.label" : "Saya ingin menambahkan layanan secara manual", |
@@ -92,11 +103,11 @@ | |||
92 | "service.crashHandler.text" : "{name} menyebabkan kesalahan.", | 103 | "service.crashHandler.text" : "{name} menyebabkan kesalahan.", |
93 | "service.disabledHandler.action" : "Aktifkan {name}", | 104 | "service.disabledHandler.action" : "Aktifkan {name}", |
94 | "service.disabledHandler.headline" : "{name} dinonaktifkan", | 105 | "service.disabledHandler.headline" : "{name} dinonaktifkan", |
95 | "service.errorHandler.action" : "Muat Ulang {name}", | 106 | "service.errorHandler.action" : "Muat ulang {name}", |
96 | "service.errorHandler.editAction" : "Edit {nama}", | 107 | "service.errorHandler.editAction" : "Edit {nama}", |
97 | "service.errorHandler.headline" : "Ya Ampun!", | 108 | "service.errorHandler.headline" : "Oh tidak!", |
98 | "service.errorHandler.message" : "Kesalahan", | 109 | "service.errorHandler.message" : "Kesalahan", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} gagal dimuat", |
100 | "services.getStarted" : "Ayo mulai!", | 111 | "services.getStarted" : "Ayo mulai!", |
101 | "services.welcome" : "Selamat datang di Franz", | 112 | "services.welcome" : "Selamat datang di Franz", |
102 | "settings.account.account.editButton" : "Edit akun", | 113 | "settings.account.account.editButton" : "Edit akun", |
@@ -167,7 +178,7 @@ | |||
167 | "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan", | 178 | "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan", |
168 | "settings.searchService" : "Cari layanan", | 179 | "settings.searchService" : "Cari layanan", |
169 | "settings.service.error.goBack" : "Kembali ke layanan", | 180 | "settings.service.error.goBack" : "Kembali ke layanan", |
170 | "settings.service.error.headline" : "Kesalahan", | 181 | "settings.service.error.headline" : "Terjadi kesalahan", |
171 | "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.", | 182 | "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.", |
172 | "settings.service.form.addServiceHeadline" : "Tambahkan {name}", | 183 | "settings.service.form.addServiceHeadline" : "Tambahkan {name}", |
173 | "settings.service.form.availableServices" : "Layanan tersedia", | 184 | "settings.service.form.availableServices" : "Layanan tersedia", |
@@ -176,7 +187,7 @@ | |||
176 | "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", | 187 | "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", |
177 | "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.", | 188 | "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.", |
178 | "settings.service.form.deleteButton" : "Hapus layanan", | 189 | "settings.service.form.deleteButton" : "Hapus layanan", |
179 | "settings.service.form.editServiceHeadline" : "Edit {nama}", | 190 | "settings.service.form.editServiceHeadline" : "Edit {name}", |
180 | "settings.service.form.enableAudio" : "Aktifkan audio", | 191 | "settings.service.form.enableAudio" : "Aktifkan audio", |
181 | "settings.service.form.enableBadge" : "Tampilkan lencana pesan belum dibaca", | 192 | "settings.service.form.enableBadge" : "Tampilkan lencana pesan belum dibaca", |
182 | "settings.service.form.enableDarkMode" : "Aktifkan Mode Gelap", | 193 | "settings.service.form.enableDarkMode" : "Aktifkan Mode Gelap", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan baru", | 203 | "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan baru", |
193 | "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara pemberitahuan dan pemutaran audio akan dibisukan", | 204 | "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara pemberitahuan dan pemutaran audio akan dibisukan", |
194 | "settings.service.form.name" : "Nama", | 205 | "settings.service.form.name" : "Nama", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Pengaturan Proxy HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Host\/IP Proksi", | 207 | "settings.service.form.proxy.host" : "Host\/IP Proksi", |
197 | "settings.service.form.proxy.info" : "Pengaturan proksi tidak akan disinkronkan dengan server Franz.", | 208 | "settings.service.form.proxy.info" : "Pengaturan proksi tidak akan disinkronkan dengan server Franz.", |
198 | "settings.service.form.proxy.isEnabled" : "Gunakan Proksi", | 209 | "settings.service.form.proxy.isEnabled" : "Gunakan Proksi", |
199 | "settings.service.form.proxy.password" : "Sandi (opsional)", | 210 | "settings.service.form.proxy.password" : "Sandi (opsional)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Silahkan mulai ulang Franz setelah mengubah Setelan proxy", |
202 | "settings.service.form.proxy.user" : "Pengguna (opsional)", | 213 | "settings.service.form.proxy.user" : "Pengguna (opsional)", |
203 | "settings.service.form.saveButton" : "Simpan layanan", | 214 | "settings.service.form.saveButton" : "Simpan layanan", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Periksa ejaan Bahasa", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Gunakan Bawaan Sistem ({default})", |
206 | "settings.service.form.tabHosted" : "Hosted", | 217 | "settings.service.form.tabHosted" : "Hosted", |
207 | "settings.service.form.tabOnPremise" : "Hosted mandiri", | 218 | "settings.service.form.tabOnPremise" : "Hosted mandiri", |
208 | "settings.service.form.team" : "Tim", | 219 | "settings.service.form.team" : "Tim", |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 47cbd8f1e..b63b30a90 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Ricarica", | 2 | "app.errorHandler.action" : "Ricarica", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Qualcosa è andato storto", |
4 | "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz", | 4 | "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz", |
5 | "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", | 5 | "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", |
6 | "feature.delayApp.text" : "Franz continuerà a funzionare tra {seconds} secondi.", | 6 | "feature.delayApp.text" : "Franz continuerà a funzionare tra {seconds} secondi.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", | 14 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", |
8 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", | 15 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", |
16 | "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Lingua per controllo ortografico", | ||
9 | "import.headline" : "Importa i servizi di Franz 4", | 20 | "import.headline" : "Importa i servizi di Franz 4", |
10 | "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5", | 21 | "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5", |
11 | "import.skip.label" : "Voglio aggiungere i servizi manualmente", | 22 | "import.skip.label" : "Voglio aggiungere i servizi manualmente", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail", | 92 | "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail", |
82 | "password.submit.label" : "Invia", | 93 | "password.submit.label" : "Invia", |
83 | "password.successInfo" : "Per favore controlla la tua email", | 94 | "password.successInfo" : "Per favore controlla la tua email", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Effettua l'upgrade del tuo account", |
85 | "pricing.headline" : "Supporta Franz", | 96 | "pricing.headline" : "Supporta Franz", |
86 | "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", | 97 | "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", |
87 | "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", | 98 | "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Modifica {name}", | 107 | "service.errorHandler.editAction" : "Modifica {name}", |
97 | "service.errorHandler.headline" : "Oh no!", | 108 | "service.errorHandler.headline" : "Oh no!", |
98 | "service.errorHandler.message" : "Errore", | 109 | "service.errorHandler.message" : "Errore", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} non si è caricato correttamente.", |
100 | "services.getStarted" : "Iniziamo", | 111 | "services.getStarted" : "Iniziamo", |
101 | "services.welcome" : "Benvenuto su Franz", | 112 | "services.welcome" : "Benvenuto su Franz", |
102 | "settings.account.account.editButton" : "Modifica account", | 113 | "settings.account.account.editButton" : "Modifica account", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra", | 149 | "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra", |
139 | "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati", | 150 | "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Lingua per controllo ortografico", |
142 | "settings.app.headline" : "Impostazioni", | 153 | "settings.app.headline" : "Impostazioni", |
143 | "settings.app.headlineAdvanced" : "Avanzate", | 154 | "settings.app.headlineAdvanced" : "Avanzate", |
144 | "settings.app.headlineAppearance" : "Aspetto", | 155 | "settings.app.headlineAppearance" : "Aspetto", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Mostra l'etichetta per tutti i nuovi messaggi", | 203 | "settings.service.form.indirectMessages" : "Mostra l'etichetta per tutti i nuovi messaggi", |
193 | "settings.service.form.isMutedInfo" : "Se disattivato, tutte le notifiche sonore e le riproduzioni audio saranno mutate", | 204 | "settings.service.form.isMutedInfo" : "Se disattivato, tutte le notifiche sonore e le riproduzioni audio saranno mutate", |
194 | "settings.service.form.name" : "Nome", | 205 | "settings.service.form.name" : "Nome", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Impostazioni Proxy HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "Le impostazioni proxy non verranno sincronizzate con i server Franz", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Usa un Proxy", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Password (opzionale)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Porta", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Riavvia Franz dopo aver cambiato le impostazioni del proxy.", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Utente (opzionale)", |
203 | "settings.service.form.saveButton" : "Salva servizio", | 214 | "settings.service.form.saveButton" : "Salva servizio", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Lingua per controllo ortografico", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Usa le impostazioni predefinite di sistema ({default})", |
206 | "settings.service.form.tabHosted" : "Hosted", | 217 | "settings.service.form.tabHosted" : "Hosted", |
207 | "settings.service.form.tabOnPremise" : "Self hosted âï¸", | 218 | "settings.service.form.tabOnPremise" : "Self hosted âï¸", |
208 | "settings.service.form.team" : "Gruppo", | 219 | "settings.service.form.team" : "Gruppo", |
@@ -245,11 +256,11 @@ | |||
245 | "subscription.features.ads" : "Nessuna pubblicità , mai!", | 256 | "subscription.features.ads" : "Nessuna pubblicità , mai!", |
246 | "subscription.features.comingSoon" : "in arrivo", | 257 | "subscription.features.comingSoon" : "in arrivo", |
247 | "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata", | 258 | "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "L'upgrade della licenza avrà impatti sull'utilizzo dell'App", |
249 | "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hosted come HipChat", | 260 | "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hosted come HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Aggiungi servizi on-premise\/hosted come \"Mattermost\"", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Supporto proxy per i servizi", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Supporto per il correttore ortografico", |
253 | "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include", | 264 | "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include", |
254 | "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", | 265 | "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", |
255 | "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", | 266 | "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 6eea64c3a..838dc81ea 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -1,16 +1,27 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "å†èªã¿è¾¼ã¿", | 2 | "app.errorHandler.action" : "å†èªã¿è¾¼ã¿", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "é–“é•ãˆã¦ã„る部分ãŒã‚ã‚Šã¾ã™", |
4 | "feature.delayApp.action" : "Franz サãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã™ã‚‹", | 4 | "feature.delayApp.action" : "Franzサãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã™ã‚‹", |
5 | "feature.delayApp.headline" : "Franz ã‚’ã™ãã«èµ·å‹•ã™ã‚‹ã«ã¯ã€Franz サãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã—ã¦ãã ã•ã„。", | 5 | "feature.delayApp.headline" : "Franzã‚’ã™ãã«èµ·å‹•ã™ã‚‹ã«ã¯ã€Franz サãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã—ã¦ãã ã•ã„。", |
6 | "feature.delayApp.text" : "Franz ã¯ã‚ã¨{seconds}秒後ã«èµ·å‹•ã—ã¾ã™ã€‚", | 6 | "feature.delayApp.text" : "Franzã¯ã‚ã¨{seconds}秒後ã«èµ·å‹•ã—ã¾ã™ã€‚", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Franzã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スã«æŽ¥ç¶šã§ãã¾ã›ã‚“。", | 14 | "global.api.unhealthy" : "Franzã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スã«æŽ¥ç¶šã§ãã¾ã›ã‚“。", |
8 | "global.notConnectedToTheInternet" : "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。", | 15 | "global.notConnectedToTheInternet" : "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。", |
16 | "global.spellchecker.useDefault" : " {default}ã‚’åˆæœŸè¨å®šã§ä½¿ç”¨ã—ã¦ãã ã•ã„", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "スペルãƒã‚§ãƒƒã‚¯ã™ã‚‹è¨€èªž", | ||
9 | "import.headline" : "Franz 4ã®ã‚µãƒ¼ãƒ“スをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", | 20 | "import.headline" : "Franz 4ã®ã‚µãƒ¼ãƒ“スをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", |
10 | "import.notSupportedHeadline" : "Franz 5ã§ã¯ã“ã®ã‚µãƒ¼ãƒ“スã«ã¾ã 対応ã—ã¦ã„ã¾ã›ã‚“", | 21 | "import.notSupportedHeadline" : "Franz 5ã§ã¯ã“ã®ã‚µãƒ¼ãƒ“スã«ã¾ã 対応ã—ã¦ã„ã¾ã›ã‚“", |
11 | "import.skip.label" : "手動ã§ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ã™ã‚‹", | 22 | "import.skip.label" : "手動ã§ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ã™ã‚‹", |
12 | "import.submit.label" : "サービスをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", | 23 | "import.submit.label" : "サービスをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", |
13 | "infobar.buttonChangelog" : "最新ã®æƒ…å ±", | 24 | "infobar.buttonChangelog" : "æ›´æ–°å±¥æ´ã‚’見る", |
14 | "infobar.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", | 25 | "infobar.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", |
15 | "infobar.buttonReloadServices" : "サービスã®å†èªã¿è¾¼ã¿", | 26 | "infobar.buttonReloadServices" : "サービスã®å†èªã¿è¾¼ã¿", |
16 | "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", | 27 | "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "{name}を編集", | 107 | "service.errorHandler.editAction" : "{name}を編集", |
97 | "service.errorHandler.headline" : "ã—ã¾ã£ãŸï¼", | 108 | "service.errorHandler.headline" : "ã—ã¾ã£ãŸï¼", |
98 | "service.errorHandler.message" : "エラー", | 109 | "service.errorHandler.message" : "エラー", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} ã¯ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ", |
100 | "services.getStarted" : "ã¯ã˜ã‚ã‚‹", | 111 | "services.getStarted" : "ã¯ã˜ã‚ã‚‹", |
101 | "services.welcome" : "Franzã«ã‚ˆã†ã“ã", | 112 | "services.welcome" : "Franzã«ã‚ˆã†ã“ã", |
102 | "settings.account.account.editButton" : "アカウントã®ç·¨é›†", | 113 | "settings.account.account.editButton" : "アカウントã®ç·¨é›†", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦ãƒãƒƒã‚¸ã‚’表示ã™ã‚‹", | 203 | "settings.service.form.indirectMessages" : "ã™ã¹ã¦ã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¤ã„ã¦ãƒãƒƒã‚¸ã‚’表示ã™ã‚‹", |
193 | "settings.service.form.isMutedInfo" : "無効化ã•ã‚Œã¦ã„ã‚‹å ´åˆã€å…¨ã¦ã®é€šçŸ¥éŸ³ã‚„オーディオå†ç”Ÿã¯ç„¡éŸ³ã«ãªã‚Šã¾ã™", | 204 | "settings.service.form.isMutedInfo" : "無効化ã•ã‚Œã¦ã„ã‚‹å ´åˆã€å…¨ã¦ã®é€šçŸ¥éŸ³ã‚„オーディオå†ç”Ÿã¯ç„¡éŸ³ã«ãªã‚Šã¾ã™", |
194 | "settings.service.form.name" : "サービスå", | 205 | "settings.service.form.name" : "サービスå", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPSã®ãƒ—ãƒã‚ã‚·è¨å®š", |
196 | "settings.service.form.proxy.host" : "プãƒã‚シサーãƒãƒ¼\/IP", | 207 | "settings.service.form.proxy.host" : "プãƒã‚シサーãƒãƒ¼\/IP", |
197 | "settings.service.form.proxy.info" : "プãƒã‚ã‚·è¨å®šã¯Franz アカウントã§åŒæœŸã•ã‚Œã¾ã›ã‚“。", | 208 | "settings.service.form.proxy.info" : "プãƒã‚ã‚·è¨å®šã¯Franz アカウントã§åŒæœŸã•ã‚Œã¾ã›ã‚“。", |
198 | "settings.service.form.proxy.isEnabled" : "プãƒã‚ã‚·è¨å®šã‚’有効ã«ã™ã‚‹", | 209 | "settings.service.form.proxy.isEnabled" : "プãƒã‚ã‚·è¨å®šã‚’有効ã«ã™ã‚‹", |
199 | "settings.service.form.proxy.password" : "パスワード(任æ„)", | 210 | "settings.service.form.proxy.password" : "パスワード(任æ„)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "ãƒãƒ¼ãƒˆ", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "プãƒã‚ã‚·è¨å®šã‚’変更ã—ã¦ã‹ã‚‰ã€Franzã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„", |
202 | "settings.service.form.proxy.user" : "ユーザーå(任æ„)", | 213 | "settings.service.form.proxy.user" : "ユーザーå(任æ„)", |
203 | "settings.service.form.saveButton" : "サービスã®ä¿å˜", | 214 | "settings.service.form.saveButton" : "サービスã®ä¿å˜", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "言語ã®ã‚¹ãƒšãƒ«ãƒã‚§ãƒƒã‚¯", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : " {default}ã‚’åˆæœŸè¨å®šã§ä½¿ç”¨ã—ã¦ãã ã•ã„", |
206 | "settings.service.form.tabHosted" : "ホスト", | 217 | "settings.service.form.tabHosted" : "ホスト", |
207 | "settings.service.form.tabOnPremise" : "セルフホスト âï¸", | 218 | "settings.service.form.tabOnPremise" : "セルフホスト âï¸", |
208 | "settings.service.form.team" : "ãƒãƒ¼ãƒ ", | 219 | "settings.service.form.team" : "ãƒãƒ¼ãƒ ", |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 632ca618e..ec0cdd375 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -4,8 +4,19 @@ | |||
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Franz-ის áƒáƒœáƒšáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებრვერმáƒáƒ®áƒ”რხდáƒ", | 14 | "global.api.unhealthy" : "Franz-ის áƒáƒœáƒšáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებრვერმáƒáƒ®áƒ”რხდáƒ", |
8 | "global.notConnectedToTheInternet" : "თქვენ áƒáƒ ხáƒáƒ თ ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებული.", | 15 | "global.notConnectedToTheInternet" : "თქვენ áƒáƒ ხáƒáƒ თ ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებული.", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები", | 20 | "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები", |
10 | "import.notSupportedHeadline" : "სერვისები ჯერáƒáƒ áƒáƒ ის მხáƒáƒ დáƒáƒáƒ”რილი Franz 5-ში", | 21 | "import.notSupportedHeadline" : "სერვისები ჯერáƒáƒ áƒáƒ ის მხáƒáƒ დáƒáƒáƒ”რილი Franz 5-ში", |
11 | "import.skip.label" : "I want to add services manually", | 22 | "import.skip.label" : "I want to add services manually", |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index c38a7f024..2082edd6d 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -1,74 +1,85 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Herladen", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Er ging iets mis", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Neem een Franz Supporter Licentie ", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Neem een Franz Supporter Licentie om niet meer te hoeven wachten", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services", | 14 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services", |
8 | "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", | 15 | "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", |
16 | "global.spellchecker.useDefault" : "Gebruik Systeemstandaard ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Taal spellingscontrole", | ||
9 | "import.headline" : "Importeer je Franz 4 services", | 20 | "import.headline" : "Importeer je Franz 4 services", |
10 | "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", | 21 | "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", |
11 | "import.skip.label" : "Ik wens services manueel toe te voegen", | 22 | "import.skip.label" : "Ik wil services handmatig toevoegen", |
12 | "import.submit.label" : "Importeer services", | 23 | "import.submit.label" : "Importeer services", |
13 | "infobar.buttonChangelog" : "Wat is er nieuw?", | 24 | "infobar.buttonChangelog" : "Wat is er nieuw?", |
14 | "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update", | 25 | "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren", |
15 | "infobar.buttonReloadServices" : "Herlaad de services", | 26 | "infobar.buttonReloadServices" : "Services opnieuw laden", |
16 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden", | 27 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", |
17 | "infobar.servicesUpdated" : "Je services zijn geüpdatet.", | 28 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", |
18 | "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.", | 29 | "infobar.updateAvailable" : "Er is een nieuwe update voor Franz beschikbaar.", |
19 | "invite.email.label" : "E-mailadres", | 30 | "invite.email.label" : "E-mailadres", |
20 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", | 31 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", |
21 | "invite.name.label" : "Naam", | 32 | "invite.name.label" : "Naam", |
22 | "invite.skip.label" : "Ik wil dit later doen", | 33 | "invite.skip.label" : "Ik wil dit later doen", |
23 | "invite.submit.label" : "Verzend uitnodigingen", | 34 | "invite.submit.label" : "Uitnodigingen verzenden", |
24 | "invite.successInfo" : "Uitnodiging met succes verzonden", | 35 | "invite.successInfo" : "Uitnodiging met succes verzonden", |
25 | "login.email.label" : "E-mailadres", | 36 | "login.email.label" : "E-mailadres", |
26 | "login.headline" : "Inloggen", | 37 | "login.headline" : "Inloggen", |
27 | "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig", | 38 | "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig", |
28 | "login.link.password" : "Wachtwoord resetten", | 39 | "login.link.password" : "Wachtwoord resetten", |
29 | "login.link.signup" : "Maak een gratis account", | 40 | "login.link.signup" : "Maak een gratis account aan", |
30 | "login.password.label" : "Wachtwoord", | 41 | "login.password.label" : "Wachtwoord", |
31 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 42 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
32 | "login.submit.label" : "Log in", | 43 | "login.submit.label" : "Inloggen", |
33 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 44 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
34 | "menu.app.about" : "Over Franz", | 45 | "menu.app.about" : "Over Franz", |
35 | "menu.app.hide" : "Verbergen", | 46 | "menu.app.hide" : "Verbergen", |
36 | "menu.app.hideOthers" : "Andere verbergen", | 47 | "menu.app.hideOthers" : "Andere Verbergen", |
37 | "menu.app.quit" : "Afsluiten", | 48 | "menu.app.quit" : "Afsluiten", |
38 | "menu.app.settings" : "Instellingen", | 49 | "menu.app.settings" : "Instellingen", |
39 | "menu.app.unhide" : "Zichtbaar maken", | 50 | "menu.app.unhide" : "Tonen", |
40 | "menu.edit" : "Aanpassen", | 51 | "menu.edit" : "Bewerken", |
41 | "menu.edit.copy" : "Kopiëren", | 52 | "menu.edit.copy" : "Kopiëren", |
42 | "menu.edit.cut" : "Knippen", | 53 | "menu.edit.cut" : "Knippen", |
43 | "menu.edit.delete" : "Verwijderen", | 54 | "menu.edit.delete" : "Verwijderen", |
44 | "menu.edit.emojiSymbols" : "Emoji & Symbolen", | 55 | "menu.edit.emojiSymbols" : "Emoji & Symbolen", |
45 | "menu.edit.paste" : "Plakken", | 56 | "menu.edit.paste" : "Plakken", |
46 | "menu.edit.pasteAndMatchStyle" : "Plakken en stijl overeen laten komen", | 57 | "menu.edit.pasteAndMatchStyle" : "Plakken en stijl overeen laten komen", |
47 | "menu.edit.redo" : "Opnieuw uitvoeren", | 58 | "menu.edit.redo" : "Opnieuw doen", |
48 | "menu.edit.selectAll" : "Selecteer alles", | 59 | "menu.edit.selectAll" : "Selecteer Alles", |
49 | "menu.edit.speech" : "Spraakuitvoer", | 60 | "menu.edit.speech" : "Spraakuitvoer", |
50 | "menu.edit.startDictation" : "Beginnen met dicteren", | 61 | "menu.edit.startDictation" : "Beginnen met dicteren", |
51 | "menu.edit.startSpeaking" : "Begin met spreken", | 62 | "menu.edit.startSpeaking" : "Begin met Spreken", |
52 | "menu.edit.stopSpeaking" : "Stoppen met spreken", | 63 | "menu.edit.stopSpeaking" : "Stoppen met Spreken", |
53 | "menu.edit.undo" : "Ongedaan maken", | 64 | "menu.edit.undo" : "Ongedaan maken", |
54 | "menu.file" : "Bestand", | 65 | "menu.file" : "Bestand", |
55 | "menu.help" : "Help", | 66 | "menu.help" : "Help", |
56 | "menu.help.changelog" : "Logboek", | 67 | "menu.help.changelog" : "Logboek", |
57 | "menu.help.learnMore" : "Meer weten", | 68 | "menu.help.learnMore" : "Meer Weten", |
58 | "menu.help.privacy" : "Privacyverklaring", | 69 | "menu.help.privacy" : "Privacyverklaring", |
59 | "menu.help.support" : "Ondersteuning", | 70 | "menu.help.support" : "Ondersteuning", |
60 | "menu.help.tos" : "Servicevoorwaarden", | 71 | "menu.help.tos" : "Servicevoorwaarden", |
61 | "menu.services" : "Diensten", | 72 | "menu.services" : "Services", |
62 | "menu.services.addNewService" : "Nieuwe service toevoegen...", | 73 | "menu.services.addNewService" : "Nieuwe service toevoegen...", |
63 | "menu.view" : "Beeld", | 74 | "menu.view" : "Weergave", |
64 | "menu.view.enterFullScreen" : "Volledig scherm openen", | 75 | "menu.view.enterFullScreen" : "Volledig scherm openen", |
65 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", | 76 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", |
66 | "menu.view.reloadFranz" : "Franz Herladen", | 77 | "menu.view.reloadFranz" : "Franz Herladen", |
67 | "menu.view.reloadService" : "Service herladen", | 78 | "menu.view.reloadService" : "Service Herladen", |
68 | "menu.view.resetZoom" : "Werkelijke grootte", | 79 | "menu.view.resetZoom" : "Werkelijke Grootte", |
69 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | 80 | "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit", |
70 | "menu.view.toggleFullScreen" : "Volledig scherm aan\/uit", | 81 | "menu.view.toggleFullScreen" : "Volledig Scherm Aan\/Uit", |
71 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | 82 | "menu.view.toggleServiceDevTools" : "Service Ontwikkelaarstools Aan\/Uit", |
72 | "menu.view.zoomIn" : "Inzoomen", | 83 | "menu.view.zoomIn" : "Inzoomen", |
73 | "menu.view.zoomOut" : "Uitzoomen", | 84 | "menu.view.zoomOut" : "Uitzoomen", |
74 | "menu.window" : "Venster", | 85 | "menu.window" : "Venster", |
@@ -78,47 +89,47 @@ | |||
78 | "password.headline" : "Wachtwoord resetten", | 89 | "password.headline" : "Wachtwoord resetten", |
79 | "password.link.login" : "Log in op je account", | 90 | "password.link.login" : "Log in op je account", |
80 | "password.link.signup" : "Maak een gratis account", | 91 | "password.link.signup" : "Maak een gratis account", |
81 | "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", | 92 | "password.noUser" : "Geen gebruiker gevonden met dat e-mailadres", |
82 | "password.submit.label" : "Doorgaan", | 93 | "password.submit.label" : "Verzenden", |
83 | "password.successInfo" : "Controleer alsjeblieft je e-mail", | 94 | "password.successInfo" : "Controleer alsjeblieft je e-mail", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
85 | "pricing.headline" : "Ondersteun Franz", | 96 | "pricing.headline" : "Steun Franz", |
86 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.", | 97 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.", |
87 | "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen", | 98 | "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen", |
88 | "pricing.support.label" : "Selecteer je ondersteuningsplan", | 99 | "pricing.support.label" : "Selecteer je ondersteuningsplan", |
89 | "service.crashHandler.action" : "{naam} herladen", | 100 | "service.crashHandler.action" : "{naam} herladen", |
90 | "service.crashHandler.autoReload" : "Automatisch herstellen {name} proberen in {seconds} seconden", | 101 | "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden", |
91 | "service.crashHandler.headline" : "Oh nee!", | 102 | "service.crashHandler.headline" : "Oh nee!", |
92 | "service.crashHandler.text" : "{name} heeft een probleem veroorzaakt.", | 103 | "service.crashHandler.text" : "{name} heeft een probleem veroorzaakt.", |
93 | "service.disabledHandler.action" : "Activeer {name}", | 104 | "service.disabledHandler.action" : "Activeer {name}", |
94 | "service.disabledHandler.headline" : "{name} is uitgeschakeld", | 105 | "service.disabledHandler.headline" : "{name} is uitgeschakeld", |
95 | "service.errorHandler.action" : "{naam} herladen", | 106 | "service.errorHandler.action" : "{naam} herladen", |
96 | "service.errorHandler.editAction" : "{name} aanpassen", | 107 | "service.errorHandler.editAction" : "Bewerk {name}", |
97 | "service.errorHandler.headline" : "Oh nee!", | 108 | "service.errorHandler.headline" : "Oh nee!", |
98 | "service.errorHandler.message" : "Fout", | 109 | "service.errorHandler.message" : "Fout", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} kon niet geladen worden.", |
100 | "services.getStarted" : "Beginnen", | 111 | "services.getStarted" : "Beginnen", |
101 | "services.welcome" : "Welkom bij Franz", | 112 | "services.welcome" : "Welkom bij Franz", |
102 | "settings.account.account.editButton" : "Bewerk account", | 113 | "settings.account.account.editButton" : "Account bewerken", |
103 | "settings.account.accountType.basic" : "Basis Account", | 114 | "settings.account.accountType.basic" : "Basis Account", |
104 | "settings.account.accountType.premium" : "Premium Supporter Account", | 115 | "settings.account.accountType.premium" : "Premium Supporter Account", |
105 | "settings.account.buttonSave" : "Profiel aanpassen", | 116 | "settings.account.buttonSave" : "Profiel bijwerken", |
106 | "settings.account.deleteAccount" : "Account verwijderen", | 117 | "settings.account.deleteAccount" : "Account verwijderen", |
107 | "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!", | 118 | "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!", |
108 | "settings.account.deleteInfo" : "Indien u uw Franz account nietmeer nodig heeft, kan u hier uw account en de gerelateerde gegegevens verwijderen.", | 119 | "settings.account.deleteInfo" : "Indien u uw Franz account niet meer nodig heeft, kan u hier uw account en alle gerelateerde gegevens verwijderen.", |
109 | "settings.account.headline" : "Account", | 120 | "settings.account.headline" : "Account", |
110 | "settings.account.headlineAccount" : "Account informatie", | 121 | "settings.account.headlineAccount" : "Account informatie", |
111 | "settings.account.headlineDangerZone" : "Gevaren Zone", | 122 | "settings.account.headlineDangerZone" : "Gevarenzone", |
112 | "settings.account.headlineInvoices" : "Facturen", | 123 | "settings.account.headlineInvoices" : "Facturen", |
113 | "settings.account.headlinePassword" : "Wijzig wachtwoord", | 124 | "settings.account.headlinePassword" : "Wijzig wachtwoord", |
114 | "settings.account.headlineProfile" : "Profiel aanpassen", | 125 | "settings.account.headlineProfile" : "Profiel bijwerken", |
115 | "settings.account.headlineSubscription" : "Je abonnement", | 126 | "settings.account.headlineSubscription" : "Je abonnement", |
116 | "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz", | 127 | "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz", |
117 | "settings.account.invoiceDownload" : "Download", | 128 | "settings.account.invoiceDownload" : "Download", |
118 | "settings.account.manageSubscription.label" : "Beheer je abonnement", | 129 | "settings.account.manageSubscription.label" : "Beheer je abonnement", |
119 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", | 130 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", |
120 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", | 131 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", |
121 | "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden", | 132 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", |
122 | "settings.app.buttonClearAllCache" : "Cache wissen", | 133 | "settings.app.buttonClearAllCache" : "Cache wissen", |
123 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", | 134 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", |
124 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", | 135 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", |
@@ -126,47 +137,47 @@ | |||
126 | "settings.app.currentVersion" : "Huidige versie:", | 137 | "settings.app.currentVersion" : "Huidige versie:", |
127 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", | 138 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", |
128 | "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", | 139 | "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", |
129 | "settings.app.form.beta" : "Inclusief bèta versies", | 140 | "settings.app.form.beta" : "Inclusief beta versies", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Word lid van de Dark Side", |
131 | "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", | 142 | "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", |
132 | "settings.app.form.enableMenuBar" : "Toon Franz in Menu Bar", | 143 | "settings.app.form.enableMenuBar" : "Toon Franz in Menu Bar", |
133 | "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen", | 144 | "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen", |
134 | "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", | 145 | "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", |
135 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 146 | "settings.app.form.hideDockIcon" : "Verberg Franz in Dock", |
136 | "settings.app.form.language" : "Taal", | 147 | "settings.app.form.language" : "Taal", |
137 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", | 148 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", |
138 | "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", | 149 | "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", |
139 | "settings.app.form.showDisabledServices" : "Display disabled services tabs", | 150 | "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Taal spellingscontrole", |
142 | "settings.app.headline" : "Instellingen", | 153 | "settings.app.headline" : "Instellingen", |
143 | "settings.app.headlineAdvanced" : "Advanced", | 154 | "settings.app.headlineAdvanced" : "Geavanceerd", |
144 | "settings.app.headlineAppearance" : "Appearance", | 155 | "settings.app.headlineAppearance" : "Weergave", |
145 | "settings.app.headlineGeneral" : "Algemeen", | 156 | "settings.app.headlineGeneral" : "Algemeen", |
146 | "settings.app.headlineLanguage" : "Taal", | 157 | "settings.app.headlineLanguage" : "Taal", |
147 | "settings.app.headlineUpdates" : "Updates", | 158 | "settings.app.headlineUpdates" : "Updates", |
148 | "settings.app.restartRequired" : "Changes require restart", | 159 | "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", |
149 | "settings.app.subheadlineCache" : "Cache", | 160 | "settings.app.subheadlineCache" : "Cache", |
150 | "settings.app.translationHelp" : "Help us to translate Franz into your language.", | 161 | "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.", |
151 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", | 162 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", |
152 | "settings.app.updateStatusSearching" : "Zoekt naar updates", | 163 | "settings.app.updateStatusSearching" : "Zoekt naar updates", |
153 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", | 164 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", |
154 | "settings.invite.headline" : "Invite Friends", | 165 | "settings.invite.headline" : "Nodig vrienden uit", |
155 | "settings.navigation.account" : "Account", | 166 | "settings.navigation.account" : "Account", |
156 | "settings.navigation.availableServices" : "Beschikbare services", | 167 | "settings.navigation.availableServices" : "Beschikbare services", |
157 | "settings.navigation.inviteFriends" : "Invite Friends", | 168 | "settings.navigation.inviteFriends" : "Nodig vrienden uit", |
158 | "settings.navigation.logout" : "Uitloggen", | 169 | "settings.navigation.logout" : "Uitloggen", |
159 | "settings.navigation.settings" : "Instellingen", | 170 | "settings.navigation.settings" : "Instellingen", |
160 | "settings.navigation.yourServices" : "Jouw services", | 171 | "settings.navigation.yourServices" : "Jouw services", |
161 | "settings.recipes.all" : "Alle services", | 172 | "settings.recipes.all" : "Alle services", |
162 | "settings.recipes.dev" : "Ontwikkeling", | 173 | "settings.recipes.dev" : "Ontwikkeling", |
163 | "settings.recipes.headline" : "Beschikbare services", | 174 | "settings.recipes.headline" : "Beschikbare services", |
164 | "settings.recipes.missingService" : "Missing a service?", | 175 | "settings.recipes.missingService" : "Mist er een service?", |
165 | "settings.recipes.mostPopular" : "Meest populair", | 176 | "settings.recipes.mostPopular" : "Meest populair", |
166 | "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.", | 177 | "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.", |
167 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", | 178 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", |
168 | "settings.searchService" : "Search service", | 179 | "settings.searchService" : "Service zoeken", |
169 | "settings.service.error.goBack" : "Terug naar de services", | 180 | "settings.service.error.goBack" : "Terug naar services", |
170 | "settings.service.error.headline" : "Fout", | 181 | "settings.service.error.headline" : "Fout", |
171 | "settings.service.error.message" : "Kon het service-recept niet laden.", | 182 | "settings.service.error.message" : "Kon het service-recept niet laden.", |
172 | "settings.service.form.addServiceHeadline" : "{name} toevoegen", | 183 | "settings.service.form.addServiceHeadline" : "{name} toevoegen", |
@@ -177,62 +188,62 @@ | |||
177 | "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.", | 188 | "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.", |
178 | "settings.service.form.deleteButton" : "Service verwijderen", | 189 | "settings.service.form.deleteButton" : "Service verwijderen", |
179 | "settings.service.form.editServiceHeadline" : "{name} aanpassen", | 190 | "settings.service.form.editServiceHeadline" : "{name} aanpassen", |
180 | "settings.service.form.enableAudio" : "Enable audio", | 191 | "settings.service.form.enableAudio" : "Audio inschakelen", |
181 | "settings.service.form.enableBadge" : "Show unread message badges", | 192 | "settings.service.form.enableBadge" : "Toon badges met ongelezen berichten", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Dark Mode aanzetten", |
183 | "settings.service.form.enableNotification" : "Notificaties aanzetten", | 194 | "settings.service.form.enableNotification" : "Notificaties aanzetten", |
184 | "settings.service.form.enableService" : "Service aanzetten", | 195 | "settings.service.form.enableService" : "Service aanzetten", |
185 | "settings.service.form.headlineBadges" : "Unread message badges", | 196 | "settings.service.form.headlineBadges" : "Ongelezen berichten badges", |
186 | "settings.service.form.headlineGeneral" : "Algemeen", | 197 | "settings.service.form.headlineGeneral" : "Algemeen", |
187 | "settings.service.form.headlineNotifications" : "Notifications", | 198 | "settings.service.form.headlineNotifications" : "Meldingen", |
188 | "settings.service.form.icon" : "Custom icon", | 199 | "settings.service.form.icon" : "Aangepast icoon", |
189 | "settings.service.form.iconDelete" : "Verwijderen", | 200 | "settings.service.form.iconDelete" : "Verwijderen", |
190 | "settings.service.form.iconUpload" : "Drop your image, or click here", | 201 | "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier", |
191 | "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", | 202 | "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", |
192 | "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten", | 203 | "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten", |
193 | "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", | 204 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldingsgeluiden en afgespeelde audio uitgeschakeld zijn", |
194 | "settings.service.form.name" : "Naam", | 205 | "settings.service.form.name" : "Naam", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Instellingen", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Poort", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw op na het aanpassen van proxy Instellingen.", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Gebruiker (optioneel)", |
203 | "settings.service.form.saveButton" : "Service bewaren", | 214 | "settings.service.form.saveButton" : "Service opslaan", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Taal spellingscontrole", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Gebruik Systeemstandaard ({default})", |
206 | "settings.service.form.tabHosted" : "Gehost", | 217 | "settings.service.form.tabHosted" : "Gehost", |
207 | "settings.service.form.tabOnPremise" : "Intern gehost âï¸", | 218 | "settings.service.form.tabOnPremise" : "Intern gehost âï¸", |
208 | "settings.service.form.team" : "Team", | 219 | "settings.service.form.team" : "Team", |
209 | "settings.service.form.useHostedService" : "Use the hosted {name} service.", | 220 | "settings.service.form.useHostedService" : "Gebruik de gehoste {name} service.", |
210 | "settings.service.form.yourServices" : "Jouw services", | 221 | "settings.service.form.yourServices" : "Jouw services", |
211 | "settings.services.deletedInfo" : "Service werd verwijderd", | 222 | "settings.services.deletedInfo" : "Service werd verwijderd", |
212 | "settings.services.discoverServices" : "Services ontdekken", | 223 | "settings.services.discoverServices" : "Services ontdekken", |
213 | "settings.services.headline" : "Jouw services", | 224 | "settings.services.headline" : "Jouw services", |
214 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", | 225 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", |
215 | "settings.services.tooltip.isDisabled" : "Service staat uit", | 226 | "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", |
216 | "settings.services.tooltip.isMuted" : "All sounds are muted", | 227 | "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", |
217 | "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit", | 228 | "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit", |
218 | "settings.services.updatedInfo" : "Je wijzigingen werden bewaard", | 229 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
219 | "settings.user.form.accountType.company" : "Bedrijf", | 230 | "settings.user.form.accountType.company" : "Bedrijf", |
220 | "settings.user.form.accountType.individual" : "Particulier", | 231 | "settings.user.form.accountType.individual" : "Particulier", |
221 | "settings.user.form.accountType.label" : "Account type", | 232 | "settings.user.form.accountType.label" : "Account type", |
222 | "settings.user.form.accountType.non-profit" : "Non-Profit", | 233 | "settings.user.form.accountType.non-profit" : "Non-Profit", |
223 | "settings.user.form.currentPassword" : "Huidig wachtwoord", | 234 | "settings.user.form.currentPassword" : "Huidig wachtwoord", |
224 | "settings.user.form.email" : "Email", | 235 | "settings.user.form.email" : "Email", |
225 | "settings.user.form.firstname" : "Naam", | 236 | "settings.user.form.firstname" : "Voornaam", |
226 | "settings.user.form.lastname" : "Achternaam", | 237 | "settings.user.form.lastname" : "Achternaam", |
227 | "settings.user.form.newPassword" : "Nieuw wachtwoord", | 238 | "settings.user.form.newPassword" : "Nieuw wachtwoord", |
228 | "sidebar.addNewService" : "!!!Add new service", | 239 | "sidebar.addNewService" : "Nieuw service toevoegen", |
229 | "sidebar.muteApp" : "Disable notifications & audio", | 240 | "sidebar.muteApp" : "Berichten & geluid uitschakelen", |
230 | "sidebar.settings" : "Instellingen", | 241 | "sidebar.settings" : "Instellingen", |
231 | "sidebar.unmuteApp" : "Enable notifications & audio", | 242 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", |
232 | "signup.company.label" : "Bedrijf", | 243 | "signup.company.label" : "Bedrijf", |
233 | "signup.email.label" : "E-mailadres", | 244 | "signup.email.label" : "E-mailadres", |
234 | "signup.emailDuplicate" : "Er bestaat reeds een gebruiker met dat e-mailadres", | 245 | "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", |
235 | "signup.firstname.label" : "Naam", | 246 | "signup.firstname.label" : "Voornaam", |
236 | "signup.headline" : "Registreren", | 247 | "signup.headline" : "Registreren", |
237 | "signup.lastname.label" : "Achternaam", | 248 | "signup.lastname.label" : "Achternaam", |
238 | "signup.legal.info" : "Door een account aan te maken aanvaard je de", | 249 | "signup.legal.info" : "Door een account aan te maken aanvaard je de", |
@@ -241,15 +252,15 @@ | |||
241 | "signup.link.login" : "Al een account, inloggen?", | 252 | "signup.link.login" : "Al een account, inloggen?", |
242 | "signup.password.label" : "Wachtwoord", | 253 | "signup.password.label" : "Wachtwoord", |
243 | "signup.submit.label" : "Account aanmaken", | 254 | "signup.submit.label" : "Account aanmaken", |
244 | "subscription.euTaxInfo" : "EU residents: local sales tax may apply", | 255 | "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn", |
245 | "subscription.features.ads" : "Geen reclame, nooit!", | 256 | "subscription.features.ads" : "Geen reclame, nooit!", |
246 | "subscription.features.comingSoon" : "komt binnenkort", | 257 | "subscription.features.comingSoon" : "komt binnenkort", |
247 | "subscription.features.encryptedSync" : "Synchronisatie van geëncrypteerde sessies", | 258 | "subscription.features.encryptedSync" : "Synchronisatie van geëncrypteerde sessies", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", |
249 | "subscription.features.onpremise" : "Intern gehoste services zoals HipChat", | 260 | "subscription.features.onpremise" : "Intern gehoste services zoals HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Proxy ondersteuning voor services", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", |
253 | "subscription.includedFeatures" : "Een betalend account voor Franz omvat", | 264 | "subscription.includedFeatures" : "Een betalend account voor Franz omvat", |
254 | "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden", | 265 | "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden", |
255 | "subscription.submit.label" : "Ik wil de ontwikkeling van Franz steunen", | 266 | "subscription.submit.label" : "Ik wil de ontwikkeling van Franz steunen", |
@@ -259,19 +270,19 @@ | |||
259 | "subscriptionPopup.buttonCancel" : "Annuleren", | 270 | "subscriptionPopup.buttonCancel" : "Annuleren", |
260 | "subscriptionPopup.buttonDone" : "Klaar", | 271 | "subscriptionPopup.buttonDone" : "Klaar", |
261 | "tabs.item.deleteService" : "Service verwijderen", | 272 | "tabs.item.deleteService" : "Service verwijderen", |
262 | "tabs.item.disableAudio" : "Disable audio", | 273 | "tabs.item.disableAudio" : "Audio uitschakelen", |
263 | "tabs.item.disableNotifications" : "Notificaties uitschakelen", | 274 | "tabs.item.disableNotifications" : "Notificaties uitschakelen", |
264 | "tabs.item.disableService" : "Service uitschakelen", | 275 | "tabs.item.disableService" : "Service uitschakelen", |
265 | "tabs.item.edit" : "Aanpassen", | 276 | "tabs.item.edit" : "Aanpassen", |
266 | "tabs.item.enableAudio" : "Enable audio", | 277 | "tabs.item.enableAudio" : "Audio inschakelen", |
267 | "tabs.item.enableNotification" : "Notificaties inschakelen", | 278 | "tabs.item.enableNotification" : "Notificaties inschakelen", |
268 | "tabs.item.enableService" : "Service aanzetten", | 279 | "tabs.item.enableService" : "Service inschakelen", |
269 | "tabs.item.reload" : "Herladen", | 280 | "tabs.item.reload" : "Herladen", |
270 | "validation.email" : "{field} is not valid", | 281 | "validation.email" : "{field} is niet geldig", |
271 | "validation.minLength" : "{field} should be at least {length} characters long", | 282 | "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", |
272 | "validation.required" : "{field} is required", | 283 | "validation.required" : "{field} is vereist", |
273 | "validation.url" : "{field} is not a valid URL", | 284 | "validation.url" : "{field} is niet een geldige URL", |
274 | "welcome.loginButton" : "Inloggen op je account", | 285 | "welcome.loginButton" : "Inloggen op je account", |
275 | "welcome.signupButton" : "Maak een gratis account aan", | 286 | "welcome.signupButton" : "Maak een gratis account aan", |
276 | "welcome.slogan" : "Messaging that works for you" | 287 | "welcome.slogan" : "Messaging die voor jou werkt" |
277 | } | 288 | } |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 940f24b0b..df0549a28 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Laad opnieuw", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Er ging iets mis", |
4 | "feature.delayApp.action" : "Sponsor Franz", | 4 | "feature.delayApp.action" : "Sponsor Franz", |
5 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", | 5 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", |
6 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", | 6 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", | 14 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", |
8 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", | 15 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", |
16 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spelling checken", | ||
9 | "import.headline" : "Importeer uw Franz 4-services", | 20 | "import.headline" : "Importeer uw Franz 4-services", |
10 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", | 21 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", |
11 | "import.skip.label" : "Ik wil services handmatig toevoegen", | 22 | "import.skip.label" : "Ik wil services handmatig toevoegen", |
@@ -92,11 +103,11 @@ | |||
92 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", | 103 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", |
93 | "service.disabledHandler.action" : "Activeer {name}", | 104 | "service.disabledHandler.action" : "Activeer {name}", |
94 | "service.disabledHandler.headline" : "{name} is uitgeschakeld", | 105 | "service.disabledHandler.headline" : "{name} is uitgeschakeld", |
95 | "service.errorHandler.action" : "Laad {name} opnieuw", | 106 | "service.errorHandler.action" : "{name} herladen", |
96 | "service.errorHandler.editAction" : "Bewerk {name}", | 107 | "service.errorHandler.editAction" : "Bewerk {name}", |
97 | "service.errorHandler.headline" : "Oh nee!", | 108 | "service.errorHandler.headline" : "Oh nee!", |
98 | "service.errorHandler.message" : "Fout", | 109 | "service.errorHandler.message" : "Fout", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} kon niet geladen worden.", |
100 | "services.getStarted" : "Begin", | 111 | "services.getStarted" : "Begin", |
101 | "services.welcome" : "Welkom bij Franz", | 112 | "services.welcome" : "Welkom bij Franz", |
102 | "settings.account.account.editButton" : "Bewerk account", | 113 | "settings.account.account.editButton" : "Bewerk account", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", | 203 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", |
193 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", | 204 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", |
194 | "settings.service.form.name" : "Naam", | 205 | "settings.service.form.name" : "Naam", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers", | 208 | "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers", |
198 | "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", | 209 | "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", |
199 | "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", | 210 | "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Poort", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw na het aanpassen van proxy instellingen.", |
202 | "settings.service.form.proxy.user" : "Gebruiker (optioneel)", | 213 | "settings.service.form.proxy.user" : "Gebruiker (optioneel)", |
203 | "settings.service.form.saveButton" : "Service opslaan", | 214 | "settings.service.form.saveButton" : "Service opslaan", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Spellingcontrole taal", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Gebruik systeemstandaard ({default})", |
206 | "settings.service.form.tabHosted" : "Gehost", | 217 | "settings.service.form.tabHosted" : "Gehost", |
207 | "settings.service.form.tabOnPremise" : "Zelf-gehost âï¸", | 218 | "settings.service.form.tabOnPremise" : "Zelf-gehost âï¸", |
208 | "settings.service.form.team" : "Team", | 219 | "settings.service.form.team" : "Team", |
@@ -247,7 +258,7 @@ | |||
247 | "subscription.features.encryptedSync" : "Beveiligde sessie synchronisatie", | 258 | "subscription.features.encryptedSync" : "Beveiligde sessie synchronisatie", |
248 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", | 259 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", |
249 | "subscription.features.onpremise" : "Add on-geschikt\/gehoste services zoals HipChat", | 260 | "subscription.features.onpremise" : "Add on-geschikt\/gehoste services zoals HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe", |
251 | "subscription.features.proxy" : "Proxy understeuning voor diensten", | 262 | "subscription.features.proxy" : "Proxy understeuning voor diensten", |
252 | "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", | 263 | "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", |
253 | "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat", | 264 | "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat", |
@@ -266,7 +277,7 @@ | |||
266 | "tabs.item.enableAudio" : "Audio inschakelen", | 277 | "tabs.item.enableAudio" : "Audio inschakelen", |
267 | "tabs.item.enableNotification" : "Meldingen inschakelen", | 278 | "tabs.item.enableNotification" : "Meldingen inschakelen", |
268 | "tabs.item.enableService" : "Service inschakelen", | 279 | "tabs.item.enableService" : "Service inschakelen", |
269 | "tabs.item.reload" : "Laad opnieuw", | 280 | "tabs.item.reload" : "Herladen", |
270 | "validation.email" : "{field} is niet geldig", | 281 | "validation.email" : "{field} is niet geldig", |
271 | "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", | 282 | "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", |
272 | "validation.required" : "{field} is vereist", | 283 | "validation.required" : "{field} is vereist", |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index d45e5ce24..e1a1747b3 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Przeładuj", | 2 | "app.errorHandler.action" : "Przeładuj", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Coś poszło nie tak", |
4 | "feature.delayApp.action" : "Uzyskaj licencjÄ™ Franz Supporter", | 4 | "feature.delayApp.action" : "Uzyskaj licencjÄ™ Franz Supporter", |
5 | "feature.delayApp.headline" : "Kup licencję Franz Supporter , aby nie czekać", | 5 | "feature.delayApp.headline" : "Aby nie czekać kup licencję Franz Supporter", |
6 | "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", | 6 | "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online", | 14 | "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online", |
8 | "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", | 15 | "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", |
16 | "global.spellchecker.useDefault" : "Użyj domyślnego dla systemu ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Język słownika", | ||
9 | "import.headline" : "Importuj usługi Franz 4", | 20 | "import.headline" : "Importuj usługi Franz 4", |
10 | "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5", | 21 | "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5", |
11 | "import.skip.label" : "Chcę dodać usługi samodzielnie", | 22 | "import.skip.label" : "Chcę dodać usługi samodzielnie", |
@@ -25,7 +36,7 @@ | |||
25 | "login.email.label" : "Adres email", | 36 | "login.email.label" : "Adres email", |
26 | "login.headline" : "Zaloguj siÄ™", | 37 | "login.headline" : "Zaloguj siÄ™", |
27 | "login.invalidCredentials" : "Adres email lub hasło są błędne", | 38 | "login.invalidCredentials" : "Adres email lub hasło są błędne", |
28 | "login.link.password" : "Wyzeruj hasło", | 39 | "login.link.password" : "Przypomnij hasło", |
29 | "login.link.signup" : "Załóż darmowe konto", | 40 | "login.link.signup" : "Załóż darmowe konto", |
30 | "login.password.label" : "Hasło", | 41 | "login.password.label" : "Hasło", |
31 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", | 42 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", |
@@ -36,7 +47,7 @@ | |||
36 | "menu.app.hideOthers" : "Ukryj pozostałe", | 47 | "menu.app.hideOthers" : "Ukryj pozostałe", |
37 | "menu.app.quit" : "Zakończ", | 48 | "menu.app.quit" : "Zakończ", |
38 | "menu.app.settings" : "Ustawienia", | 49 | "menu.app.settings" : "Ustawienia", |
39 | "menu.app.unhide" : "Pokaż", | 50 | "menu.app.unhide" : "Pokaż więcej", |
40 | "menu.edit" : "Edytuj", | 51 | "menu.edit" : "Edytuj", |
41 | "menu.edit.copy" : "Skopiuj", | 52 | "menu.edit.copy" : "Skopiuj", |
42 | "menu.edit.cut" : "Wytnij", | 53 | "menu.edit.cut" : "Wytnij", |
@@ -68,20 +79,20 @@ | |||
68 | "menu.view.resetZoom" : "Domyślny rozmiar", | 79 | "menu.view.resetZoom" : "Domyślny rozmiar", |
69 | "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie", | 80 | "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie", |
70 | "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy", | 81 | "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy", |
71 | "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie serwisu", | 82 | "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie usługi", |
72 | "menu.view.zoomIn" : "Powiększ", | 83 | "menu.view.zoomIn" : "Powiększ", |
73 | "menu.view.zoomOut" : "Pomniejsz", | 84 | "menu.view.zoomOut" : "Pomniejsz", |
74 | "menu.window" : "Okno", | 85 | "menu.window" : "Okno", |
75 | "menu.window.close" : "Zamknij", | 86 | "menu.window.close" : "Zamknij", |
76 | "menu.window.minimize" : "Zminimalizuj", | 87 | "menu.window.minimize" : "Zminimalizuj", |
77 | "password.email.label" : "Adres email", | 88 | "password.email.label" : "Adres email", |
78 | "password.headline" : "Wyzeruj hasło", | 89 | "password.headline" : "Przypomnij hasło", |
79 | "password.link.login" : "Zaloguj siÄ™ na swoje konto", | 90 | "password.link.login" : "Zaloguj siÄ™ na swoje konto", |
80 | "password.link.signup" : "Stwórz darmowe konto", | 91 | "password.link.signup" : "Stwórz darmowe konto", |
81 | "password.noUser" : "Nie znaleziono użytkownika z takim adresem email", | 92 | "password.noUser" : "Nie znaleziono użytkownika z takim adresem email", |
82 | "password.submit.label" : "Wyślij", | 93 | "password.submit.label" : "Wyślij", |
83 | "password.successInfo" : "Proszę sprawdzić swój email", | 94 | "password.successInfo" : "Proszę sprawdzić swój email", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Ulepsz swoje konto", |
85 | "pricing.headline" : "Wspieraj Franz", | 96 | "pricing.headline" : "Wspieraj Franz", |
86 | "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.", | 97 | "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.", |
87 | "pricing.submit.label" : "Chcę wspierać rozwój aplikacji Franz", | 98 | "pricing.submit.label" : "Chcę wspierać rozwój aplikacji Franz", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Edytuj {name}", | 107 | "service.errorHandler.editAction" : "Edytuj {name}", |
97 | "service.errorHandler.headline" : "O nie!", | 108 | "service.errorHandler.headline" : "O nie!", |
98 | "service.errorHandler.message" : "BÅ‚Ä…d", | 109 | "service.errorHandler.message" : "BÅ‚Ä…d", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "Nie udało się załadować {name}.", |
100 | "services.getStarted" : "Zacznij", | 111 | "services.getStarted" : "Zacznij", |
101 | "services.welcome" : "Witaj w programie Franz", | 112 | "services.welcome" : "Witaj w programie Franz", |
102 | "settings.account.account.editButton" : "Modyfikuj konta", | 113 | "settings.account.account.editButton" : "Modyfikuj konta", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", | 203 | "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", |
193 | "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone", | 204 | "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone", |
194 | "settings.service.form.name" : "Nazwa", | 205 | "settings.service.form.name" : "Nazwa", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Ustawienia Proxy HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Host Proxy\/IP", | 207 | "settings.service.form.proxy.host" : "Host Proxy\/IP", |
197 | "settings.service.form.proxy.info" : "Ustawienia proxy nie będą zsynchronizowane z serwerami Franza.", | 208 | "settings.service.form.proxy.info" : "Ustawienia proxy nie będą zsynchronizowane z serwerami Franza.", |
198 | "settings.service.form.proxy.isEnabled" : "Użyj Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Użyj Proxy", |
199 | "settings.service.form.proxy.password" : "Hasło (opcjonalnie)", | 210 | "settings.service.form.proxy.password" : "Hasło (opcjonalnie)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Uruchom ponownie Franz po zmianie ustawień proxy.", |
202 | "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)", | 213 | "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)", |
203 | "settings.service.form.saveButton" : "Zapisz usługę", | 214 | "settings.service.form.saveButton" : "Zapisz usługę", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Język sprawdzania pisowni", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Użyj domyślnego dla systemu ({default})", |
206 | "settings.service.form.tabHosted" : "Hostowane", | 217 | "settings.service.form.tabHosted" : "Hostowane", |
207 | "settings.service.form.tabOnPremise" : "Hostowane lokalnie âï¸", | 218 | "settings.service.form.tabOnPremise" : "Hostowane lokalnie âï¸", |
208 | "settings.service.form.team" : "Zespół", | 219 | "settings.service.form.team" : "Zespół", |
@@ -245,11 +256,11 @@ | |||
245 | "subscription.features.ads" : "Brak reklam, na zawsze!", | 256 | "subscription.features.ads" : "Brak reklam, na zawsze!", |
246 | "subscription.features.comingSoon" : "wkrótce dostępne", | 257 | "subscription.features.comingSoon" : "wkrótce dostępne", |
247 | "subscription.features.encryptedSync" : "Szyfrowana synchronizacja sesji", | 258 | "subscription.features.encryptedSync" : "Szyfrowana synchronizacja sesji", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Bez opóźnień i przypominania o ulepszeniu licencji", |
249 | "subscription.features.onpremise" : "Dodawanie lokalnych\/hostowanych usług takich jak HipChat", | 260 | "subscription.features.onpremise" : "Dodawanie lokalnych\/hostowanych usług takich jak HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Dodaj prywatnie hostowane usługi takie jak Mattermost", |
251 | "subscription.features.proxy" : "Obsługa proxy dla usług", | 262 | "subscription.features.proxy" : "Obsługa proxy dla usług", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Wsparcie dla sprawdzania pisowni", |
253 | "subscription.includedFeatures" : "PÅ‚atne konto Franz Premium obejmuje", | 264 | "subscription.includedFeatures" : "PÅ‚atne konto Franz Premium obejmuje", |
254 | "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", | 265 | "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", |
255 | "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz", | 266 | "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz", |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index c0cf0039f..0ab5bdd21 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarregar", | 2 | "app.errorHandler.action" : "Recarregar", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Alguma coisa deu errado", |
4 | "feature.delayApp.action" : "Adquira uma licença Franz Supporter", | 4 | "feature.delayApp.action" : "Adquira uma licença Franz Supporter", |
5 | "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera", | 5 | "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera", |
6 | "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", | 6 | "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Não foi possÃvel conectar-se aos serviços on-line do Franz.", | 14 | "global.api.unhealthy" : "Não foi possÃvel conectar-se aos serviços on-line do Franz.", |
8 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", | 15 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", |
16 | "global.spellchecker.useDefault" : "Use o padrão do sistema ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Idioma de verificação ortográfica", | ||
9 | "import.headline" : "Importe seus serviços do Franz 4 ", | 20 | "import.headline" : "Importe seus serviços do Franz 4 ", |
10 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5 ", | 21 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5 ", |
11 | "import.skip.label" : "Quero adicionar serviços manualmente", | 22 | "import.skip.label" : "Quero adicionar serviços manualmente", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Editar {name}", | 107 | "service.errorHandler.editAction" : "Editar {name}", |
97 | "service.errorHandler.headline" : "Ah, não!", | 108 | "service.errorHandler.headline" : "Ah, não!", |
98 | "service.errorHandler.message" : "Erro", | 109 | "service.errorHandler.message" : "Erro", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} não pôde ser carregado.", |
100 | "services.getStarted" : "Iniciar", | 111 | "services.getStarted" : "Iniciar", |
101 | "services.welcome" : "Bem-vindo ao Franz!", | 112 | "services.welcome" : "Bem-vindo ao Franz!", |
102 | "settings.account.account.editButton" : "Editar conta", | 113 | "settings.account.account.editButton" : "Editar conta", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens", | 203 | "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens", |
193 | "settings.service.form.isMutedInfo" : "Quando desativado, as notificações sonoras e áudios ficarão em silêncio", | 204 | "settings.service.form.isMutedInfo" : "Quando desativado, as notificações sonoras e áudios ficarão em silêncio", |
194 | "settings.service.form.name" : "Nome", | 205 | "settings.service.form.name" : "Nome", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Configurações de HTTP\/HTTPS Proxy", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
197 | "settings.service.form.proxy.info" : "As configurações de proxy não serão sincronizadas com os servidores do Franz.", | 208 | "settings.service.form.proxy.info" : "As configurações de proxy não serão sincronizadas com os servidores do Franz.", |
198 | "settings.service.form.proxy.isEnabled" : "Usar o Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Usar o Proxy", |
199 | "settings.service.form.proxy.password" : "Senha (opcional)", | 210 | "settings.service.form.proxy.password" : "Senha (opcional)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Porta", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Por favor, reinicie o Franz após alterar as configurações de proxy.", |
202 | "settings.service.form.proxy.user" : "Usuário (opcional)", | 213 | "settings.service.form.proxy.user" : "Usuário (opcional)", |
203 | "settings.service.form.saveButton" : "Salvar serviço", | 214 | "settings.service.form.saveButton" : "Salvar serviço", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "LÃngua do corretor ortográfico", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Use o padrão do sistema ({default})", |
206 | "settings.service.form.tabHosted" : "Hospedado", | 217 | "settings.service.form.tabHosted" : "Hospedado", |
207 | "settings.service.form.tabOnPremise" : "Auto-hospedado âï¸", | 218 | "settings.service.form.tabOnPremise" : "Auto-hospedado âï¸", |
208 | "settings.service.form.team" : "Equipe", | 219 | "settings.service.form.team" : "Equipe", |
@@ -245,9 +256,9 @@ | |||
245 | "subscription.features.ads" : "Sem anúncios, pra sempre!", | 256 | "subscription.features.ads" : "Sem anúncios, pra sempre!", |
246 | "subscription.features.comingSoon" : "em breve", | 257 | "subscription.features.comingSoon" : "em breve", |
247 | "subscription.features.encryptedSync" : "Sincronização encriptada das sessões", | 258 | "subscription.features.encryptedSync" : "Sincronização encriptada das sessões", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Sem demora e sem chateação para comprar uma licença. ", |
249 | "subscription.features.onpremise" : "Adicionar serviços locais\/hospedados como o HipChat", | 260 | "subscription.features.onpremise" : "Adicionar serviços locais\/hospedados como o HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Adicionar serviços locais\/hospedados como o Mattermost", |
251 | "subscription.features.proxy" : "Suporte de proxy para serviços", | 262 | "subscription.features.proxy" : "Suporte de proxy para serviços", |
252 | "subscription.features.spellchecker" : "Suporte para corretor ortográfico", | 263 | "subscription.features.spellchecker" : "Suporte para corretor ortográfico", |
253 | "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui", | 264 | "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui", |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 80e8094f5..9e7455bdf 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -1,14 +1,25 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarregar", | 2 | "app.errorHandler.action" : "Recarregar", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Alguma coisa correu mal", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Faz parte do grupo de apoio do Franz", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Por favor compre uma licença Franz Supporter para saltar a fila de espera", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz irá continuar em {seconds} segundos.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Não foi possÃvel estabelecer ligação aos serviços do Franz", | 14 | "global.api.unhealthy" : "Não foi possÃvel estabelecer ligação aos serviços do Franz", |
8 | "global.notConnectedToTheInternet" : "Não existe ligação à Internet", | 15 | "global.notConnectedToTheInternet" : "Não estás ligado à Internet", |
9 | "import.headline" : "Importe os seus serviços do Franz 4", | 16 | "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", |
10 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5", | 17 | "global.spellchecking.autodetect" : "Detect language automatically", |
11 | "import.skip.label" : "Pretendo adicionar serviços manualmente", | 18 | "global.spellchecking.autodetect.short" : "Automatic", |
19 | "global.spellchecking.language" : "Linguagem para correção ortográfica", | ||
20 | "import.headline" : "Importa os teus serviços do Franz", | ||
21 | "import.notSupportedHeadline" : "Estes serviços ainda não são suportados pelo Franz 5", | ||
22 | "import.skip.label" : "Eu quero adicionar serviços manualmente", | ||
12 | "import.submit.label" : "Importar serviços", | 23 | "import.submit.label" : "Importar serviços", |
13 | "infobar.buttonChangelog" : "O que há de novo?", | 24 | "infobar.buttonChangelog" : "O que há de novo?", |
14 | "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações", | 25 | "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações", |
@@ -66,7 +77,7 @@ | |||
66 | "menu.view.reloadFranz" : "Recarregar Franz", | 77 | "menu.view.reloadFranz" : "Recarregar Franz", |
67 | "menu.view.reloadService" : "Recarregar serviço", | 78 | "menu.view.reloadService" : "Recarregar serviço", |
68 | "menu.view.resetZoom" : "Tamanho Real", | 79 | "menu.view.resetZoom" : "Tamanho Real", |
69 | "menu.view.toggleDevTools" : "Activar\/Desativar Ferramentas de Desenvolvimento", | 80 | "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento", |
70 | "menu.view.toggleFullScreen" : "Ativar\/Desativar Ecrã Completo", | 81 | "menu.view.toggleFullScreen" : "Ativar\/Desativar Ecrã Completo", |
71 | "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços", | 82 | "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços", |
72 | "menu.view.zoomIn" : "Aumentar", | 83 | "menu.view.zoomIn" : "Aumentar", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Não existe nenhuma conta associada a esse endereço de e-mail", | 92 | "password.noUser" : "Não existe nenhuma conta associada a esse endereço de e-mail", |
82 | "password.submit.label" : "Submeter", | 93 | "password.submit.label" : "Submeter", |
83 | "password.successInfo" : "Por favor verifique o seu endereço de e-mail", | 94 | "password.successInfo" : "Por favor verifique o seu endereço de e-mail", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Atualiza a tua conta", |
85 | "pricing.headline" : "Apoie o Franz", | 96 | "pricing.headline" : "Apoie o Franz", |
86 | "pricing.link.skipPayment" : "Não pretendo patrocinar o desenvolvimento do Franz", | 97 | "pricing.link.skipPayment" : "Não pretendo patrocinar o desenvolvimento do Franz", |
87 | "pricing.submit.label" : "Pretendo patrocinar o desenvolvimento do Franz", | 98 | "pricing.submit.label" : "Pretendo patrocinar o desenvolvimento do Franz", |
@@ -96,11 +107,11 @@ | |||
96 | "service.errorHandler.editAction" : "Editar {name}", | 107 | "service.errorHandler.editAction" : "Editar {name}", |
97 | "service.errorHandler.headline" : "Oh não!", | 108 | "service.errorHandler.headline" : "Oh não!", |
98 | "service.errorHandler.message" : "Erro", | 109 | "service.errorHandler.message" : "Erro", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} falhou o carregamento", |
100 | "services.getStarted" : "Vamos começar", | 111 | "services.getStarted" : "Vamos começar", |
101 | "services.welcome" : "Bem-vindo ao Franz", | 112 | "services.welcome" : "Bem-vindo ao Franz", |
102 | "settings.account.account.editButton" : "Editar conta", | 113 | "settings.account.account.editButton" : "Editar conta", |
103 | "settings.account.accountType.basic" : "Conta básica", | 114 | "settings.account.accountType.basic" : "Conta Básica", |
104 | "settings.account.accountType.premium" : "Conta Premium", | 115 | "settings.account.accountType.premium" : "Conta Premium", |
105 | "settings.account.buttonSave" : "Atualizar o perfil", | 116 | "settings.account.buttonSave" : "Atualizar o perfil", |
106 | "settings.account.deleteAccount" : "Apagar conta", | 117 | "settings.account.deleteAccount" : "Apagar conta", |
@@ -127,7 +138,7 @@ | |||
127 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", | 138 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", |
128 | "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz após iniciar o computador", | 139 | "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz após iniciar o computador", |
129 | "settings.app.form.beta" : "Incluir versões instáveis (beta)", | 140 | "settings.app.form.beta" : "Incluir versões instáveis (beta)", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Junta-te ao Lado Negro", |
131 | "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU", | 142 | "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU", |
132 | "settings.app.form.enableMenuBar" : "Mostrar Franz na Barra de Menu", | 143 | "settings.app.form.enableMenuBar" : "Mostrar Franz na Barra de Menu", |
133 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", | 144 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", | 149 | "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", |
139 | "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados", | 150 | "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Linguagem para correção ortográfica", |
142 | "settings.app.headline" : "Definições", | 153 | "settings.app.headline" : "Definições", |
143 | "settings.app.headlineAdvanced" : "Avançado", | 154 | "settings.app.headlineAdvanced" : "Avançado", |
144 | "settings.app.headlineAppearance" : "Aparência", | 155 | "settings.app.headlineAppearance" : "Aparência", |
@@ -151,10 +162,10 @@ | |||
151 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", | 162 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", |
152 | "settings.app.updateStatusSearching" : "A procurar atualizações", | 163 | "settings.app.updateStatusSearching" : "A procurar atualizações", |
153 | "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Franz", | 164 | "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Franz", |
154 | "settings.invite.headline" : "Convide amigos", | 165 | "settings.invite.headline" : "Convide Amigos", |
155 | "settings.navigation.account" : "Conta", | 166 | "settings.navigation.account" : "Conta", |
156 | "settings.navigation.availableServices" : "Serviços disponÃveis", | 167 | "settings.navigation.availableServices" : "Serviços disponÃveis", |
157 | "settings.navigation.inviteFriends" : "Convide amigos", | 168 | "settings.navigation.inviteFriends" : "Convide Amigos", |
158 | "settings.navigation.logout" : "Terminar sessão", | 169 | "settings.navigation.logout" : "Terminar sessão", |
159 | "settings.navigation.settings" : "Definições", | 170 | "settings.navigation.settings" : "Definições", |
160 | "settings.navigation.yourServices" : "Os seus serviços", | 171 | "settings.navigation.yourServices" : "Os seus serviços", |
@@ -163,9 +174,9 @@ | |||
163 | "settings.recipes.headline" : "Serviços disponÃveis", | 174 | "settings.recipes.headline" : "Serviços disponÃveis", |
164 | "settings.recipes.missingService" : "Falta um serviço?", | 175 | "settings.recipes.missingService" : "Falta um serviço?", |
165 | "settings.recipes.mostPopular" : "Os mais populares", | 176 | "settings.recipes.mostPopular" : "Os mais populares", |
166 | "settings.recipes.nothingFound" : "Lamentamos, nenhum serviço corresponde ao pesquisado.", | 177 | "settings.recipes.nothingFound" : "Lamentamos, nenhum serviço corresponde ao termo pesquisado.", |
167 | "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado", | 178 | "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado com sucesso", |
168 | "settings.searchService" : "Pesquisa de serviço", | 179 | "settings.searchService" : "Pesquisar erviço", |
169 | "settings.service.error.goBack" : "Voltar aos serviços", | 180 | "settings.service.error.goBack" : "Voltar aos serviços", |
170 | "settings.service.error.headline" : "Erro", | 181 | "settings.service.error.headline" : "Erro", |
171 | "settings.service.error.message" : "Não foi possÃvel carregar a receita do serviço.", | 182 | "settings.service.error.message" : "Não foi possÃvel carregar a receita do serviço.", |
@@ -179,30 +190,30 @@ | |||
179 | "settings.service.form.editServiceHeadline" : "Editar {name}", | 190 | "settings.service.form.editServiceHeadline" : "Editar {name}", |
180 | "settings.service.form.enableAudio" : "Ativar áudio", | 191 | "settings.service.form.enableAudio" : "Ativar áudio", |
181 | "settings.service.form.enableBadge" : "Mostrar emblemas de mensagens não lidas", | 192 | "settings.service.form.enableBadge" : "Mostrar emblemas de mensagens não lidas", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Ativar o Tema Escuro", |
183 | "settings.service.form.enableNotification" : "Ativar notificações", | 194 | "settings.service.form.enableNotification" : "Ativar notificações", |
184 | "settings.service.form.enableService" : "Ativar serviço", | 195 | "settings.service.form.enableService" : "Ativar serviço", |
185 | "settings.service.form.headlineBadges" : "Emblema de mensagem não lida", | 196 | "settings.service.form.headlineBadges" : "Emblema de mensagem não lida", |
186 | "settings.service.form.headlineGeneral" : "Geral", | 197 | "settings.service.form.headlineGeneral" : "Geral", |
187 | "settings.service.form.headlineNotifications" : "Notificações", | 198 | "settings.service.form.headlineNotifications" : "Notificações", |
188 | "settings.service.form.icon" : "Personalizar Ãcone", | 199 | "settings.service.form.icon" : "Ãcone personalizado", |
189 | "settings.service.form.iconDelete" : "Apagar", | 200 | "settings.service.form.iconDelete" : "Apagar", |
190 | "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui", | 201 | "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui", |
191 | "settings.service.form.indirectMessageInfo" : "Será notificado sobre todas as novas mensagens num canal, não apenas @username, @channel, @here, ...", | 202 | "settings.service.form.indirectMessageInfo" : "Será notificado sobre todas as novas mensagens num canal, não apenas @username, @channel, @here, ...", |
192 | "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", | 203 | "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", |
193 | "settings.service.form.isMutedInfo" : "Quando desativado, todos sons e reproduções de áudio serão silenciados", | 204 | "settings.service.form.isMutedInfo" : "Quando desativado, todos sons e reproduções de áudio serão silenciados", |
194 | "settings.service.form.name" : "Nome", | 205 | "settings.service.form.name" : "Nome", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "Definições HTTP\/HTTPS Proxy", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Host\/IP proxy", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "As definições do proxy não serão guardadas nos servidores do Franz.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Usar Proxy", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Palavra-chave (opcional)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Porta", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, após atualizar as definições do Franz", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Utilizador (opcional)", |
203 | "settings.service.form.saveButton" : "Guardar serviço", | 214 | "settings.service.form.saveButton" : "Guardar serviço", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Linguagem de correção ortográfica", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Utilizar o Sistema por Omissão ({default})", |
206 | "settings.service.form.tabHosted" : "Com domÃnio", | 217 | "settings.service.form.tabHosted" : "Com domÃnio", |
207 | "settings.service.form.tabOnPremise" : "Com domÃnio próprio âï¸", | 218 | "settings.service.form.tabOnPremise" : "Com domÃnio próprio âï¸", |
208 | "settings.service.form.team" : "Equipa", | 219 | "settings.service.form.team" : "Equipa", |
@@ -211,7 +222,7 @@ | |||
211 | "settings.services.deletedInfo" : "O serviço foi apagado", | 222 | "settings.services.deletedInfo" : "O serviço foi apagado", |
212 | "settings.services.discoverServices" : "Descobrir serviços", | 223 | "settings.services.discoverServices" : "Descobrir serviços", |
213 | "settings.services.headline" : "Os seus serviços", | 224 | "settings.services.headline" : "Os seus serviços", |
214 | "settings.services.noServicesAdded" : "Ainda não adicionou um serviço.", | 225 | "settings.services.noServicesAdded" : "Ainda não adicionou nenhum serviço.", |
215 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", | 226 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", |
216 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", | 227 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", |
217 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", | 228 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", |
@@ -245,11 +256,11 @@ | |||
245 | "subscription.features.ads" : "Sem anúncios, para sempre!", | 256 | "subscription.features.ads" : "Sem anúncios, para sempre!", |
246 | "subscription.features.comingSoon" : "em breve", | 257 | "subscription.features.comingSoon" : "em breve", |
247 | "subscription.features.encryptedSync" : "Sincronização encriptada de sessão", | 258 | "subscription.features.encryptedSync" : "Sincronização encriptada de sessão", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Sem atrasos na aplicação nem mensagens para comprar uma licença", |
249 | "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat", | 260 | "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Adicione serviços como Mattermost no local ou online", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Suporte Proxy para os serviços", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Suporte para correção ortográfica", |
253 | "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a", | 264 | "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a", |
254 | "subscription.paymentSessionError" : "Erro no serviço de pagamento", | 265 | "subscription.paymentSessionError" : "Erro no serviço de pagamento", |
255 | "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz", | 266 | "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz", |
@@ -268,7 +279,7 @@ | |||
268 | "tabs.item.enableService" : "Ativar serviço", | 279 | "tabs.item.enableService" : "Ativar serviço", |
269 | "tabs.item.reload" : "Recarregar", | 280 | "tabs.item.reload" : "Recarregar", |
270 | "validation.email" : "{field} não é válido", | 281 | "validation.email" : "{field} não é válido", |
271 | "validation.minLength" : "{field} deveria ter pelo menos {comprimento} caracteres", | 282 | "validation.minLength" : "{field} deveria ter pelo menos {length} caracteres", |
272 | "validation.required" : "{field} é obrigatório", | 283 | "validation.required" : "{field} é obrigatório", |
273 | "validation.url" : "{field} não é uma hiperligação válida", | 284 | "validation.url" : "{field} não é uma hiperligação válida", |
274 | "welcome.loginButton" : "Iniciar sessão", | 285 | "welcome.loginButton" : "Iniciar sessão", |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index b605afc4d..6098c8ad9 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Перезагрузить", | 2 | "app.errorHandler.action" : "Перезагрузить", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Что-то пошло не так", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Получите лицензию Franz Supporter", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "ПожалуйÑта приобретите лицензию Franz Supporter чтобы отменить ожидание", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz продолжит работу через {seconds} Ñекунд.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº онлайн-ÑервиÑам Franz", | 14 | "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº онлайн-ÑервиÑам Franz", |
8 | "global.notConnectedToTheInternet" : "Ð’Ñ‹ не подключены к Ñети Интернет", | 15 | "global.notConnectedToTheInternet" : "Ð’Ñ‹ не подключены к Ñети Интернет", |
16 | "global.spellchecker.useDefault" : "ИÑпользовать ÑиÑтемные параметры по умолчанию ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Проверка правопиÑаниÑ", | ||
9 | "import.headline" : "Импортировать ваши ÑервиÑÑ‹ из Franz 4", | 20 | "import.headline" : "Импортировать ваши ÑервиÑÑ‹ из Franz 4", |
10 | "import.notSupportedHeadline" : "СервиÑÑ‹ пока ещё не поддерживаютÑÑ Ð² Franz 5", | 21 | "import.notSupportedHeadline" : "СервиÑÑ‹ пока ещё не поддерживаютÑÑ Ð² Franz 5", |
11 | "import.skip.label" : "Я хочу добавить ÑервиÑÑ‹ вручную", | 22 | "import.skip.label" : "Я хочу добавить ÑервиÑÑ‹ вручную", |
@@ -58,7 +69,7 @@ | |||
58 | "menu.help.privacy" : "Политика конфиденциальноÑти", | 69 | "menu.help.privacy" : "Политика конфиденциальноÑти", |
59 | "menu.help.support" : "Поддержка", | 70 | "menu.help.support" : "Поддержка", |
60 | "menu.help.tos" : "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ", | 71 | "menu.help.tos" : "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ", |
61 | "menu.services" : "Службы", | 72 | "menu.services" : "СервиÑÑ‹", |
62 | "menu.services.addNewService" : "Добавить новый ÑервиÑ...", | 73 | "menu.services.addNewService" : "Добавить новый ÑервиÑ...", |
63 | "menu.view" : "Вид", | 74 | "menu.view" : "Вид", |
64 | "menu.view.enterFullScreen" : "Ðа веÑÑŒ Ñкран", | 75 | "menu.view.enterFullScreen" : "Ðа веÑÑŒ Ñкран", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ адреÑом Ñлектронной почты", | 92 | "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ адреÑом Ñлектронной почты", |
82 | "password.submit.label" : "ПринÑÑ‚ÑŒ", | 93 | "password.submit.label" : "ПринÑÑ‚ÑŒ", |
83 | "password.successInfo" : "Проверьте вашу Ñлектронную почту", | 94 | "password.successInfo" : "Проверьте вашу Ñлектронную почту", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Перейти на платную подпиÑку", |
85 | "pricing.headline" : "Поддержать Franz", | 96 | "pricing.headline" : "Поддержать Franz", |
86 | "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", | 97 | "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", |
87 | "pricing.submit.label" : "Я хочу поддержать разработку Franz", | 98 | "pricing.submit.label" : "Я хочу поддержать разработку Franz", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Редактирование {name}", | 107 | "service.errorHandler.editAction" : "Редактирование {name}", |
97 | "service.errorHandler.headline" : "О, нет!", | 108 | "service.errorHandler.headline" : "О, нет!", |
98 | "service.errorHandler.message" : "Ошибка", | 109 | "service.errorHandler.message" : "Ошибка", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} не Ñмог загрузитьÑÑ.", |
100 | "services.getStarted" : "Ðачать работу", | 111 | "services.getStarted" : "Ðачать работу", |
101 | "services.welcome" : "Добро пожаловать во Franz", | 112 | "services.welcome" : "Добро пожаловать во Franz", |
102 | "settings.account.account.editButton" : "Редактировать аккаунт", | 113 | "settings.account.account.editButton" : "Редактировать аккаунт", |
@@ -127,7 +138,7 @@ | |||
127 | "settings.app.form.autoLaunchInBackground" : "Открывать в фоне", | 138 | "settings.app.form.autoLaunchInBackground" : "Открывать в фоне", |
128 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкать Franz при Ñтарте", | 139 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкать Franz при Ñтарте", |
129 | "settings.app.form.beta" : "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", | 140 | "settings.app.form.beta" : "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Перейти на Тёмную Ñторону", |
131 | "settings.app.form.enableGPUAcceleration" : "Включить уÑкорение GPU", | 142 | "settings.app.form.enableGPUAcceleration" : "Включить уÑкорение GPU", |
132 | "settings.app.form.enableMenuBar" : "Показывать Franz на панели меню", | 143 | "settings.app.form.enableMenuBar" : "Показывать Franz на панели меню", |
133 | "settings.app.form.enableSpellchecking" : "Включить проверку правопиÑаниÑ", | 144 | "settings.app.form.enableSpellchecking" : "Включить проверку правопиÑаниÑ", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Franz в фоне при закрытии окна", | 149 | "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Franz в фоне при закрытии окна", |
139 | "settings.app.form.showDisabledServices" : "Показывать вкладки отключённых Ñлужб", | 150 | "settings.app.form.showDisabledServices" : "Показывать вкладки отключённых Ñлужб", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показывать значок непрочитанного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отключённых уведомлениÑÑ…", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показывать значок непрочитанного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отключённых уведомлениÑÑ…", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Проверка правопиÑаниÑ", |
142 | "settings.app.headline" : "ÐаÑтройки", | 153 | "settings.app.headline" : "ÐаÑтройки", |
143 | "settings.app.headlineAdvanced" : "Дополнительно", | 154 | "settings.app.headlineAdvanced" : "Дополнительно", |
144 | "settings.app.headlineAppearance" : "Внешний вид", | 155 | "settings.app.headlineAppearance" : "Внешний вид", |
@@ -176,10 +187,10 @@ | |||
176 | "settings.service.form.customUrlUpgradeAccount" : "Улучшить ваш аккаунт", | 187 | "settings.service.form.customUrlUpgradeAccount" : "Улучшить ваш аккаунт", |
177 | "settings.service.form.customUrlValidationError" : "Ðевозможно проверить Ñервер {name}.", | 188 | "settings.service.form.customUrlValidationError" : "Ðевозможно проверить Ñервер {name}.", |
178 | "settings.service.form.deleteButton" : "Удалить ÑервиÑ", | 189 | "settings.service.form.deleteButton" : "Удалить ÑервиÑ", |
179 | "settings.service.form.editServiceHeadline" : "Редактирование {name}", | 190 | "settings.service.form.editServiceHeadline" : "Редактировать {name}", |
180 | "settings.service.form.enableAudio" : "Включить звук", | 191 | "settings.service.form.enableAudio" : "Включить звук", |
181 | "settings.service.form.enableBadge" : "Показывать иконку непрочитанных Ñообщений", | 192 | "settings.service.form.enableBadge" : "Показывать иконку непрочитанных Ñообщений", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Включить Тёмный режим", |
183 | "settings.service.form.enableNotification" : "Включить уведомлениÑ", | 194 | "settings.service.form.enableNotification" : "Включить уведомлениÑ", |
184 | "settings.service.form.enableService" : "Включить ÑервиÑ", | 195 | "settings.service.form.enableService" : "Включить ÑервиÑ", |
185 | "settings.service.form.headlineBadges" : "Значки непрочитанных Ñообщений", | 196 | "settings.service.form.headlineBadges" : "Значки непрочитанных Ñообщений", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Показывать значок уведомлений Ð´Ð»Ñ Ð²Ñех новых Ñообщений", | 203 | "settings.service.form.indirectMessages" : "Показывать значок уведомлений Ð´Ð»Ñ Ð²Ñех новых Ñообщений", |
193 | "settings.service.form.isMutedInfo" : "Когда выключено, вÑе звуковые ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отключены", | 204 | "settings.service.form.isMutedInfo" : "Когда выключено, вÑе звуковые ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отключены", |
194 | "settings.service.form.name" : "Ðазвание", | 205 | "settings.service.form.name" : "Ðазвание", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "ÐаÑтройки ПрокÑи HTTP\/HTTPS", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "ПрокÑи Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "ÐаÑтройки прокÑи не будут Ñинхронизированны Ñ Ñерверами Franz", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "ИÑпользовать прокÑи", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Пароль (опционально)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Порт", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "ПожалуйÑта перезапуÑтите Franz поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð°Ñтроек прокÑи.", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Пользователь (опционально)", |
203 | "settings.service.form.saveButton" : "Сохранить ÑервиÑ", | 214 | "settings.service.form.saveButton" : "Сохранить ÑервиÑ", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Проверка правопиÑаниÑ", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "ИÑпользовать ÑиÑтемные параметры по умолчанию ({default})", |
206 | "settings.service.form.tabHosted" : "Размещено", | 217 | "settings.service.form.tabHosted" : "Размещено", |
207 | "settings.service.form.tabOnPremise" : "Свой хоÑтинг âï¸", | 218 | "settings.service.form.tabOnPremise" : "Свой хоÑтинг âï¸", |
208 | "settings.service.form.team" : "Команда", | 219 | "settings.service.form.team" : "Команда", |
@@ -245,11 +256,11 @@ | |||
245 | "subscription.features.ads" : "Без рекламы, навÑегда!", | 256 | "subscription.features.ads" : "Без рекламы, навÑегда!", |
246 | "subscription.features.comingSoon" : "Ñкоро", | 257 | "subscription.features.comingSoon" : "Ñкоро", |
247 | "subscription.features.encryptedSync" : "Зашифрованные ÑеÑÑии Ñинхронизации", | 258 | "subscription.features.encryptedSync" : "Зашифрованные ÑеÑÑии Ñинхронизации", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "Ðикаких задержек и предложений перейти на платную верÑию", |
249 | "subscription.features.onpremise" : "Добавление облачных Ñлужб или Ñлужб на Ñвоём хоÑтинге типа HipChat", | 260 | "subscription.features.onpremise" : "Добавление облачных Ñлужб или Ñлужб на Ñвоём хоÑтинге типа HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Локальные\/размещенные на хоÑтинге ÑервиÑÑ‹, такие как Mattermost", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Подержка прокÑи Ð´Ð»Ñ ÑервиÑов", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Поддержка проверки правопиÑаниÑ", |
253 | "subscription.includedFeatures" : "Платный премиум аккаунт Franz включает", | 264 | "subscription.includedFeatures" : "Платный премиум аккаунт Franz включает", |
254 | "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты", | 265 | "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты", |
255 | "subscription.submit.label" : "Я хочу поддержать разработку Franz", | 266 | "subscription.submit.label" : "Я хочу поддержать разработку Franz", |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index ca7335fe9..35c699322 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -4,8 +4,19 @@ | |||
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", | 14 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", |
8 | "global.notConnectedToTheInternet" : "Nie ste pripojenà k internetu.", | 15 | "global.notConnectedToTheInternet" : "Nie ste pripojenà k internetu.", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "Importovať vaše služby z Franz 4", | 20 | "import.headline" : "Importovať vaše služby z Franz 4", |
10 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", | 21 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", |
11 | "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne", | 22 | "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne", |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index df0b849c4..8ffc0c007 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -4,8 +4,19 @@ | |||
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Get a Franz Supporter License", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.shareFranz.action.email" : "Send as email", | ||
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
7 | "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ", | 14 | "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ", |
8 | "global.notConnectedToTheInternet" : "Niste povezani sa serverom.", | 15 | "global.notConnectedToTheInternet" : "Niste povezani sa serverom.", |
16 | "global.spellchecker.useDefault" : "Use System Default ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Spell checking language", | ||
9 | "import.headline" : "Uvezite svoje Franz 4 servise", | 20 | "import.headline" : "Uvezite svoje Franz 4 servise", |
10 | "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franz 5", | 21 | "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franz 5", |
11 | "import.skip.label" : "Желим да додам уÑлуге ручно", | 22 | "import.skip.label" : "Желим да додам уÑлуге ручно", |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 9e7619454..70632b966 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -1,13 +1,24 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Yeniden Yükle", | 2 | "app.errorHandler.action" : "Tekrar Yükle", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Bir terslik çıktı", |
4 | "feature.delayApp.action" : "Franz Destek Lisansı'nı alın.", | 4 | "feature.delayApp.action" : "Franz Destek Lisansı'nı alın", |
5 | "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın.", | 5 | "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın", |
6 | "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.", | 6 | "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.", |
7 | "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor.", | 7 | "feature.shareFranz.action.email" : "Send as email", |
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
14 | "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor", | ||
8 | "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.", | 15 | "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.", |
9 | "import.headline" : "Franz 4 servislerinizi ekleyin.", | 16 | "global.spellchecker.useDefault" : "Sistem Dilini Kullan ({default})", |
10 | "import.notSupportedHeadline" : "Servisler henüz Franz 5'te desteklenmiyor.", | 17 | "global.spellchecking.autodetect" : "Detect language automatically", |
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Ä°mla kontrol dili", | ||
20 | "import.headline" : "Franz 4 servislerinizi içeri aktarın", | ||
21 | "import.notSupportedHeadline" : "Henüz Franz 5'te desteklenmeyen servisler", | ||
11 | "import.skip.label" : "Servisleri kendim eklemek istiyorum", | 22 | "import.skip.label" : "Servisleri kendim eklemek istiyorum", |
12 | "import.submit.label" : "Servisleri içe aktar", | 23 | "import.submit.label" : "Servisleri içe aktar", |
13 | "infobar.buttonChangelog" : "Yeni ne var?", | 24 | "infobar.buttonChangelog" : "Yeni ne var?", |
@@ -15,7 +26,7 @@ | |||
15 | "infobar.buttonReloadServices" : "Hizmetleri yeniden yükle", | 26 | "infobar.buttonReloadServices" : "Hizmetleri yeniden yükle", |
16 | "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yüklenemedi", | 27 | "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yüklenemedi", |
17 | "infobar.servicesUpdated" : "Hizmetleriniz güncellendi.", | 28 | "infobar.servicesUpdated" : "Hizmetleriniz güncellendi.", |
18 | "infobar.updateAvailable" : "Yeni Franz güncellemesi mevcut", | 29 | "infobar.updateAvailable" : "Yeni Franz güncellemesi mevcut.", |
19 | "invite.email.label" : "E-posta adresi", | 30 | "invite.email.label" : "E-posta adresi", |
20 | "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et", | 31 | "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et", |
21 | "invite.name.label" : "Ad", | 32 | "invite.name.label" : "Ad", |
@@ -59,7 +70,7 @@ | |||
59 | "menu.help.support" : "Destek", | 70 | "menu.help.support" : "Destek", |
60 | "menu.help.tos" : "Kullanım Şartları", | 71 | "menu.help.tos" : "Kullanım Şartları", |
61 | "menu.services" : "Hizmetler", | 72 | "menu.services" : "Hizmetler", |
62 | "menu.services.addNewService" : "Yeni Servis Ekle", | 73 | "menu.services.addNewService" : "Yeni servis ekle...", |
63 | "menu.view" : "Görünüm", | 74 | "menu.view" : "Görünüm", |
64 | "menu.view.enterFullScreen" : "Tam Ekrana Geç", | 75 | "menu.view.enterFullScreen" : "Tam Ekrana Geç", |
65 | "menu.view.exitFullScreen" : "Tam Ekrandan Çık", | 76 | "menu.view.exitFullScreen" : "Tam Ekrandan Çık", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Bu e-posta adresinde bir kullanıcı bulunamadı", | 92 | "password.noUser" : "Bu e-posta adresinde bir kullanıcı bulunamadı", |
82 | "password.submit.label" : "Gönder", | 93 | "password.submit.label" : "Gönder", |
83 | "password.successInfo" : "E-postanızı kontrol ediniz", | 94 | "password.successInfo" : "E-postanızı kontrol ediniz", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Hesabı Yükselt", |
85 | "pricing.headline" : "Franz'ı Destekle", | 96 | "pricing.headline" : "Franz'ı Destekle", |
86 | "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.", | 97 | "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.", |
87 | "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", | 98 | "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", |
@@ -92,11 +103,11 @@ | |||
92 | "service.crashHandler.text" : "{name} bir hataya neden oldu.", | 103 | "service.crashHandler.text" : "{name} bir hataya neden oldu.", |
93 | "service.disabledHandler.action" : "{name} aktif", | 104 | "service.disabledHandler.action" : "{name} aktif", |
94 | "service.disabledHandler.headline" : "{name} devredışı", | 105 | "service.disabledHandler.headline" : "{name} devredışı", |
95 | "service.errorHandler.action" : "{name} yeniden yükle", | 106 | "service.errorHandler.action" : "{İsim} Yeniden Yükle", |
96 | "service.errorHandler.editAction" : "{name} düzenle", | 107 | "service.errorHandler.editAction" : "{name} düzenle", |
97 | "service.errorHandler.headline" : "Aman Tanrım hayır!", | 108 | "service.errorHandler.headline" : "Hayııırrr!", |
98 | "service.errorHandler.message" : "Hata", | 109 | "service.errorHandler.message" : "Hata", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} yüklenemedi.", |
100 | "services.getStarted" : "Haydi başlayalım", | 111 | "services.getStarted" : "Haydi başlayalım", |
101 | "services.welcome" : "Franz'a HoÅŸgeldiniz", | 112 | "services.welcome" : "Franz'a HoÅŸgeldiniz", |
102 | "settings.account.account.editButton" : "Hesabı düzenle", | 113 | "settings.account.account.editButton" : "Hesabı düzenle", |
@@ -118,7 +129,7 @@ | |||
118 | "settings.account.manageSubscription.label" : "Aboneliğini yönet", | 129 | "settings.account.manageSubscription.label" : "Aboneliğini yönet", |
119 | "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi", | 130 | "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi", |
120 | "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin", | 131 | "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin", |
121 | "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yüklenemedi.", | 132 | "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yüklenemedi", |
122 | "settings.app.buttonClearAllCache" : "Önbelleği temizle", | 133 | "settings.app.buttonClearAllCache" : "Önbelleği temizle", |
123 | "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur", | 134 | "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur", |
124 | "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et", | 135 | "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et", |
@@ -127,7 +138,7 @@ | |||
127 | "settings.app.form.autoLaunchInBackground" : "Arka planda aç", | 138 | "settings.app.form.autoLaunchInBackground" : "Arka planda aç", |
128 | "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç", | 139 | "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç", |
129 | "settings.app.form.beta" : "Beta versiyonları dahil et", | 140 | "settings.app.form.beta" : "Beta versiyonları dahil et", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Karanlık tarafa katıl", |
131 | "settings.app.form.enableGPUAcceleration" : "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et", | 142 | "settings.app.form.enableGPUAcceleration" : "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et", |
132 | "settings.app.form.enableMenuBar" : "Menü çubuğunda Franz'ı göster", | 143 | "settings.app.form.enableMenuBar" : "Menü çubuğunda Franz'ı göster", |
133 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", | 144 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", | 149 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", |
139 | "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", | 150 | "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Ä°mla kontrol dili", |
142 | "settings.app.headline" : "Ayarlar", | 153 | "settings.app.headline" : "Ayarlar", |
143 | "settings.app.headlineAdvanced" : "GeliÅŸmiÅŸ", | 154 | "settings.app.headlineAdvanced" : "GeliÅŸmiÅŸ", |
144 | "settings.app.headlineAppearance" : "Görünüm", | 155 | "settings.app.headlineAppearance" : "Görünüm", |
@@ -168,7 +179,7 @@ | |||
168 | "settings.searchService" : "Hizmeti ara", | 179 | "settings.searchService" : "Hizmeti ara", |
169 | "settings.service.error.goBack" : "Servislere geri dön", | 180 | "settings.service.error.goBack" : "Servislere geri dön", |
170 | "settings.service.error.headline" : "Hata", | 181 | "settings.service.error.headline" : "Hata", |
171 | "settings.service.error.message" : "Servis tarifi yüklenemedi", | 182 | "settings.service.error.message" : "Servis tarifi yüklenemedi.", |
172 | "settings.service.form.addServiceHeadline" : "{name} Ekle", | 183 | "settings.service.form.addServiceHeadline" : "{name} Ekle", |
173 | "settings.service.form.availableServices" : "Mevcut servisler", | 184 | "settings.service.form.availableServices" : "Mevcut servisler", |
174 | "settings.service.form.customUrl" : "Özel sunucu", | 185 | "settings.service.form.customUrl" : "Özel sunucu", |
@@ -176,10 +187,10 @@ | |||
176 | "settings.service.form.customUrlUpgradeAccount" : "Hesabını yükselt", | 187 | "settings.service.form.customUrlUpgradeAccount" : "Hesabını yükselt", |
177 | "settings.service.form.customUrlValidationError" : "{name} özel sunucu doğrulanamadı.", | 188 | "settings.service.form.customUrlValidationError" : "{name} özel sunucu doğrulanamadı.", |
178 | "settings.service.form.deleteButton" : "Servisi sil", | 189 | "settings.service.form.deleteButton" : "Servisi sil", |
179 | "settings.service.form.editServiceHeadline" : "{name} düzenle", | 190 | "settings.service.form.editServiceHeadline" : "{İsim} Düzenle", |
180 | "settings.service.form.enableAudio" : "Sesi etkinleÅŸtirin", | 191 | "settings.service.form.enableAudio" : "Sesi etkinleÅŸtirin", |
181 | "settings.service.form.enableBadge" : "Okunmamış mesajları göster", | 192 | "settings.service.form.enableBadge" : "Okunmamış mesajları göster", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Karanlık modu aç", |
183 | "settings.service.form.enableNotification" : "Bildirimleri etkinleÅŸtir", | 194 | "settings.service.form.enableNotification" : "Bildirimleri etkinleÅŸtir", |
184 | "settings.service.form.enableService" : "Servisi etkinleÅŸtir", | 195 | "settings.service.form.enableService" : "Servisi etkinleÅŸtir", |
185 | "settings.service.form.headlineBadges" : "Okunmamış mesajlar", | 196 | "settings.service.form.headlineBadges" : "Okunmamış mesajlar", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Mesaj rozetini tüm yeni mesajlar için göster", | 203 | "settings.service.form.indirectMessages" : "Mesaj rozetini tüm yeni mesajlar için göster", |
193 | "settings.service.form.isMutedInfo" : "Devre dışı bırakıldığında, tüm bildirim sesleri sessize alınır", | 204 | "settings.service.form.isMutedInfo" : "Devre dışı bırakıldığında, tüm bildirim sesleri sessize alınır", |
194 | "settings.service.form.name" : "Ä°sim", | 205 | "settings.service.form.name" : "Ä°sim", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Ayarları", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "Proxy Sunucusu\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "Proxy ayarları Franz serverlarına yüklenmeyecektir.", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "Proxy Kullan", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Parola (opsiyonel)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Port", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Franz'ı yeniden başlatınız.", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)", |
203 | "settings.service.form.saveButton" : "Servisi kaydet", | 214 | "settings.service.form.saveButton" : "Servisi kaydet", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Ä°mla kontrol dili", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "Sistem Dilini Kullan ({default})", |
206 | "settings.service.form.tabHosted" : "Barındırılan", | 217 | "settings.service.form.tabHosted" : "Barındırılan", |
207 | "settings.service.form.tabOnPremise" : "Kendi barındırılan", | 218 | "settings.service.form.tabOnPremise" : "Kendi barındırılan", |
208 | "settings.service.form.team" : "Takım", | 219 | "settings.service.form.team" : "Takım", |
@@ -238,7 +249,7 @@ | |||
238 | "signup.legal.info" : "Franz'ı hesabı oluşturark kabul ediyorsun", | 249 | "signup.legal.info" : "Franz'ı hesabı oluşturark kabul ediyorsun", |
239 | "signup.legal.privacy" : "Gizlilik Sözleşmesi", | 250 | "signup.legal.privacy" : "Gizlilik Sözleşmesi", |
240 | "signup.legal.terms" : "Kullanım Koşulları", | 251 | "signup.legal.terms" : "Kullanım Koşulları", |
241 | "signup.link.login" : "Mevcut hesabınla giriş yap.", | 252 | "signup.link.login" : "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", |
242 | "signup.password.label" : "Åžifre", | 253 | "signup.password.label" : "Åžifre", |
243 | "signup.submit.label" : "Hesap oluÅŸtur", | 254 | "signup.submit.label" : "Hesap oluÅŸtur", |
244 | "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir", | 255 | "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir", |
@@ -249,7 +260,7 @@ | |||
249 | "subscription.features.onpremise" : "HipChat gibi kurum içi\/barındırılan hizmetler ekle", | 260 | "subscription.features.onpremise" : "HipChat gibi kurum içi\/barındırılan hizmetler ekle", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Proxy support for services", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Yazım denetleyicisi desteği", |
253 | "subscription.includedFeatures" : "Ücretli Franz Premium Destekçi Hesabına dahil", | 264 | "subscription.includedFeatures" : "Ücretli Franz Premium Destekçi Hesabına dahil", |
254 | "subscription.paymentSessionError" : "Ödeme formu başlatılamadı", | 265 | "subscription.paymentSessionError" : "Ödeme formu başlatılamadı", |
255 | "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", | 266 | "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", |
@@ -266,7 +277,7 @@ | |||
266 | "tabs.item.enableAudio" : "Sesi etkinleÅŸtir", | 277 | "tabs.item.enableAudio" : "Sesi etkinleÅŸtir", |
267 | "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir", | 278 | "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir", |
268 | "tabs.item.enableService" : "Servisi etkinleÅŸtir", | 279 | "tabs.item.enableService" : "Servisi etkinleÅŸtir", |
269 | "tabs.item.reload" : "Yeniden Yükle", | 280 | "tabs.item.reload" : "Tekrar yükle", |
270 | "validation.email" : "{alan} geçerli değil", | 281 | "validation.email" : "{alan} geçerli değil", |
271 | "validation.minLength" : "{field} en az {length} karakter uzunluğunda olmalı", | 282 | "validation.minLength" : "{field} en az {length} karakter uzunluğunda olmalı", |
272 | "validation.required" : "{field} gereklidir", | 283 | "validation.required" : "{field} gereklidir", |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 7d51b380e..db3145b36 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -1,13 +1,24 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Перезавантажити", | 2 | "app.errorHandler.action" : "Перезавантажити", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "ЩоÑÑŒ пішло не так", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "Отримати ліцензію Franz Supporter ", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "Будь лаÑка, придбайте ліцензію Franz Supporter аби пропуÑтити очікуваннÑ", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz відновить роботу за {seconds} Ñекунд", |
7 | "global.api.unhealthy" : "Ðе можна підключитиÑÑŒ до онлайн ÑервіÑів Franz", | 7 | "feature.shareFranz.action.email" : "Send as email", |
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
14 | "global.api.unhealthy" : "Ðе можливо підключитиÑÑŒ до онлайн ÑервіÑів Franz", | ||
8 | "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", | 15 | "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", |
16 | "global.spellchecker.useDefault" : "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "Мова перевірки правопиÑу", | ||
9 | "import.headline" : "Імпортувати ваші ÑервіÑи з Franz 4", | 20 | "import.headline" : "Імпортувати ваші ÑервіÑи з Franz 4", |
10 | "import.notSupportedHeadline" : "СервіÑи ще не підтримуютьÑÑ Ð² Franz 5", | 21 | "import.notSupportedHeadline" : "Ðаразі ÑервіÑи не підтримуютьÑÑ Ñƒ Franz 5", |
11 | "import.skip.label" : "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ", | 22 | "import.skip.label" : "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ", |
12 | "import.submit.label" : "Імпортувати ÑервіÑи", | 23 | "import.submit.label" : "Імпортувати ÑервіÑи", |
13 | "infobar.buttonChangelog" : "Що нового?", | 24 | "infobar.buttonChangelog" : "Що нового?", |
@@ -17,20 +28,20 @@ | |||
17 | "infobar.servicesUpdated" : "Ваші ÑервіÑи було оновлено.", | 28 | "infobar.servicesUpdated" : "Ваші ÑервіÑи було оновлено.", |
18 | "infobar.updateAvailable" : "Ðове Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Franz доÑтупне.", | 29 | "infobar.updateAvailable" : "Ðове Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Franz доÑтупне.", |
19 | "invite.email.label" : "Email адреÑа", | 30 | "invite.email.label" : "Email адреÑа", |
20 | "invite.headline.friends" : "ЗапроÑÑ–Ñ‚ÑŒ 3 ваших друзів або колег", | 31 | "invite.headline.friends" : "ЗапроÑÑ–Ñ‚ÑŒ 3-Ñ… ваших друзів або колег", |
21 | "invite.name.label" : "Ім'Ñ", | 32 | "invite.name.label" : "Ім'Ñ", |
22 | "invite.skip.label" : "Я хочу зробити це пізніше", | 33 | "invite.skip.label" : "Я хочу зробити це пізніше", |
23 | "invite.submit.label" : "Відправити запрошеннÑ", | 34 | "invite.submit.label" : "Відправити запрошеннÑ", |
24 | "invite.successInfo" : "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ ÑƒÑпішно відоÑлані", | 35 | "invite.successInfo" : "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ ÑƒÑпішно надіÑлані", |
25 | "login.email.label" : "Email адреÑа", | 36 | "login.email.label" : "Email адреÑа", |
26 | "login.headline" : "Увійти", | 37 | "login.headline" : "Увійти", |
27 | "login.invalidCredentials" : "Email або пароль некоректні", | 38 | "login.invalidCredentials" : "Email або пароль некоректні", |
28 | "login.link.password" : "Скинути пароль", | 39 | "login.link.password" : "Скинути пароль", |
29 | "login.link.signup" : "Створити безплатний акаунт", | 40 | "login.link.signup" : "Створити безплатний акаунт", |
30 | "login.password.label" : "Пароль", | 41 | "login.password.label" : "Пароль", |
31 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", | 42 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", |
32 | "login.submit.label" : "Увійти", | 43 | "login.submit.label" : "Увійти", |
33 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", | 44 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", |
34 | "menu.app.about" : "Про Franz", | 45 | "menu.app.about" : "Про Franz", |
35 | "menu.app.hide" : "Приховати", | 46 | "menu.app.hide" : "Приховати", |
36 | "menu.app.hideOthers" : "Приховати інші", | 47 | "menu.app.hideOthers" : "Приховати інші", |
@@ -81,7 +92,7 @@ | |||
81 | "password.noUser" : "Ðе знайдено жодного кориÑтувача з цією email адреÑою", | 92 | "password.noUser" : "Ðе знайдено жодного кориÑтувача з цією email адреÑою", |
82 | "password.submit.label" : "Подати", | 93 | "password.submit.label" : "Подати", |
83 | "password.successInfo" : "Будь лаÑка, перевірте ваш email", | 94 | "password.successInfo" : "Будь лаÑка, перевірте ваш email", |
84 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 95 | "premiumFeature.button.upgradeAccount" : "Преміум акаунт", |
85 | "pricing.headline" : "Підтримайте Franz", | 96 | "pricing.headline" : "Підтримайте Franz", |
86 | "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.", | 97 | "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.", |
87 | "pricing.submit.label" : "Я хочу підтримати розробку Franz", | 98 | "pricing.submit.label" : "Я хочу підтримати розробку Franz", |
@@ -96,7 +107,7 @@ | |||
96 | "service.errorHandler.editAction" : "Редагувати {name}", | 107 | "service.errorHandler.editAction" : "Редагувати {name}", |
97 | "service.errorHandler.headline" : "О, ні!", | 108 | "service.errorHandler.headline" : "О, ні!", |
98 | "service.errorHandler.message" : "Помилка", | 109 | "service.errorHandler.message" : "Помилка", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} не завантажено", |
100 | "services.getStarted" : "Почати", | 111 | "services.getStarted" : "Почати", |
101 | "services.welcome" : "ЛаÑкаво проÑимо в Franz", | 112 | "services.welcome" : "ЛаÑкаво проÑимо в Franz", |
102 | "settings.account.account.editButton" : "Редагувати акаунт", | 113 | "settings.account.account.editButton" : "Редагувати акаунт", |
@@ -127,7 +138,7 @@ | |||
127 | "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", | 138 | "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", |
128 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку", | 139 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку", |
129 | "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—", | 140 | "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "Переходь на Темну Сторону", |
131 | "settings.app.form.enableGPUAcceleration" : "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU", | 142 | "settings.app.form.enableGPUAcceleration" : "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU", |
132 | "settings.app.form.enableMenuBar" : "Відображати Franz в панелі головного меню", | 143 | "settings.app.form.enableMenuBar" : "Відображати Franz в панелі головного меню", |
133 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", | 144 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", |
@@ -138,7 +149,7 @@ | |||
138 | "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", | 149 | "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", |
139 | "settings.app.form.showDisabledServices" : "Показати вкладку вимкнених ÑервіÑів", | 150 | "settings.app.form.showDisabledServices" : "Показати вкладку вимкнених ÑервіÑів", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–", |
141 | "settings.app.form.spellcheckerLanguage" : "Spell checking language", | 152 | "settings.app.form.spellcheckerLanguage" : "Мова перевірки правопиÑу", |
142 | "settings.app.headline" : "ÐалаштуваннÑ", | 153 | "settings.app.headline" : "ÐалаштуваннÑ", |
143 | "settings.app.headlineAdvanced" : "Додаткові налаштуваннÑ", | 154 | "settings.app.headlineAdvanced" : "Додаткові налаштуваннÑ", |
144 | "settings.app.headlineAppearance" : "ВиглÑд", | 155 | "settings.app.headlineAppearance" : "ВиглÑд", |
@@ -179,7 +190,7 @@ | |||
179 | "settings.service.form.editServiceHeadline" : "Редагувати {name}", | 190 | "settings.service.form.editServiceHeadline" : "Редагувати {name}", |
180 | "settings.service.form.enableAudio" : "Увімкнути звук", | 191 | "settings.service.form.enableAudio" : "Увімкнути звук", |
181 | "settings.service.form.enableBadge" : "Показувати непрочитані повідомленнÑ", | 192 | "settings.service.form.enableBadge" : "Показувати непрочитані повідомленнÑ", |
182 | "settings.service.form.enableDarkMode" : "Enable Dark Mode", | 193 | "settings.service.form.enableDarkMode" : "Переходь на Темну Сторону", |
183 | "settings.service.form.enableNotification" : "Увімкнути ÑповіщеннÑ", | 194 | "settings.service.form.enableNotification" : "Увімкнути ÑповіщеннÑ", |
184 | "settings.service.form.enableService" : "Увімкнути ÑервіÑ", | 195 | "settings.service.form.enableService" : "Увімкнути ÑервіÑ", |
185 | "settings.service.form.headlineBadges" : "Значки непрочитаних повідомлень", | 196 | "settings.service.form.headlineBadges" : "Значки непрочитаних повідомлень", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", | 203 | "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", |
193 | "settings.service.form.isMutedInfo" : "Коли вимкнено, вÑÑ– ÑÐ¿Ð¾Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑŽÑ‚ÑŒÑÑ", | 204 | "settings.service.form.isMutedInfo" : "Коли вимкнено, вÑÑ– ÑÐ¿Ð¾Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑŽÑ‚ÑŒÑÑ", |
194 | "settings.service.form.name" : "Ім'Ñ", | 205 | "settings.service.form.name" : "Ім'Ñ", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ HTTP\/HTTPS прокÑÑ– ", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "ПрокÑÑ– Host\/IP", |
197 | "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", | 208 | "settings.service.form.proxy.info" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ– не будуть Ñинхронізовані із Ñерверами Franz", |
198 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "ВикориÑтовувати прокÑÑ–", |
199 | "settings.service.form.proxy.password" : "Password (optional)", | 210 | "settings.service.form.proxy.password" : "Пароль (опційно)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "Порт", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "Будь лаÑка, перезапуÑÑ‚Ñ–Ñ‚ÑŒ Franz піÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ налуштувань прокÑÑ–", |
202 | "settings.service.form.proxy.user" : "User (optional)", | 213 | "settings.service.form.proxy.user" : "КориÑтувач (опційно)", |
203 | "settings.service.form.saveButton" : "Зберегти ÑервіÑ", | 214 | "settings.service.form.saveButton" : "Зберегти ÑервіÑ", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "Мова перевірки правопиÑу", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})", |
206 | "settings.service.form.tabHosted" : "Розміщений", | 217 | "settings.service.form.tabHosted" : "Розміщений", |
207 | "settings.service.form.tabOnPremise" : "СамоÑтійно розміщений âï¸", | 218 | "settings.service.form.tabOnPremise" : "СамоÑтійно розміщений âï¸", |
208 | "settings.service.form.team" : "Команда", | 219 | "settings.service.form.team" : "Команда", |
@@ -245,11 +256,11 @@ | |||
245 | "subscription.features.ads" : "Жодної реклами!", | 256 | "subscription.features.ads" : "Жодної реклами!", |
246 | "subscription.features.comingSoon" : "очікуйте незабаром", | 257 | "subscription.features.comingSoon" : "очікуйте незабаром", |
247 | "subscription.features.encryptedSync" : "Шифрована ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ ÑеанÑу", | 258 | "subscription.features.encryptedSync" : "Шифрована ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ ÑеанÑу", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "ÐÑ–Ñких затримок та набридливих пропозицій з платних підпиÑок", |
249 | "subscription.features.onpremise" : "Додайте on-premise \/ hosted ÑервіÑи, такі Ñк Hipchat", | 260 | "subscription.features.onpremise" : "Додайте on-premise \/ hosted ÑервіÑи, такі Ñк Hipchat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "СервіÑи, що виконуютьÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾\/вимагають хоÑтингу, приміром Mattermost", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "Підтримка прокÑÑ– ", |
252 | "subscription.features.spellchecker" : "Support for spellchecker", | 263 | "subscription.features.spellchecker" : "Підтримка перевірки правопиÑу", |
253 | "subscription.includedFeatures" : "Платний Преміальний Ðкаунт Прихильника Franz включає", | 264 | "subscription.includedFeatures" : "Платний Преміальний Ðкаунт Прихильника Franz включає", |
254 | "subscription.paymentSessionError" : "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ форму платежу", | 265 | "subscription.paymentSessionError" : "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ форму платежу", |
255 | "subscription.submit.label" : "Я хочу підтримати розробку Franz", | 266 | "subscription.submit.label" : "Я хочу підтримати розробку Franz", |
diff --git a/src/i18n/locales/whitelist_en-US.json b/src/i18n/locales/whitelist_en-US.json new file mode 100644 index 000000000..32960f8ce --- /dev/null +++ b/src/i18n/locales/whitelist_en-US.json | |||
@@ -0,0 +1,2 @@ | |||
1 | [ | ||
2 | ] \ No newline at end of file | ||
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index cfb1d3dce..3ae08c9ef 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json | |||
@@ -1,11 +1,22 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "é‡æ–°è¼‰å…¥", | 2 | "app.errorHandler.action" : "é‡æ–°è¼‰å…¥", |
3 | "app.errorHandler.headline" : "有些æ±è¥¿å‡ºéŒ¯äº†", | 3 | "app.errorHandler.headline" : "有些æ±è¥¿å‡ºéŒ¯äº†", |
4 | "feature.delayApp.action" : "Get a Franz Supporter License", | 4 | "feature.delayApp.action" : "å–å¾— Franz 支æ´æŽˆæ¬Š", |
5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 5 | "feature.delayApp.headline" : "請購買 Franz 支æ´æŽˆæ¬Šä»¥è·³éŽç‰å€™", |
6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", | 6 | "feature.delayApp.text" : "Franz 會在 {seconds} 秒後繼續。", |
7 | "global.api.unhealthy" : "無法連線至Franz的伺æœå™¨ã€‚", | 7 | "feature.shareFranz.action.email" : "Send as email", |
8 | "feature.shareFranz.action.facebook" : "Share on Facebook", | ||
9 | "feature.shareFranz.action.twitter" : "Share on Twitter", | ||
10 | "feature.shareFranz.headline" : "Franz is better together!", | ||
11 | "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.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @MeetFranz", | ||
13 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
14 | "global.api.unhealthy" : "無法連線至 Franz 的伺æœå™¨", | ||
8 | "global.notConnectedToTheInternet" : "ä½ æ²’æœ‰é€£ä¸Šç¶²è·¯ã€‚", | 15 | "global.notConnectedToTheInternet" : "ä½ æ²’æœ‰é€£ä¸Šç¶²è·¯ã€‚", |
16 | "global.spellchecker.useDefault" : "使用系統é è¨ ({default})", | ||
17 | "global.spellchecking.autodetect" : "Detect language automatically", | ||
18 | "global.spellchecking.autodetect.short" : "Automatic", | ||
19 | "global.spellchecking.language" : "拼å—檢查語言", | ||
9 | "import.headline" : "匯入 Franz 4 çš„æœå‹™", | 20 | "import.headline" : "匯入 Franz 4 çš„æœå‹™", |
10 | "import.notSupportedHeadline" : "Franz 5 尚未支æ´æ¤æœå‹™", | 21 | "import.notSupportedHeadline" : "Franz 5 尚未支æ´æ¤æœå‹™", |
11 | "import.skip.label" : "æ‰‹å‹•æ·»åŠ æœå‹™", | 22 | "import.skip.label" : "æ‰‹å‹•æ·»åŠ æœå‹™", |
@@ -14,10 +25,10 @@ | |||
14 | "infobar.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", | 25 | "infobar.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", |
15 | "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™", | 26 | "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™", |
16 | "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資訊", | 27 | "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資訊", |
17 | "infobar.servicesUpdated" : "ä½ çš„æœå‹™å·²ç¶“被更新", | 28 | "infobar.servicesUpdated" : "å·²ç¶“æ›´æ–°ä½ çš„æœå‹™", |
18 | "infobar.updateAvailable" : "Franz有å¯ç”¨çš„æ›´æ–°", | 29 | "infobar.updateAvailable" : "Franz 有å¯ç”¨çš„æ›´æ–°", |
19 | "invite.email.label" : "é›»å郵件地å€", | 30 | "invite.email.label" : "é›»å郵件地å€", |
20 | "invite.headline.friends" : "邀請3ä½ä½ 的朋å‹æˆ–åŒäº‹", | 31 | "invite.headline.friends" : "邀請 3 ä½æœ‹å‹æˆ–åŒäº‹", |
21 | "invite.name.label" : "å稱", | 32 | "invite.name.label" : "å稱", |
22 | "invite.skip.label" : "我想ç¨å¾Œå†åš", | 33 | "invite.skip.label" : "我想ç¨å¾Œå†åš", |
23 | "invite.submit.label" : "é€å‡ºé‚€è«‹", | 34 | "invite.submit.label" : "é€å‡ºé‚€è«‹", |
@@ -31,7 +42,7 @@ | |||
31 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", | 42 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", |
32 | "login.submit.label" : "登入", | 43 | "login.submit.label" : "登入", |
33 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", | 44 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", |
34 | "menu.app.about" : "關於Franz", | 45 | "menu.app.about" : "關於 Franz", |
35 | "menu.app.hide" : "éš±è—", | 46 | "menu.app.hide" : "éš±è—", |
36 | "menu.app.hideOthers" : "éš±è—其他", | 47 | "menu.app.hideOthers" : "éš±è—其他", |
37 | "menu.app.quit" : "çµæŸ", | 48 | "menu.app.quit" : "çµæŸ", |
@@ -63,7 +74,7 @@ | |||
63 | "menu.view" : "檢視", | 74 | "menu.view" : "檢視", |
64 | "menu.view.enterFullScreen" : "進入全螢幕模å¼", | 75 | "menu.view.enterFullScreen" : "進入全螢幕模å¼", |
65 | "menu.view.exitFullScreen" : "離開全螢幕模å¼", | 76 | "menu.view.exitFullScreen" : "離開全螢幕模å¼", |
66 | "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥Franz", | 77 | "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥ Franz", |
67 | "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™", | 78 | "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™", |
68 | "menu.view.resetZoom" : "實際大å°", | 79 | "menu.view.resetZoom" : "實際大å°", |
69 | "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具", | 80 | "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具", |
@@ -82,9 +93,9 @@ | |||
82 | "password.submit.label" : "é€å‡º", | 93 | "password.submit.label" : "é€å‡º", |
83 | "password.successInfo" : "請檢查您的電å郵件", | 94 | "password.successInfo" : "請檢查您的電å郵件", |
84 | "premiumFeature.button.upgradeAccount" : "å‡ç´šå¸³è™Ÿ", | 95 | "premiumFeature.button.upgradeAccount" : "å‡ç´šå¸³è™Ÿ", |
85 | "pricing.headline" : "支æŒFranz", | 96 | "pricing.headline" : "æ”¯æŒ Franz", |
86 | "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒFranz的開發。", | 97 | "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒ Franz 的開發。", |
87 | "pricing.submit.label" : "我想支æŒFranz的開發。", | 98 | "pricing.submit.label" : "æˆ‘æƒ³æ”¯æŒ Franz 的開發。", |
88 | "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒçš„計畫", | 99 | "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒçš„計畫", |
89 | "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}", | 100 | "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}", |
90 | "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}", | 101 | "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}", |
@@ -92,20 +103,20 @@ | |||
92 | "service.crashHandler.text" : "{name}導致了一個錯誤。", | 103 | "service.crashHandler.text" : "{name}導致了一個錯誤。", |
93 | "service.disabledHandler.action" : "啟用{name}", | 104 | "service.disabledHandler.action" : "啟用{name}", |
94 | "service.disabledHandler.headline" : "{name}å·²åœç”¨", | 105 | "service.disabledHandler.headline" : "{name}å·²åœç”¨", |
95 | "service.errorHandler.action" : "é‡æ–°è¼‰å…¥{name}", | 106 | "service.errorHandler.action" : "é‡æ–°è¼‰å…¥ {name}", |
96 | "service.errorHandler.editAction" : "編輯{å稱}", | 107 | "service.errorHandler.editAction" : "編輯{å稱}", |
97 | "service.errorHandler.headline" : "噢ä¸!", | 108 | "service.errorHandler.headline" : "噢ä¸ï¼", |
98 | "service.errorHandler.message" : "錯誤", | 109 | "service.errorHandler.message" : "錯誤", |
99 | "service.errorHandler.text" : "{name} has failed to load.", | 110 | "service.errorHandler.text" : "{name} 載入失敗。", |
100 | "services.getStarted" : "開始", | 111 | "services.getStarted" : "開始", |
101 | "services.welcome" : "æ¡è¿Žä½¿ç”¨Franz", | 112 | "services.welcome" : "æ¡è¿Žä½¿ç”¨ Franz", |
102 | "settings.account.account.editButton" : "編輯帳號", | 113 | "settings.account.account.editButton" : "編輯帳號", |
103 | "settings.account.accountType.basic" : "基礎帳號", | 114 | "settings.account.accountType.basic" : "基礎帳號", |
104 | "settings.account.accountType.premium" : "高級支æŒè€…帳戶", | 115 | "settings.account.accountType.premium" : "高級支æ´å¸³æˆ¶", |
105 | "settings.account.buttonSave" : "更新簡介", | 116 | "settings.account.buttonSave" : "更新簡介", |
106 | "settings.account.deleteAccount" : "移除帳號", | 117 | "settings.account.deleteAccount" : "移除帳號", |
107 | "settings.account.deleteEmailSent" : "移除帳號之確èªé›»éƒµå·²é€å‡ºã€‚ä½ çš„å¸³è™ŸåŠç›¸é—œè³‡æ–™å°‡ç„¡æ³•æ¢å¾©ï¼", | 118 | "settings.account.deleteEmailSent" : "移除帳號之確èªé›»éƒµå·²é€å‡ºã€‚ä½ çš„å¸³è™ŸåŠç›¸é—œè³‡æ–™å°‡ç„¡æ³•æ¢å¾©ï¼", |
108 | "settings.account.deleteInfo" : "如果ä¸å†éœ€è¦ä½ çš„å¸³è™Ÿäº†ï¼Œä½ å¯ä»¥åœ¨é€™è£¡åˆªé™¤å¸³è™Ÿå’Œç›¸é—œè³‡æ–™", | 119 | "settings.account.deleteInfo" : "如果ä¸å†éœ€è¦ä½ çš„å¸³è™Ÿï¼Œä½ å¯ä»¥åœ¨é€™è£¡åˆªé™¤å¸³è™Ÿå’Œæ‰€æœ‰ç›¸é—œè³‡æ–™ã€‚", |
109 | "settings.account.headline" : "帳號", | 120 | "settings.account.headline" : "帳號", |
110 | "settings.account.headlineAccount" : "帳戶資訊", | 121 | "settings.account.headlineAccount" : "帳戶資訊", |
111 | "settings.account.headlineDangerZone" : "å±éšªåœ°å¸¶", | 122 | "settings.account.headlineDangerZone" : "å±éšªåœ°å¸¶", |
@@ -113,7 +124,7 @@ | |||
113 | "settings.account.headlinePassword" : "變更密碼", | 124 | "settings.account.headlinePassword" : "變更密碼", |
114 | "settings.account.headlineProfile" : "更新簡介", | 125 | "settings.account.headlineProfile" : "更新簡介", |
115 | "settings.account.headlineSubscription" : "您的訂閱", | 126 | "settings.account.headlineSubscription" : "您的訂閱", |
116 | "settings.account.headlineUpgrade" : "å‡ç´šæ‚¨çš„帳戶&支æŒFranz", | 127 | "settings.account.headlineUpgrade" : "å‡ç´šæ‚¨çš„å¸³æˆ¶ä¸¦æ”¯æŒ Franz", |
117 | "settings.account.invoiceDownload" : "下載", | 128 | "settings.account.invoiceDownload" : "下載", |
118 | "settings.account.manageSubscription.label" : "管ç†æ‚¨çš„訂閱", | 129 | "settings.account.manageSubscription.label" : "管ç†æ‚¨çš„訂閱", |
119 | "settings.account.successInfo" : "您的更變已經被儲å˜", | 130 | "settings.account.successInfo" : "您的更變已經被儲å˜", |
@@ -122,20 +133,20 @@ | |||
122 | "settings.app.buttonClearAllCache" : "清除快å–", | 133 | "settings.app.buttonClearAllCache" : "清除快å–", |
123 | "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", | 134 | "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", |
124 | "settings.app.buttonSearchForUpdate" : "檢查更新", | 135 | "settings.app.buttonSearchForUpdate" : "檢查更新", |
125 | "settings.app.cacheInfo" : "Franzå¿«å–ç›®å‰å 用ç£ç¢Ÿç©ºé–“{大å°}。", | 136 | "settings.app.cacheInfo" : "Franz å¿«å–ç›®å‰å 用 {size} çš„ç£ç¢Ÿç©ºé–“。", |
126 | "settings.app.currentVersion" : "ç›®å‰çš„版本", | 137 | "settings.app.currentVersion" : "ç›®å‰çš„版本", |
127 | "settings.app.form.autoLaunchInBackground" : "在背景開啟", | 138 | "settings.app.form.autoLaunchInBackground" : "在背景開啟", |
128 | "settings.app.form.autoLaunchOnStart" : "開機時啟動Franz", | 139 | "settings.app.form.autoLaunchOnStart" : "開機時啟動 Franz", |
129 | "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ", | 140 | "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ", |
130 | "settings.app.form.darkMode" : "Join the Dark Side", | 141 | "settings.app.form.darkMode" : "åŠ å…¥é»‘æš—é¢", |
131 | "settings.app.form.enableGPUAcceleration" : "啟用GPUåŠ é€Ÿ", | 142 | "settings.app.form.enableGPUAcceleration" : "啟用 GPU åŠ é€Ÿ", |
132 | "settings.app.form.enableMenuBar" : "顯示Franz在é¸å–®åˆ—", | 143 | "settings.app.form.enableMenuBar" : "在é¸å–®åˆ—顯示 Franz", |
133 | "settings.app.form.enableSpellchecking" : "啟用拼å—檢查", | 144 | "settings.app.form.enableSpellchecking" : "啟用拼å—檢查", |
134 | "settings.app.form.enableSystemTray" : "顯示Franz在系統列", | 145 | "settings.app.form.enableSystemTray" : "在系統列顯示 Franz", |
135 | "settings.app.form.hideDockIcon" : "在工作列ä¸éš±è—Franz圖示", | 146 | "settings.app.form.hideDockIcon" : "éš±è— Dock ä¸çš„ Franz 圖示", |
136 | "settings.app.form.language" : "語言", | 147 | "settings.app.form.language" : "語言", |
137 | "settings.app.form.minimizeToSystemTray" : "最å°åŒ–Franz到系統列", | 148 | "settings.app.form.minimizeToSystemTray" : "最å°åŒ– Franz 到系統列", |
138 | "settings.app.form.runInBackground" : "當關閉視窗時ä¿æŒFranz在背景é‹ä½œ", | 149 | "settings.app.form.runInBackground" : "當關閉視窗時,ä¿æŒ Franz 在背景é‹ä½œ", |
139 | "settings.app.form.showDisabledServices" : "顯示åœç”¨çš„æœå‹™æ¨™ç±¤", | 150 | "settings.app.form.showDisabledServices" : "顯示åœç”¨çš„æœå‹™æ¨™ç±¤", |
140 | "settings.app.form.showMessagesBadgesWhenMuted" : "當通知關閉時,標記未讀的訊æ¯", | 151 | "settings.app.form.showMessagesBadgesWhenMuted" : "當通知關閉時,標記未讀的訊æ¯", |
141 | "settings.app.form.spellcheckerLanguage" : "拼å—檢查語言", | 152 | "settings.app.form.spellcheckerLanguage" : "拼å—檢查語言", |
@@ -147,10 +158,10 @@ | |||
147 | "settings.app.headlineUpdates" : "æ›´æ–°", | 158 | "settings.app.headlineUpdates" : "æ›´æ–°", |
148 | "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®Š", | 159 | "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®Š", |
149 | "settings.app.subheadlineCache" : "å¿«å–", | 160 | "settings.app.subheadlineCache" : "å¿«å–", |
150 | "settings.app.translationHelp" : "幫助我們將Franzç¿»è¯æˆæ‚¨çš„語言。", | 161 | "settings.app.translationHelp" : "幫助我們將 Franz ç¿»è¯æˆæ‚¨çš„語言。", |
151 | "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸...", | 162 | "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸...", |
152 | "settings.app.updateStatusSearching" : "æ£åœ¨æœå°‹æ›´æ–°", | 163 | "settings.app.updateStatusSearching" : "æ£åœ¨æœå°‹æ›´æ–°", |
153 | "settings.app.updateStatusUpToDate" : "您æ£åœ¨ä½¿ç”¨æœ€æ–°ç‰ˆæœ¬çš„Franz", | 164 | "settings.app.updateStatusUpToDate" : "您æ£åœ¨ä½¿ç”¨æœ€æ–°ç‰ˆæœ¬çš„ Franz", |
154 | "settings.invite.headline" : "邀請朋å‹", | 165 | "settings.invite.headline" : "邀請朋å‹", |
155 | "settings.navigation.account" : "帳號", | 166 | "settings.navigation.account" : "帳號", |
156 | "settings.navigation.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", | 167 | "settings.navigation.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", |
@@ -172,11 +183,11 @@ | |||
172 | "settings.service.form.addServiceHeadline" : "新增{name}", | 183 | "settings.service.form.addServiceHeadline" : "新增{name}", |
173 | "settings.service.form.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", | 184 | "settings.service.form.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", |
174 | "settings.service.form.customUrl" : "自訂伺æœå™¨", | 185 | "settings.service.form.customUrl" : "自訂伺æœå™¨", |
175 | "settings.service.form.customUrlPremiumInfo" : "è¦æ·»åŠ 自己託管的æœå‹™ï¼Œæ‚¨éœ€è¦ä¸€å€‹Franz é¡å¤–支æŒè€…帳戶。", | 186 | "settings.service.form.customUrlPremiumInfo" : "è¦æ·»åŠ 自行託管的æœå‹™ï¼Œæ‚¨éœ€è¦æ“有 Franz 高級支æ´å¸³æˆ¶ã€‚", |
176 | "settings.service.form.customUrlUpgradeAccount" : "å‡ç´šæ‚¨çš„帳戶", | 187 | "settings.service.form.customUrlUpgradeAccount" : "å‡ç´šæ‚¨çš„帳戶", |
177 | "settings.service.form.customUrlValidationError" : "無法驗è‰è‡ªå®šç¾©{name}æœå‹™å™¨ã€‚", | 188 | "settings.service.form.customUrlValidationError" : "無法驗è‰è‡ªå®šç¾©{name}æœå‹™å™¨ã€‚", |
178 | "settings.service.form.deleteButton" : "刪除æœå‹™", | 189 | "settings.service.form.deleteButton" : "刪除æœå‹™", |
179 | "settings.service.form.editServiceHeadline" : "編輯{å稱}", | 190 | "settings.service.form.editServiceHeadline" : "編輯 {å稱}", |
180 | "settings.service.form.enableAudio" : "啟用音訊", | 191 | "settings.service.form.enableAudio" : "啟用音訊", |
181 | "settings.service.form.enableBadge" : "顯示未讀訊æ¯åœ–示", | 192 | "settings.service.form.enableBadge" : "顯示未讀訊æ¯åœ–示", |
182 | "settings.service.form.enableDarkMode" : "開啟深色模å¼", | 193 | "settings.service.form.enableDarkMode" : "開啟深色模å¼", |
@@ -192,17 +203,17 @@ | |||
192 | "settings.service.form.indirectMessages" : "顯示所有新消æ¯çš„消æ¯æ¨™èªŒ", | 203 | "settings.service.form.indirectMessages" : "顯示所有新消æ¯çš„消æ¯æ¨™èªŒ", |
193 | "settings.service.form.isMutedInfo" : "åœç”¨æ™‚,所有通知è²å’Œè²éŸ³æ’放都將éœéŸ³", | 204 | "settings.service.form.isMutedInfo" : "åœç”¨æ™‚,所有通知è²å’Œè²éŸ³æ’放都將éœéŸ³", |
194 | "settings.service.form.name" : "å稱", | 205 | "settings.service.form.name" : "å稱", |
195 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", | 206 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS 代ç†ä¼ºæœå™¨è¨å®š", |
196 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 207 | "settings.service.form.proxy.host" : "代ç†ä¼ºæœå™¨ç¶²åŸŸ \/ IP", |
197 | "settings.service.form.proxy.info" : "Proxy è¨å®šä¸æœƒèˆ‡ Franz 伺æœå™¨åŒæ¥", | 208 | "settings.service.form.proxy.info" : "Proxy è¨å®šä¸æœƒèˆ‡ Franz 伺æœå™¨åŒæ¥", |
198 | "settings.service.form.proxy.isEnabled" : "使用 Proxy", | 209 | "settings.service.form.proxy.isEnabled" : "使用 Proxy", |
199 | "settings.service.form.proxy.password" : "密碼 (é¸å¡«)", | 210 | "settings.service.form.proxy.password" : "密碼 (é¸å¡«)", |
200 | "settings.service.form.proxy.port" : "Port", | 211 | "settings.service.form.proxy.port" : "通訊阜", |
201 | "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", | 212 | "settings.service.form.proxy.restartInfo" : "在變更 Proxy è¨å®šå¾Œï¼Œè«‹é‡æ–°å•Ÿå‹• Franz", |
202 | "settings.service.form.proxy.user" : "使用者 (é¸å¡«)", | 213 | "settings.service.form.proxy.user" : "使用者 (é¸å¡«)", |
203 | "settings.service.form.saveButton" : "ä¿å˜æœå‹™", | 214 | "settings.service.form.saveButton" : "ä¿å˜æœå‹™", |
204 | "settings.service.form.spellcheckerLanguage" : "Spell checking Language", | 215 | "settings.service.form.spellcheckerLanguage" : "拼å—檢查語言", |
205 | "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})", | 216 | "settings.service.form.spellcheckerLanguage.default" : "使用系統é è¨ ({default})", |
206 | "settings.service.form.tabHosted" : "託管", | 217 | "settings.service.form.tabHosted" : "託管", |
207 | "settings.service.form.tabOnPremise" : "自我託管âï¸", | 218 | "settings.service.form.tabOnPremise" : "自我託管âï¸", |
208 | "settings.service.form.team" : "團隊", | 219 | "settings.service.form.team" : "團隊", |
@@ -215,7 +226,7 @@ | |||
215 | "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨", | 226 | "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨", |
216 | "settings.services.tooltip.isMuted" : "所有的è²éŸ³éƒ½æ˜¯éœéŸ³", | 227 | "settings.services.tooltip.isMuted" : "所有的è²éŸ³éƒ½æ˜¯éœéŸ³", |
217 | "settings.services.tooltip.notificationsDisabled" : "通知已åœç”¨", | 228 | "settings.services.tooltip.notificationsDisabled" : "通知已åœç”¨", |
218 | "settings.services.updatedInfo" : "ä½ çš„æ›´è®Šå·²ç¶“å„²å˜", | 229 | "settings.services.updatedInfo" : "已儲å˜ä½ 的變更", |
219 | "settings.user.form.accountType.company" : "å…¬å¸", | 230 | "settings.user.form.accountType.company" : "å…¬å¸", |
220 | "settings.user.form.accountType.individual" : "個人", | 231 | "settings.user.form.accountType.individual" : "個人", |
221 | "settings.user.form.accountType.label" : "帳戶類型", | 232 | "settings.user.form.accountType.label" : "帳戶類型", |
@@ -235,7 +246,7 @@ | |||
235 | "signup.firstname.label" : "å", | 246 | "signup.firstname.label" : "å", |
236 | "signup.headline" : "註冊", | 247 | "signup.headline" : "註冊", |
237 | "signup.lastname.label" : "姓", | 248 | "signup.lastname.label" : "姓", |
238 | "signup.legal.info" : "ä½ æŽ¥å—é€éŽå‰µå»ºä¸€å€‹Franz帳戶", | 249 | "signup.legal.info" : "é€éŽå‰µå»ºä¸€å€‹ Franz å¸³æˆ¶ï¼Œä½ åŒæ„", |
239 | "signup.legal.privacy" : "éš±ç§è²æ˜Ž", | 250 | "signup.legal.privacy" : "éš±ç§è²æ˜Ž", |
240 | "signup.legal.terms" : "æœå‹™æ¢æ¬¾", | 251 | "signup.legal.terms" : "æœå‹™æ¢æ¬¾", |
241 | "signup.link.login" : "已經有一個帳戶,登入?", | 252 | "signup.link.login" : "已經有一個帳戶,登入?", |
@@ -245,14 +256,14 @@ | |||
245 | "subscription.features.ads" : "無廣告,永é !", | 256 | "subscription.features.ads" : "無廣告,永é !", |
246 | "subscription.features.comingSoon" : "å³å°‡æŽ¨å‡º", | 257 | "subscription.features.comingSoon" : "å³å°‡æŽ¨å‡º", |
247 | "subscription.features.encryptedSync" : "åŠ å¯†çš„æœƒè©±åŒæ¥", | 258 | "subscription.features.encryptedSync" : "åŠ å¯†çš„æœƒè©±åŒæ¥", |
248 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 259 | "subscription.features.noInterruptions" : "å‡ç´šæŽˆæ¬Šæ²’有延é²èˆ‡æ‰“盹", |
249 | "subscription.features.onpremise" : "æ·»åŠ æœ¬åœ°\/託管æœå‹™å¦‚HipChat", | 260 | "subscription.features.onpremise" : "æ·»åŠ æœ¬åœ°\/託管æœå‹™å¦‚HipChat", |
250 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 261 | "subscription.features.onpremise.mattermost" : "åŠ å…¥å¦‚ Mattermost ç‰å·²é 定 \/ 託管的æœå‹™", |
251 | "subscription.features.proxy" : "Proxy support for services", | 262 | "subscription.features.proxy" : "æœå‹™çš„代ç†ä¼ºæœå™¨æ”¯æ´", |
252 | "subscription.features.spellchecker" : "支æ´æ‹¼å—檢查", | 263 | "subscription.features.spellchecker" : "支æ´æ‹¼å—檢查", |
253 | "subscription.includedFeatures" : "包å«é«˜ç´šFranz付費帳戶", | 264 | "subscription.includedFeatures" : "Franz 高級支æ´å¸³æˆ¶åŒ…å«", |
254 | "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單", | 265 | "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單", |
255 | "subscription.submit.label" : "我想支æŒFranz的開發", | 266 | "subscription.submit.label" : "æˆ‘æƒ³æ”¯æŒ Franz 開發", |
256 | "subscription.type.free" : "自由", | 267 | "subscription.type.free" : "自由", |
257 | "subscription.type.month" : "月", | 268 | "subscription.type.month" : "月", |
258 | "subscription.type.year" : "å¹´", | 269 | "subscription.type.year" : "å¹´", |
diff --git a/src/i18n/manage-translations.js b/src/i18n/manage-translations.js new file mode 100644 index 000000000..ee64c9c09 --- /dev/null +++ b/src/i18n/manage-translations.js | |||
@@ -0,0 +1,9 @@ | |||
1 | require('@babel/register'); | ||
2 | const manageTranslations = require('react-intl-translations-manager').default; | ||
3 | |||
4 | manageTranslations({ | ||
5 | messagesDirectory: 'src/i18n/messages', | ||
6 | translationsDirectory: 'src/i18n/locales', | ||
7 | singleMessagesFile: true, | ||
8 | languages: ['en-US'], | ||
9 | }); | ||
diff --git a/src/i18n/messages/src/components/auth/Import.json b/src/i18n/messages/src/components/auth/Import.json new file mode 100644 index 000000000..264fc729b --- /dev/null +++ b/src/i18n/messages/src/components/auth/Import.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "import.headline", | ||
4 | "defaultMessage": "!!!Import your Franz 4 services", | ||
5 | "file": "src/components/auth/Import.js", | ||
6 | "start": { | ||
7 | "line": 13, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 16, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "import.notSupportedHeadline", | ||
17 | "defaultMessage": "!!!Services not yet supported in Franz 5", | ||
18 | "file": "src/components/auth/Import.js", | ||
19 | "start": { | ||
20 | "line": 17, | ||
21 | "column": 24 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 20, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "import.submit.label", | ||
30 | "defaultMessage": "!!!Import {count} services", | ||
31 | "file": "src/components/auth/Import.js", | ||
32 | "start": { | ||
33 | "line": 21, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 24, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "import.skip.label", | ||
43 | "defaultMessage": "!!!I want to add services manually", | ||
44 | "file": "src/components/auth/Import.js", | ||
45 | "start": { | ||
46 | "line": 25, | ||
47 | "column": 19 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 28, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Invite.json b/src/i18n/messages/src/components/auth/Invite.json new file mode 100644 index 000000000..57c9bddcf --- /dev/null +++ b/src/i18n/messages/src/components/auth/Invite.json | |||
@@ -0,0 +1,93 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.invite.headline", | ||
4 | "defaultMessage": "!!!Invite Friends", | ||
5 | "file": "src/components/auth/Invite.js", | ||
6 | "start": { | ||
7 | "line": 16, | ||
8 | "column": 20 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 19, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "invite.headline.friends", | ||
17 | "defaultMessage": "!!!Invite 3 of your friends or colleagues", | ||
18 | "file": "src/components/auth/Invite.js", | ||
19 | "start": { | ||
20 | "line": 20, | ||
21 | "column": 12 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 23, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "invite.name.label", | ||
30 | "defaultMessage": "!!!Name", | ||
31 | "file": "src/components/auth/Invite.js", | ||
32 | "start": { | ||
33 | "line": 24, | ||
34 | "column": 13 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 27, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "invite.email.label", | ||
43 | "defaultMessage": "!!!Email address", | ||
44 | "file": "src/components/auth/Invite.js", | ||
45 | "start": { | ||
46 | "line": 28, | ||
47 | "column": 14 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 31, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "invite.submit.label", | ||
56 | "defaultMessage": "!!!Send invites", | ||
57 | "file": "src/components/auth/Invite.js", | ||
58 | "start": { | ||
59 | "line": 32, | ||
60 | "column": 21 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 35, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "invite.skip.label", | ||
69 | "defaultMessage": "!!!I want to do this later", | ||
70 | "file": "src/components/auth/Invite.js", | ||
71 | "start": { | ||
72 | "line": 36, | ||
73 | "column": 19 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 39, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "invite.successInfo", | ||
82 | "defaultMessage": "!!!Invitations sent successfully", | ||
83 | "file": "src/components/auth/Invite.js", | ||
84 | "start": { | ||
85 | "line": 40, | ||
86 | "column": 21 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 43, | ||
90 | "column": 3 | ||
91 | } | ||
92 | } | ||
93 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json new file mode 100644 index 000000000..177f6000b --- /dev/null +++ b/src/i18n/messages/src/components/auth/Login.json | |||
@@ -0,0 +1,119 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "login.headline", | ||
4 | "defaultMessage": "!!!Sign in", | ||
5 | "file": "src/components/auth/Login.js", | ||
6 | "start": { | ||
7 | "line": 17, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 20, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "login.email.label", | ||
17 | "defaultMessage": "!!!Email address", | ||
18 | "file": "src/components/auth/Login.js", | ||
19 | "start": { | ||
20 | "line": 21, | ||
21 | "column": 14 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 24, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "login.password.label", | ||
30 | "defaultMessage": "!!!Password", | ||
31 | "file": "src/components/auth/Login.js", | ||
32 | "start": { | ||
33 | "line": 25, | ||
34 | "column": 17 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 28, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "login.submit.label", | ||
43 | "defaultMessage": "!!!Sign in", | ||
44 | "file": "src/components/auth/Login.js", | ||
45 | "start": { | ||
46 | "line": 29, | ||
47 | "column": 21 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 32, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "login.invalidCredentials", | ||
56 | "defaultMessage": "!!!Email or password not valid", | ||
57 | "file": "src/components/auth/Login.js", | ||
58 | "start": { | ||
59 | "line": 33, | ||
60 | "column": 22 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 36, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "login.tokenExpired", | ||
69 | "defaultMessage": "!!!Your session expired, please login again.", | ||
70 | "file": "src/components/auth/Login.js", | ||
71 | "start": { | ||
72 | "line": 37, | ||
73 | "column": 16 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 40, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "login.serverLogout", | ||
82 | "defaultMessage": "!!!Your session expired, please login again.", | ||
83 | "file": "src/components/auth/Login.js", | ||
84 | "start": { | ||
85 | "line": 41, | ||
86 | "column": 16 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 44, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "login.link.signup", | ||
95 | "defaultMessage": "!!!Create a free account", | ||
96 | "file": "src/components/auth/Login.js", | ||
97 | "start": { | ||
98 | "line": 45, | ||
99 | "column": 14 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 48, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "login.link.password", | ||
108 | "defaultMessage": "!!!Forgot password", | ||
109 | "file": "src/components/auth/Login.js", | ||
110 | "start": { | ||
111 | "line": 49, | ||
112 | "column": 16 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 52, | ||
116 | "column": 3 | ||
117 | } | ||
118 | } | ||
119 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Password.json b/src/i18n/messages/src/components/auth/Password.json new file mode 100644 index 000000000..f335b3acb --- /dev/null +++ b/src/i18n/messages/src/components/auth/Password.json | |||
@@ -0,0 +1,93 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "password.headline", | ||
4 | "defaultMessage": "!!!Forgot password", | ||
5 | "file": "src/components/auth/Password.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "password.email.label", | ||
17 | "defaultMessage": "!!!Email address", | ||
18 | "file": "src/components/auth/Password.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 14 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "password.submit.label", | ||
30 | "defaultMessage": "!!!Submit", | ||
31 | "file": "src/components/auth/Password.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "password.successInfo", | ||
43 | "defaultMessage": "!!!Your new password was sent to your email address", | ||
44 | "file": "src/components/auth/Password.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 15 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "password.noUser", | ||
56 | "defaultMessage": "!!!No user affiliated with that email address", | ||
57 | "file": "src/components/auth/Password.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 10 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "password.link.signup", | ||
69 | "defaultMessage": "!!!Create a free account", | ||
70 | "file": "src/components/auth/Password.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 14 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "password.link.login", | ||
82 | "defaultMessage": "!!!Sign in to your account", | ||
83 | "file": "src/components/auth/Password.js", | ||
84 | "start": { | ||
85 | "line": 38, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 41, | ||
90 | "column": 3 | ||
91 | } | ||
92 | } | ||
93 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json new file mode 100644 index 000000000..f711a55b4 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Pricing.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "pricing.headline", | ||
4 | "defaultMessage": "!!!Support Franz", | ||
5 | "file": "src/components/auth/Pricing.js", | ||
6 | "start": { | ||
7 | "line": 13, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 16, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "pricing.support.label", | ||
17 | "defaultMessage": "!!!Select your support plan", | ||
18 | "file": "src/components/auth/Pricing.js", | ||
19 | "start": { | ||
20 | "line": 17, | ||
21 | "column": 23 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 20, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "pricing.submit.label", | ||
30 | "defaultMessage": "!!!Support the development of Franz", | ||
31 | "file": "src/components/auth/Pricing.js", | ||
32 | "start": { | ||
33 | "line": 21, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 24, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.link.skipPayment", | ||
43 | "defaultMessage": "!!!I don't want to support the development of Franz.", | ||
44 | "file": "src/components/auth/Pricing.js", | ||
45 | "start": { | ||
46 | "line": 25, | ||
47 | "column": 15 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 28, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json new file mode 100644 index 000000000..a09745048 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Signup.json | |||
@@ -0,0 +1,158 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "signup.headline", | ||
4 | "defaultMessage": "!!!Sign up", | ||
5 | "file": "src/components/auth/Signup.js", | ||
6 | "start": { | ||
7 | "line": 18, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 21, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "signup.firstname.label", | ||
17 | "defaultMessage": "!!!Firstname", | ||
18 | "file": "src/components/auth/Signup.js", | ||
19 | "start": { | ||
20 | "line": 22, | ||
21 | "column": 18 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 25, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "signup.lastname.label", | ||
30 | "defaultMessage": "!!!Lastname", | ||
31 | "file": "src/components/auth/Signup.js", | ||
32 | "start": { | ||
33 | "line": 26, | ||
34 | "column": 17 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 29, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "signup.email.label", | ||
43 | "defaultMessage": "!!!Email address", | ||
44 | "file": "src/components/auth/Signup.js", | ||
45 | "start": { | ||
46 | "line": 30, | ||
47 | "column": 14 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 33, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "signup.company.label", | ||
56 | "defaultMessage": "!!!Company", | ||
57 | "file": "src/components/auth/Signup.js", | ||
58 | "start": { | ||
59 | "line": 34, | ||
60 | "column": 16 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 37, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "signup.password.label", | ||
69 | "defaultMessage": "!!!Password", | ||
70 | "file": "src/components/auth/Signup.js", | ||
71 | "start": { | ||
72 | "line": 38, | ||
73 | "column": 17 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 41, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "signup.legal.info", | ||
82 | "defaultMessage": "!!!By creating a Franz account you accept the", | ||
83 | "file": "src/components/auth/Signup.js", | ||
84 | "start": { | ||
85 | "line": 42, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 45, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "signup.legal.terms", | ||
95 | "defaultMessage": "!!!Terms of service", | ||
96 | "file": "src/components/auth/Signup.js", | ||
97 | "start": { | ||
98 | "line": 46, | ||
99 | "column": 9 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 49, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "signup.legal.privacy", | ||
108 | "defaultMessage": "!!!Privacy Statement", | ||
109 | "file": "src/components/auth/Signup.js", | ||
110 | "start": { | ||
111 | "line": 50, | ||
112 | "column": 11 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 53, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "signup.submit.label", | ||
121 | "defaultMessage": "!!!Create account", | ||
122 | "file": "src/components/auth/Signup.js", | ||
123 | "start": { | ||
124 | "line": 54, | ||
125 | "column": 21 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 57, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "signup.link.login", | ||
134 | "defaultMessage": "!!!Already have an account, sign in?", | ||
135 | "file": "src/components/auth/Signup.js", | ||
136 | "start": { | ||
137 | "line": 58, | ||
138 | "column": 13 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 61, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "signup.emailDuplicate", | ||
147 | "defaultMessage": "!!!A user with that email address already exists", | ||
148 | "file": "src/components/auth/Signup.js", | ||
149 | "start": { | ||
150 | "line": 62, | ||
151 | "column": 18 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 65, | ||
155 | "column": 3 | ||
156 | } | ||
157 | } | ||
158 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/auth/Welcome.json b/src/i18n/messages/src/components/auth/Welcome.json new file mode 100644 index 000000000..b4d2ce689 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Welcome.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "welcome.signupButton", | ||
4 | "defaultMessage": "!!!Create a free account", | ||
5 | "file": "src/components/auth/Welcome.js", | ||
6 | "start": { | ||
7 | "line": 9, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 12, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "welcome.loginButton", | ||
17 | "defaultMessage": "!!!Login to your account", | ||
18 | "file": "src/components/auth/Welcome.js", | ||
19 | "start": { | ||
20 | "line": 13, | ||
21 | "column": 15 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 16, | ||
25 | "column": 3 | ||
26 | } | ||
27 | } | ||
28 | ] \ 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 new file mode 100644 index 000000000..07603d062 --- /dev/null +++ b/src/i18n/messages/src/components/layout/AppLayout.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "infobar.servicesUpdated", | ||
4 | "defaultMessage": "!!!Your services have been updated.", | ||
5 | "file": "src/components/layout/AppLayout.js", | ||
6 | "start": { | ||
7 | "line": 22, | ||
8 | "column": 19 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 25, | ||
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": 26, | ||
21 | "column": 19 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 29, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "infobar.buttonReloadServices", | ||
30 | "defaultMessage": "!!!Reload services", | ||
31 | "file": "src/components/layout/AppLayout.js", | ||
32 | "start": { | ||
33 | "line": 30, | ||
34 | "column": 24 | ||
35 | }, | ||
36 | "end": { | ||
37 | "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": 34, | ||
47 | "column": 13 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 37, | ||
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": 38, | ||
60 | "column": 23 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 41, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "infobar.requiredRequestsFailed", | ||
69 | "defaultMessage": "!!!Could not load services and user information", | ||
70 | "file": "src/components/layout/AppLayout.js", | ||
71 | "start": { | ||
72 | "line": 42, | ||
73 | "column": 26 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 45, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json new file mode 100644 index 000000000..7aa00a186 --- /dev/null +++ b/src/i18n/messages/src/components/layout/Sidebar.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "sidebar.settings", | ||
4 | "defaultMessage": "!!!Settings", | ||
5 | "file": "src/components/layout/Sidebar.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "sidebar.addNewService", | ||
17 | "defaultMessage": "!!!Add new service", | ||
18 | "file": "src/components/layout/Sidebar.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "sidebar.muteApp", | ||
30 | "defaultMessage": "!!!Disable notifications & audio", | ||
31 | "file": "src/components/layout/Sidebar.js", | ||
32 | "start": { | ||
33 | "line": 19, | ||
34 | "column": 8 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 22, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "sidebar.unmuteApp", | ||
43 | "defaultMessage": "!!!Enable notifications & audio", | ||
44 | "file": "src/components/layout/Sidebar.js", | ||
45 | "start": { | ||
46 | "line": 23, | ||
47 | "column": 10 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 26, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json new file mode 100644 index 000000000..c8fe802df --- /dev/null +++ b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json | |||
@@ -0,0 +1,67 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "service.errorHandler.headline", | ||
4 | "defaultMessage": "!!!Oh no!", | ||
5 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
6 | "start": { | ||
7 | "line": 12, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 15, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "service.errorHandler.text", | ||
17 | "defaultMessage": "!!!{name} has failed to load.", | ||
18 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
19 | "start": { | ||
20 | "line": 16, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 19, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "service.errorHandler.action", | ||
30 | "defaultMessage": "!!!Reload {name}", | ||
31 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
32 | "start": { | ||
33 | "line": 20, | ||
34 | "column": 10 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 23, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "service.errorHandler.editAction", | ||
43 | "defaultMessage": "!!!Edit {name}", | ||
44 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
45 | "start": { | ||
46 | "line": 24, | ||
47 | "column": 14 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 27, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "service.errorHandler.message", | ||
56 | "defaultMessage": "!!!Error:", | ||
57 | "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js", | ||
58 | "start": { | ||
59 | "line": 28, | ||
60 | "column": 16 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 31, | ||
64 | "column": 3 | ||
65 | } | ||
66 | } | ||
67 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/content/ServiceDisabled.json b/src/i18n/messages/src/components/services/content/ServiceDisabled.json new file mode 100644 index 000000000..8bfad28c7 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/ServiceDisabled.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "service.disabledHandler.headline", | ||
4 | "defaultMessage": "!!!{name} is disabled", | ||
5 | "file": "src/components/services/content/ServiceDisabled.js", | ||
6 | "start": { | ||
7 | "line": 9, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 12, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "service.disabledHandler.action", | ||
17 | "defaultMessage": "!!!Enable {name}", | ||
18 | "file": "src/components/services/content/ServiceDisabled.js", | ||
19 | "start": { | ||
20 | "line": 13, | ||
21 | "column": 10 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 16, | ||
25 | "column": 3 | ||
26 | } | ||
27 | } | ||
28 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json new file mode 100644 index 000000000..884ab0c90 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/Services.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "services.welcome", | ||
4 | "defaultMessage": "!!!Welcome to Franz", | ||
5 | "file": "src/components/services/content/Services.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 11 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "services.getStarted", | ||
17 | "defaultMessage": "!!!Get started", | ||
18 | "file": "src/components/services/content/Services.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 14 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | } | ||
28 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json new file mode 100644 index 000000000..c3d6c41a5 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "service.crashHandler.headline", | ||
4 | "defaultMessage": "!!!Oh no!", | ||
5 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
6 | "start": { | ||
7 | "line": 10, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 13, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "service.crashHandler.text", | ||
17 | "defaultMessage": "!!!{name} has caused an error.", | ||
18 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
19 | "start": { | ||
20 | "line": 14, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 17, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "service.crashHandler.action", | ||
30 | "defaultMessage": "!!!Reload {name}", | ||
31 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
32 | "start": { | ||
33 | "line": 18, | ||
34 | "column": 10 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 21, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "service.crashHandler.autoReload", | ||
43 | "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds", | ||
44 | "file": "src/components/services/content/WebviewCrashHandler.js", | ||
45 | "start": { | ||
46 | "line": 22, | ||
47 | "column": 14 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 25, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json new file mode 100644 index 000000000..08a07845c --- /dev/null +++ b/src/i18n/messages/src/components/services/tabs/TabItem.json | |||
@@ -0,0 +1,119 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "tabs.item.reload", | ||
4 | "defaultMessage": "!!!Reload", | ||
5 | "file": "src/components/services/tabs/TabItem.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 10 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "tabs.item.edit", | ||
17 | "defaultMessage": "!!!Edit", | ||
18 | "file": "src/components/services/tabs/TabItem.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "tabs.item.disableNotifications", | ||
30 | "defaultMessage": "!!!Disable notifications", | ||
31 | "file": "src/components/services/tabs/TabItem.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 24 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "tabs.item.enableNotification", | ||
43 | "defaultMessage": "!!!Enable notifications", | ||
44 | "file": "src/components/services/tabs/TabItem.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 23 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "tabs.item.disableAudio", | ||
56 | "defaultMessage": "!!!Disable audio", | ||
57 | "file": "src/components/services/tabs/TabItem.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 16 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "tabs.item.enableAudio", | ||
69 | "defaultMessage": "!!!Enable audio", | ||
70 | "file": "src/components/services/tabs/TabItem.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 15 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "tabs.item.disableService", | ||
82 | "defaultMessage": "!!!Disable Service", | ||
83 | "file": "src/components/services/tabs/TabItem.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 18 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "tabs.item.enableService", | ||
95 | "defaultMessage": "!!!Enable Service", | ||
96 | "file": "src/components/services/tabs/TabItem.js", | ||
97 | "start": { | ||
98 | "line": 43, | ||
99 | "column": 17 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 46, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "tabs.item.deleteService", | ||
108 | "defaultMessage": "!!!Delete Service", | ||
109 | "file": "src/components/services/tabs/TabItem.js", | ||
110 | "start": { | ||
111 | "line": 47, | ||
112 | "column": 17 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 50, | ||
116 | "column": 3 | ||
117 | } | ||
118 | } | ||
119 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json new file mode 100644 index 000000000..603950395 --- /dev/null +++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json | |||
@@ -0,0 +1,197 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.account.headline", | ||
4 | "defaultMessage": "!!!Account", | ||
5 | "file": "src/components/settings/account/AccountDashboard.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.account.headlineSubscription", | ||
17 | "defaultMessage": "!!!Your Subscription", | ||
18 | "file": "src/components/settings/account/AccountDashboard.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 24 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.account.headlineUpgrade", | ||
30 | "defaultMessage": "!!!Upgrade your Account", | ||
31 | "file": "src/components/settings/account/AccountDashboard.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 19 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.account.headlineInvoices", | ||
43 | "defaultMessage": "!!Invoices", | ||
44 | "file": "src/components/settings/account/AccountDashboard.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.account.headlineDangerZone", | ||
56 | "defaultMessage": "!!Danger Zone", | ||
57 | "file": "src/components/settings/account/AccountDashboard.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 22 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.account.manageSubscription.label", | ||
69 | "defaultMessage": "!!!Manage your subscription", | ||
70 | "file": "src/components/settings/account/AccountDashboard.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 33 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.account.accountType.basic", | ||
82 | "defaultMessage": "!!!Basic Account", | ||
83 | "file": "src/components/settings/account/AccountDashboard.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 20 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.account.accountType.premium", | ||
95 | "defaultMessage": "!!!Premium Supporter Account", | ||
96 | "file": "src/components/settings/account/AccountDashboard.js", | ||
97 | "start": { | ||
98 | "line": 43, | ||
99 | "column": 22 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 46, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.account.account.editButton", | ||
108 | "defaultMessage": "!!!Edit Account", | ||
109 | "file": "src/components/settings/account/AccountDashboard.js", | ||
110 | "start": { | ||
111 | "line": 47, | ||
112 | "column": 21 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 50, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.account.invoiceDownload", | ||
121 | "defaultMessage": "!!!Download", | ||
122 | "file": "src/components/settings/account/AccountDashboard.js", | ||
123 | "start": { | ||
124 | "line": 51, | ||
125 | "column": 19 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 54, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.account.userInfoRequestFailed", | ||
134 | "defaultMessage": "!!!Could not load user information", | ||
135 | "file": "src/components/settings/account/AccountDashboard.js", | ||
136 | "start": { | ||
137 | "line": 55, | ||
138 | "column": 25 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 58, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.account.tryReloadUserInfoRequest", | ||
147 | "defaultMessage": "!!!Try again", | ||
148 | "file": "src/components/settings/account/AccountDashboard.js", | ||
149 | "start": { | ||
150 | "line": 59, | ||
151 | "column": 28 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 62, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.account.deleteAccount", | ||
160 | "defaultMessage": "!!!Delete account", | ||
161 | "file": "src/components/settings/account/AccountDashboard.js", | ||
162 | "start": { | ||
163 | "line": 63, | ||
164 | "column": 17 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 66, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.account.deleteInfo", | ||
173 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", | ||
174 | "file": "src/components/settings/account/AccountDashboard.js", | ||
175 | "start": { | ||
176 | "line": 67, | ||
177 | "column": 14 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 70, | ||
181 | "column": 3 | ||
182 | } | ||
183 | }, | ||
184 | { | ||
185 | "id": "settings.account.deleteEmailSent", | ||
186 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | ||
187 | "file": "src/components/settings/account/AccountDashboard.js", | ||
188 | "start": { | ||
189 | "line": 71, | ||
190 | "column": 19 | ||
191 | }, | ||
192 | "end": { | ||
193 | "line": 74, | ||
194 | "column": 3 | ||
195 | } | ||
196 | } | ||
197 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json new file mode 100644 index 000000000..785ce9f29 --- /dev/null +++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.navigation.availableServices", | ||
4 | "defaultMessage": "!!!Available services", | ||
5 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
6 | "start": { | ||
7 | "line": 9, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 12, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.navigation.yourServices", | ||
17 | "defaultMessage": "!!!Your services", | ||
18 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
19 | "start": { | ||
20 | "line": 13, | ||
21 | "column": 16 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 16, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.navigation.account", | ||
30 | "defaultMessage": "!!!Account", | ||
31 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
32 | "start": { | ||
33 | "line": 17, | ||
34 | "column": 11 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 20, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.navigation.settings", | ||
43 | "defaultMessage": "!!!Settings", | ||
44 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
45 | "start": { | ||
46 | "line": 21, | ||
47 | "column": 12 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 24, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.navigation.inviteFriends", | ||
56 | "defaultMessage": "!!!Invite Friends", | ||
57 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
58 | "start": { | ||
59 | "line": 25, | ||
60 | "column": 17 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 28, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.navigation.logout", | ||
69 | "defaultMessage": "!!!Logout", | ||
70 | "file": "src/components/settings/navigation/SettingsNavigation.js", | ||
71 | "start": { | ||
72 | "line": 29, | ||
73 | "column": 10 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 32, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json new file mode 100644 index 000000000..7d9ed3283 --- /dev/null +++ b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json | |||
@@ -0,0 +1,106 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.recipes.headline", | ||
4 | "defaultMessage": "!!!Available Services", | ||
5 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.searchService", | ||
17 | "defaultMessage": "!!!Search service", | ||
18 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.recipes.mostPopular", | ||
30 | "defaultMessage": "!!!Most popular", | ||
31 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 22 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.recipes.all", | ||
43 | "defaultMessage": "!!!All services", | ||
44 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 14 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.recipes.dev", | ||
56 | "defaultMessage": "!!!Development", | ||
57 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 14 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.recipes.nothingFound", | ||
69 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | ||
70 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 16 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.recipes.servicesSuccessfulAddedInfo", | ||
82 | "defaultMessage": "!!!Service successfully added", | ||
83 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 31 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.recipes.missingService", | ||
95 | "defaultMessage": "!!!Missing a service?", | ||
96 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
97 | "start": { | ||
98 | "line": 43, | ||
99 | "column": 18 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 46, | ||
103 | "column": 3 | ||
104 | } | ||
105 | } | ||
106 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json new file mode 100644 index 000000000..42b741b7a --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/EditServiceForm.json | |||
@@ -0,0 +1,288 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.service.form.saveButton", | ||
4 | "defaultMessage": "!!!Save service", | ||
5 | "file": "src/components/settings/services/EditServiceForm.js", | ||
6 | "start": { | ||
7 | "line": 22, | ||
8 | "column": 15 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 25, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.service.form.deleteButton", | ||
17 | "defaultMessage": "!!!Delete Service", | ||
18 | "file": "src/components/settings/services/EditServiceForm.js", | ||
19 | "start": { | ||
20 | "line": 26, | ||
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 29, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.service.form.availableServices", | ||
30 | "defaultMessage": "!!!Available services", | ||
31 | "file": "src/components/settings/services/EditServiceForm.js", | ||
32 | "start": { | ||
33 | "line": 30, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 33, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.service.form.yourServices", | ||
43 | "defaultMessage": "!!!Your services", | ||
44 | "file": "src/components/settings/services/EditServiceForm.js", | ||
45 | "start": { | ||
46 | "line": 34, | ||
47 | "column": 16 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 37, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.service.form.addServiceHeadline", | ||
56 | "defaultMessage": "!!!Add {name}", | ||
57 | "file": "src/components/settings/services/EditServiceForm.js", | ||
58 | "start": { | ||
59 | "line": 38, | ||
60 | "column": 22 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 41, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.service.form.editServiceHeadline", | ||
69 | "defaultMessage": "!!!Edit {name}", | ||
70 | "file": "src/components/settings/services/EditServiceForm.js", | ||
71 | "start": { | ||
72 | "line": 42, | ||
73 | "column": 23 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 45, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.service.form.tabHosted", | ||
82 | "defaultMessage": "!!!Hosted", | ||
83 | "file": "src/components/settings/services/EditServiceForm.js", | ||
84 | "start": { | ||
85 | "line": 46, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 49, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.service.form.tabOnPremise", | ||
95 | "defaultMessage": "!!!Self hosted âï¸", | ||
96 | "file": "src/components/settings/services/EditServiceForm.js", | ||
97 | "start": { | ||
98 | "line": 50, | ||
99 | "column": 16 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 53, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.service.form.useHostedService", | ||
108 | "defaultMessage": "!!!Use the hosted {name} service.", | ||
109 | "file": "src/components/settings/services/EditServiceForm.js", | ||
110 | "start": { | ||
111 | "line": 54, | ||
112 | "column": 20 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 57, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.service.form.customUrlValidationError", | ||
121 | "defaultMessage": "!!!Could not validate custom {name} server.", | ||
122 | "file": "src/components/settings/services/EditServiceForm.js", | ||
123 | "start": { | ||
124 | "line": 58, | ||
125 | "column": 28 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 61, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.service.form.customUrlPremiumInfo", | ||
134 | "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.", | ||
135 | "file": "src/components/settings/services/EditServiceForm.js", | ||
136 | "start": { | ||
137 | "line": 62, | ||
138 | "column": 24 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 65, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.service.form.customUrlUpgradeAccount", | ||
147 | "defaultMessage": "!!!Upgrade your account", | ||
148 | "file": "src/components/settings/services/EditServiceForm.js", | ||
149 | "start": { | ||
150 | "line": 66, | ||
151 | "column": 27 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 69, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.service.form.indirectMessageInfo", | ||
160 | "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | ||
161 | "file": "src/components/settings/services/EditServiceForm.js", | ||
162 | "start": { | ||
163 | "line": 70, | ||
164 | "column": 23 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 73, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.service.form.isMutedInfo", | ||
173 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", | ||
174 | "file": "src/components/settings/services/EditServiceForm.js", | ||
175 | "start": { | ||
176 | "line": 74, | ||
177 | "column": 15 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 77, | ||
181 | "column": 3 | ||
182 | } | ||
183 | }, | ||
184 | { | ||
185 | "id": "settings.service.form.headlineNotifications", | ||
186 | "defaultMessage": "!!!Notifications", | ||
187 | "file": "src/components/settings/services/EditServiceForm.js", | ||
188 | "start": { | ||
189 | "line": 78, | ||
190 | "column": 25 | ||
191 | }, | ||
192 | "end": { | ||
193 | "line": 81, | ||
194 | "column": 3 | ||
195 | } | ||
196 | }, | ||
197 | { | ||
198 | "id": "settings.service.form.headlineBadges", | ||
199 | "defaultMessage": "!!!Unread message badges", | ||
200 | "file": "src/components/settings/services/EditServiceForm.js", | ||
201 | "start": { | ||
202 | "line": 82, | ||
203 | "column": 18 | ||
204 | }, | ||
205 | "end": { | ||
206 | "line": 85, | ||
207 | "column": 3 | ||
208 | } | ||
209 | }, | ||
210 | { | ||
211 | "id": "settings.service.form.headlineGeneral", | ||
212 | "defaultMessage": "!!!General", | ||
213 | "file": "src/components/settings/services/EditServiceForm.js", | ||
214 | "start": { | ||
215 | "line": 86, | ||
216 | "column": 19 | ||
217 | }, | ||
218 | "end": { | ||
219 | "line": 89, | ||
220 | "column": 3 | ||
221 | } | ||
222 | }, | ||
223 | { | ||
224 | "id": "settings.service.form.iconDelete", | ||
225 | "defaultMessage": "!!!Delete", | ||
226 | "file": "src/components/settings/services/EditServiceForm.js", | ||
227 | "start": { | ||
228 | "line": 90, | ||
229 | "column": 14 | ||
230 | }, | ||
231 | "end": { | ||
232 | "line": 93, | ||
233 | "column": 3 | ||
234 | } | ||
235 | }, | ||
236 | { | ||
237 | "id": "settings.service.form.iconUpload", | ||
238 | "defaultMessage": "!!!Drop your image, or click here", | ||
239 | "file": "src/components/settings/services/EditServiceForm.js", | ||
240 | "start": { | ||
241 | "line": 94, | ||
242 | "column": 14 | ||
243 | }, | ||
244 | "end": { | ||
245 | "line": 97, | ||
246 | "column": 3 | ||
247 | } | ||
248 | }, | ||
249 | { | ||
250 | "id": "settings.service.form.proxy.headline", | ||
251 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", | ||
252 | "file": "src/components/settings/services/EditServiceForm.js", | ||
253 | "start": { | ||
254 | "line": 98, | ||
255 | "column": 17 | ||
256 | }, | ||
257 | "end": { | ||
258 | "line": 101, | ||
259 | "column": 3 | ||
260 | } | ||
261 | }, | ||
262 | { | ||
263 | "id": "settings.service.form.proxy.restartInfo", | ||
264 | "defaultMessage": "!!!Please restart Franz after changing proxy Settings.", | ||
265 | "file": "src/components/settings/services/EditServiceForm.js", | ||
266 | "start": { | ||
267 | "line": 102, | ||
268 | "column": 20 | ||
269 | }, | ||
270 | "end": { | ||
271 | "line": 105, | ||
272 | "column": 3 | ||
273 | } | ||
274 | }, | ||
275 | { | ||
276 | "id": "settings.service.form.proxy.info", | ||
277 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.", | ||
278 | "file": "src/components/settings/services/EditServiceForm.js", | ||
279 | "start": { | ||
280 | "line": 106, | ||
281 | "column": 13 | ||
282 | }, | ||
283 | "end": { | ||
284 | "line": 109, | ||
285 | "column": 3 | ||
286 | } | ||
287 | } | ||
288 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/services/ServiceError.json b/src/i18n/messages/src/components/settings/services/ServiceError.json new file mode 100644 index 000000000..648fc5b3e --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServiceError.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.service.error.headline", | ||
4 | "defaultMessage": "!!!Error", | ||
5 | "file": "src/components/settings/services/ServiceError.js", | ||
6 | "start": { | ||
7 | "line": 10, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 13, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.service.error.goBack", | ||
17 | "defaultMessage": "!!!Back to services", | ||
18 | "file": "src/components/settings/services/ServiceError.js", | ||
19 | "start": { | ||
20 | "line": 14, | ||
21 | "column": 10 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 17, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.service.form.availableServices", | ||
30 | "defaultMessage": "!!!Available services", | ||
31 | "file": "src/components/settings/services/ServiceError.js", | ||
32 | "start": { | ||
33 | "line": 18, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 21, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.service.error.message", | ||
43 | "defaultMessage": "!!!Could not load service recipe.", | ||
44 | "file": "src/components/settings/services/ServiceError.js", | ||
45 | "start": { | ||
46 | "line": 22, | ||
47 | "column": 16 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 25, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/services/ServiceItem.json b/src/i18n/messages/src/components/settings/services/ServiceItem.json new file mode 100644 index 000000000..ffea8b9e1 --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServiceItem.json | |||
@@ -0,0 +1,41 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.services.tooltip.isDisabled", | ||
4 | "defaultMessage": "!!!Service is disabled", | ||
5 | "file": "src/components/settings/services/ServiceItem.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.services.tooltip.notificationsDisabled", | ||
17 | "defaultMessage": "!!!Notifications are disabled", | ||
18 | "file": "src/components/settings/services/ServiceItem.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 32 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.services.tooltip.isMuted", | ||
30 | "defaultMessage": "!!!All sounds are muted", | ||
31 | "file": "src/components/settings/services/ServiceItem.js", | ||
32 | "start": { | ||
33 | "line": 19, | ||
34 | "column": 18 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 22, | ||
38 | "column": 3 | ||
39 | } | ||
40 | } | ||
41 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json new file mode 100644 index 000000000..3803c6512 --- /dev/null +++ b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json | |||
@@ -0,0 +1,119 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.services.headline", | ||
4 | "defaultMessage": "!!!Your services", | ||
5 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.searchService", | ||
17 | "defaultMessage": "!!!Search service", | ||
18 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.services.noServicesAdded", | ||
30 | "defaultMessage": "!!!You haven't added any services yet.", | ||
31 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 19 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.recipes.nothingFound", | ||
43 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | ||
44 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 18 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.services.discoverServices", | ||
56 | "defaultMessage": "!!!Discover services", | ||
57 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 20 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.services.servicesRequestFailed", | ||
69 | "defaultMessage": "!!!Could not load your services", | ||
70 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 25 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.account.tryReloadServices", | ||
82 | "defaultMessage": "!!!Try again", | ||
83 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
84 | "start": { | ||
85 | "line": 38, | ||
86 | "column": 21 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 41, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.services.updatedInfo", | ||
95 | "defaultMessage": "!!!Your changes have been saved", | ||
96 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
97 | "start": { | ||
98 | "line": 42, | ||
99 | "column": 15 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 45, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.services.deletedInfo", | ||
108 | "defaultMessage": "!!!Service has been deleted", | ||
109 | "file": "src/components/settings/services/ServicesDashboard.js", | ||
110 | "start": { | ||
111 | "line": 46, | ||
112 | "column": 15 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 49, | ||
116 | "column": 3 | ||
117 | } | ||
118 | } | ||
119 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json new file mode 100644 index 000000000..c64f477be --- /dev/null +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json | |||
@@ -0,0 +1,223 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.app.headline", | ||
4 | "defaultMessage": "!!!Settings", | ||
5 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
6 | "start": { | ||
7 | "line": 16, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 19, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.app.headlineGeneral", | ||
17 | "defaultMessage": "!!!General", | ||
18 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
19 | "start": { | ||
20 | "line": 20, | ||
21 | "column": 19 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 23, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.app.headlineLanguage", | ||
30 | "defaultMessage": "!!!Language", | ||
31 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
32 | "start": { | ||
33 | "line": 24, | ||
34 | "column": 20 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 27, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.app.headlineUpdates", | ||
43 | "defaultMessage": "!!!Updates", | ||
44 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
45 | "start": { | ||
46 | "line": 28, | ||
47 | "column": 19 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 31, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.app.headlineAppearance", | ||
56 | "defaultMessage": "!!!Appearance", | ||
57 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
58 | "start": { | ||
59 | "line": 32, | ||
60 | "column": 22 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 35, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.app.headlineAdvanced", | ||
69 | "defaultMessage": "!!!Advanced", | ||
70 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
71 | "start": { | ||
72 | "line": 36, | ||
73 | "column": 20 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 39, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.app.translationHelp", | ||
82 | "defaultMessage": "!!!Help us to translate Franz into your language.", | ||
83 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
84 | "start": { | ||
85 | "line": 40, | ||
86 | "column": 19 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 43, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.app.subheadlineCache", | ||
95 | "defaultMessage": "!!!Cache", | ||
96 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
97 | "start": { | ||
98 | "line": 44, | ||
99 | "column": 20 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 47, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.app.cacheInfo", | ||
108 | "defaultMessage": "!!!Franz cache is currently using {size} of disk space.", | ||
109 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
110 | "start": { | ||
111 | "line": 48, | ||
112 | "column": 13 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 51, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.app.buttonClearAllCache", | ||
121 | "defaultMessage": "!!!Clear cache", | ||
122 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
123 | "start": { | ||
124 | "line": 52, | ||
125 | "column": 23 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 55, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.app.buttonSearchForUpdate", | ||
134 | "defaultMessage": "!!!Check for updates", | ||
135 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
136 | "start": { | ||
137 | "line": 56, | ||
138 | "column": 25 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 59, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.app.buttonInstallUpdate", | ||
147 | "defaultMessage": "!!!Restart & install update", | ||
148 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
149 | "start": { | ||
150 | "line": 60, | ||
151 | "column": 23 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 63, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.app.updateStatusSearching", | ||
160 | "defaultMessage": "!!!Is searching for update", | ||
161 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
162 | "start": { | ||
163 | "line": 64, | ||
164 | "column": 25 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 67, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.app.updateStatusAvailable", | ||
173 | "defaultMessage": "!!!Update available, downloading...", | ||
174 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
175 | "start": { | ||
176 | "line": 68, | ||
177 | "column": 25 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 71, | ||
181 | "column": 3 | ||
182 | } | ||
183 | }, | ||
184 | { | ||
185 | "id": "settings.app.updateStatusUpToDate", | ||
186 | "defaultMessage": "!!!You are using the latest version of Franz", | ||
187 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
188 | "start": { | ||
189 | "line": 72, | ||
190 | "column": 24 | ||
191 | }, | ||
192 | "end": { | ||
193 | "line": 75, | ||
194 | "column": 3 | ||
195 | } | ||
196 | }, | ||
197 | { | ||
198 | "id": "settings.app.currentVersion", | ||
199 | "defaultMessage": "!!!Current version:", | ||
200 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
201 | "start": { | ||
202 | "line": 76, | ||
203 | "column": 18 | ||
204 | }, | ||
205 | "end": { | ||
206 | "line": 79, | ||
207 | "column": 3 | ||
208 | } | ||
209 | }, | ||
210 | { | ||
211 | "id": "settings.app.restartRequired", | ||
212 | "defaultMessage": "!!!Changes require restart", | ||
213 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
214 | "start": { | ||
215 | "line": 80, | ||
216 | "column": 29 | ||
217 | }, | ||
218 | "end": { | ||
219 | "line": 83, | ||
220 | "column": 3 | ||
221 | } | ||
222 | } | ||
223 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/settings/user/EditUserForm.json b/src/i18n/messages/src/components/settings/user/EditUserForm.json new file mode 100644 index 000000000..3a59f8681 --- /dev/null +++ b/src/i18n/messages/src/components/settings/user/EditUserForm.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.account.headline", | ||
4 | "defaultMessage": "!!!Account", | ||
5 | "file": "src/components/settings/user/EditUserForm.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.account.headlineProfile", | ||
17 | "defaultMessage": "!!!Update Profile", | ||
18 | "file": "src/components/settings/user/EditUserForm.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 19 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.account.headlineAccount", | ||
30 | "defaultMessage": "!!!Account Information", | ||
31 | "file": "src/components/settings/user/EditUserForm.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 19 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.account.headlinePassword", | ||
43 | "defaultMessage": "!!!Change Password", | ||
44 | "file": "src/components/settings/user/EditUserForm.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.account.successInfo", | ||
56 | "defaultMessage": "!!!Your changes have been saved", | ||
57 | "file": "src/components/settings/user/EditUserForm.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 15 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.account.buttonSave", | ||
69 | "defaultMessage": "!!!Update profile", | ||
70 | "file": "src/components/settings/user/EditUserForm.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 14 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json new file mode 100644 index 000000000..cc7470358 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json | |||
@@ -0,0 +1,171 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "subscription.submit.label", | ||
4 | "defaultMessage": "!!!Support the development of Franz", | ||
5 | "file": "src/components/subscription/SubscriptionForm.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "subscription.paymentSessionError", | ||
17 | "defaultMessage": "!!!Could not initialize payment form", | ||
18 | "file": "src/components/subscription/SubscriptionForm.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 23 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "subscription.type.free", | ||
30 | "defaultMessage": "!!!free", | ||
31 | "file": "src/components/subscription/SubscriptionForm.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 12 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "subscription.type.month", | ||
43 | "defaultMessage": "!!!month", | ||
44 | "file": "src/components/subscription/SubscriptionForm.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 15 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "subscription.type.year", | ||
56 | "defaultMessage": "!!!year", | ||
57 | "file": "src/components/subscription/SubscriptionForm.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 14 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "subscription.includedFeatures", | ||
69 | "defaultMessage": "!!!The Franz Premium Supporter Account includes", | ||
70 | "file": "src/components/subscription/SubscriptionForm.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 20 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "subscription.features.onpremise.mattermost", | ||
82 | "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", | ||
83 | "file": "src/components/subscription/SubscriptionForm.js", | ||
84 | "start": { | ||
85 | "line": 38, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 41, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "subscription.features.noInterruptions", | ||
95 | "defaultMessage": "!!!No app delays & nagging to upgrade license", | ||
96 | "file": "src/components/subscription/SubscriptionForm.js", | ||
97 | "start": { | ||
98 | "line": 42, | ||
99 | "column": 19 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 45, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "subscription.features.proxy", | ||
108 | "defaultMessage": "!!!Proxy support for services", | ||
109 | "file": "src/components/subscription/SubscriptionForm.js", | ||
110 | "start": { | ||
111 | "line": 46, | ||
112 | "column": 9 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 49, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "subscription.features.spellchecker", | ||
121 | "defaultMessage": "!!!Support for Spellchecker", | ||
122 | "file": "src/components/subscription/SubscriptionForm.js", | ||
123 | "start": { | ||
124 | "line": 50, | ||
125 | "column": 16 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 53, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "subscription.features.ads", | ||
134 | "defaultMessage": "!!!No ads, ever!", | ||
135 | "file": "src/components/subscription/SubscriptionForm.js", | ||
136 | "start": { | ||
137 | "line": 54, | ||
138 | "column": 7 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 57, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "subscription.features.comingSoon", | ||
147 | "defaultMessage": "!!!coming soon", | ||
148 | "file": "src/components/subscription/SubscriptionForm.js", | ||
149 | "start": { | ||
150 | "line": 58, | ||
151 | "column": 14 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 61, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "subscription.euTaxInfo", | ||
160 | "defaultMessage": "!!!EU residents: local sales tax may apply", | ||
161 | "file": "src/components/subscription/SubscriptionForm.js", | ||
162 | "start": { | ||
163 | "line": 62, | ||
164 | "column": 13 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 65, | ||
168 | "column": 3 | ||
169 | } | ||
170 | } | ||
171 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionPopup.json b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json new file mode 100644 index 000000000..c06da7531 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "subscriptionPopup.buttonCancel", | ||
4 | "defaultMessage": "!!!Cancel", | ||
5 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "subscriptionPopup.buttonDone", | ||
17 | "defaultMessage": "!!!Done", | ||
18 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 14 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | } | ||
28 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json new file mode 100644 index 000000000..582d546fa --- /dev/null +++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json | |||
@@ -0,0 +1,15 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "premiumFeature.button.upgradeAccount", | ||
4 | "defaultMessage": "!!!Upgrade account", | ||
5 | "file": "src/components/ui/PremiumFeatureContainer/index.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 10 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | } | ||
15 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/util/ErrorBoundary/index.json b/src/i18n/messages/src/components/util/ErrorBoundary/index.json new file mode 100644 index 000000000..43c323031 --- /dev/null +++ b/src/i18n/messages/src/components/util/ErrorBoundary/index.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "app.errorHandler.headline", | ||
4 | "defaultMessage": "!!!Something went wrong.", | ||
5 | "file": "src/components/util/ErrorBoundary/index.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "app.errorHandler.action", | ||
17 | "defaultMessage": "!!!Reload", | ||
18 | "file": "src/components/util/ErrorBoundary/index.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 10 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | } | ||
28 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/containers/settings/EditServiceScreen.json b/src/i18n/messages/src/containers/settings/EditServiceScreen.json new file mode 100644 index 000000000..42ca42125 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditServiceScreen.json | |||
@@ -0,0 +1,197 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.service.form.name", | ||
4 | "defaultMessage": "!!!Name", | ||
5 | "file": "src/containers/settings/EditServiceScreen.js", | ||
6 | "start": { | ||
7 | "line": 28, | ||
8 | "column": 8 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 31, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.service.form.enableService", | ||
17 | "defaultMessage": "!!!Enable service", | ||
18 | "file": "src/containers/settings/EditServiceScreen.js", | ||
19 | "start": { | ||
20 | "line": 32, | ||
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 35, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.service.form.enableNotification", | ||
30 | "defaultMessage": "!!!Enable Notifications", | ||
31 | "file": "src/containers/settings/EditServiceScreen.js", | ||
32 | "start": { | ||
33 | "line": 36, | ||
34 | "column": 22 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 39, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.service.form.enableBadge", | ||
43 | "defaultMessage": "!!!Show unread message badges", | ||
44 | "file": "src/containers/settings/EditServiceScreen.js", | ||
45 | "start": { | ||
46 | "line": 40, | ||
47 | "column": 15 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 43, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.service.form.enableAudio", | ||
56 | "defaultMessage": "!!!Enable audio", | ||
57 | "file": "src/containers/settings/EditServiceScreen.js", | ||
58 | "start": { | ||
59 | "line": 44, | ||
60 | "column": 15 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 47, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.service.form.team", | ||
69 | "defaultMessage": "!!!Team", | ||
70 | "file": "src/containers/settings/EditServiceScreen.js", | ||
71 | "start": { | ||
72 | "line": 48, | ||
73 | "column": 8 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 51, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.service.form.customUrl", | ||
82 | "defaultMessage": "!!!Custom server", | ||
83 | "file": "src/containers/settings/EditServiceScreen.js", | ||
84 | "start": { | ||
85 | "line": 52, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 55, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.service.form.indirectMessages", | ||
95 | "defaultMessage": "!!!Show message badge for all new messages", | ||
96 | "file": "src/containers/settings/EditServiceScreen.js", | ||
97 | "start": { | ||
98 | "line": 56, | ||
99 | "column": 20 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 59, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.service.form.icon", | ||
108 | "defaultMessage": "!!!Custom icon", | ||
109 | "file": "src/containers/settings/EditServiceScreen.js", | ||
110 | "start": { | ||
111 | "line": 60, | ||
112 | "column": 8 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 63, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.service.form.enableDarkMode", | ||
121 | "defaultMessage": "!!!Enable Dark Mode", | ||
122 | "file": "src/containers/settings/EditServiceScreen.js", | ||
123 | "start": { | ||
124 | "line": 64, | ||
125 | "column": 18 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 67, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.service.form.proxy.isEnabled", | ||
134 | "defaultMessage": "!!!Use Proxy", | ||
135 | "file": "src/containers/settings/EditServiceScreen.js", | ||
136 | "start": { | ||
137 | "line": 68, | ||
138 | "column": 15 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 71, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.service.form.proxy.host", | ||
147 | "defaultMessage": "!!!Proxy Host/IP", | ||
148 | "file": "src/containers/settings/EditServiceScreen.js", | ||
149 | "start": { | ||
150 | "line": 72, | ||
151 | "column": 13 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 75, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.service.form.proxy.port", | ||
160 | "defaultMessage": "!!!Port", | ||
161 | "file": "src/containers/settings/EditServiceScreen.js", | ||
162 | "start": { | ||
163 | "line": 76, | ||
164 | "column": 13 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 79, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.service.form.proxy.user", | ||
173 | "defaultMessage": "!!!User", | ||
174 | "file": "src/containers/settings/EditServiceScreen.js", | ||
175 | "start": { | ||
176 | "line": 80, | ||
177 | "column": 13 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 83, | ||
181 | "column": 3 | ||
182 | } | ||
183 | }, | ||
184 | { | ||
185 | "id": "settings.service.form.proxy.password", | ||
186 | "defaultMessage": "!!!Password", | ||
187 | "file": "src/containers/settings/EditServiceScreen.js", | ||
188 | "start": { | ||
189 | "line": 84, | ||
190 | "column": 17 | ||
191 | }, | ||
192 | "end": { | ||
193 | "line": 87, | ||
194 | "column": 3 | ||
195 | } | ||
196 | } | ||
197 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json new file mode 100644 index 000000000..d3b413540 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json | |||
@@ -0,0 +1,158 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.app.form.autoLaunchOnStart", | ||
4 | "defaultMessage": "!!!Launch Franz on start", | ||
5 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
6 | "start": { | ||
7 | "line": 22, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 25, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.app.form.autoLaunchInBackground", | ||
17 | "defaultMessage": "!!!Open in background", | ||
18 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
19 | "start": { | ||
20 | "line": 26, | ||
21 | "column": 26 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 29, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.app.form.runInBackground", | ||
30 | "defaultMessage": "!!!Keep Franz in background when closing the window", | ||
31 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
32 | "start": { | ||
33 | "line": 30, | ||
34 | "column": 19 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 33, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.app.form.enableSystemTray", | ||
43 | "defaultMessage": "!!!Show Franz in system tray", | ||
44 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
45 | "start": { | ||
46 | "line": 34, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 37, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.app.form.minimizeToSystemTray", | ||
56 | "defaultMessage": "!!!Minimize Franz to system tray", | ||
57 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
58 | "start": { | ||
59 | "line": 38, | ||
60 | "column": 24 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 41, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.app.form.language", | ||
69 | "defaultMessage": "!!!Language", | ||
70 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
71 | "start": { | ||
72 | "line": 42, | ||
73 | "column": 12 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 45, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.app.form.darkMode", | ||
82 | "defaultMessage": "!!!Dark Mode", | ||
83 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
84 | "start": { | ||
85 | "line": 46, | ||
86 | "column": 12 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 49, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.app.form.showDisabledServices", | ||
95 | "defaultMessage": "!!!Display disabled services tabs", | ||
96 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
97 | "start": { | ||
98 | "line": 50, | ||
99 | "column": 24 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 53, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | ||
108 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | ||
109 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
110 | "start": { | ||
111 | "line": 54, | ||
112 | "column": 29 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 57, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.app.form.enableSpellchecking", | ||
121 | "defaultMessage": "!!!Enable spell checking", | ||
122 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
123 | "start": { | ||
124 | "line": 58, | ||
125 | "column": 23 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 61, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.app.form.enableGPUAcceleration", | ||
134 | "defaultMessage": "!!!Enable GPU Acceleration", | ||
135 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
136 | "start": { | ||
137 | "line": 62, | ||
138 | "column": 25 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 65, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.app.form.beta", | ||
147 | "defaultMessage": "!!!Include beta versions", | ||
148 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
149 | "start": { | ||
150 | "line": 66, | ||
151 | "column": 8 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 69, | ||
155 | "column": 3 | ||
156 | } | ||
157 | } | ||
158 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/containers/settings/EditUserScreen.json b/src/i18n/messages/src/containers/settings/EditUserScreen.json new file mode 100644 index 000000000..70ff29945 --- /dev/null +++ b/src/i18n/messages/src/containers/settings/EditUserScreen.json | |||
@@ -0,0 +1,119 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "settings.user.form.firstname", | ||
4 | "defaultMessage": "!!!Firstname", | ||
5 | "file": "src/containers/settings/EditUserScreen.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 13 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.user.form.lastname", | ||
17 | "defaultMessage": "!!!Lastname", | ||
18 | "file": "src/containers/settings/EditUserScreen.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 12 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.user.form.email", | ||
30 | "defaultMessage": "!!!Email", | ||
31 | "file": "src/containers/settings/EditUserScreen.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 9 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.user.form.accountType.label", | ||
43 | "defaultMessage": "!!!Account type", | ||
44 | "file": "src/containers/settings/EditUserScreen.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "settings.user.form.accountType.individual", | ||
56 | "defaultMessage": "!!!Individual", | ||
57 | "file": "src/containers/settings/EditUserScreen.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 25 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.user.form.accountType.non-profit", | ||
69 | "defaultMessage": "!!!Non-Profit", | ||
70 | "file": "src/containers/settings/EditUserScreen.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 24 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "settings.user.form.accountType.company", | ||
82 | "defaultMessage": "!!!Company", | ||
83 | "file": "src/containers/settings/EditUserScreen.js", | ||
84 | "start": { | ||
85 | "line": 38, | ||
86 | "column": 22 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 41, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "settings.user.form.currentPassword", | ||
95 | "defaultMessage": "!!!Current password", | ||
96 | "file": "src/containers/settings/EditUserScreen.js", | ||
97 | "start": { | ||
98 | "line": 42, | ||
99 | "column": 19 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 45, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.user.form.newPassword", | ||
108 | "defaultMessage": "!!!New password", | ||
109 | "file": "src/containers/settings/EditUserScreen.js", | ||
110 | "start": { | ||
111 | "line": 46, | ||
112 | "column": 15 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 49, | ||
116 | "column": 3 | ||
117 | } | ||
118 | } | ||
119 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json new file mode 100644 index 000000000..bacd9444a --- /dev/null +++ b/src/i18n/messages/src/features/delayApp/Component.json | |||
@@ -0,0 +1,41 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.delayApp.headline", | ||
4 | "defaultMessage": "!!!Please purchase license to skip waiting", | ||
5 | "file": "src/features/delayApp/Component.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "feature.delayApp.action", | ||
17 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
18 | "file": "src/features/delayApp/Component.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 10 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "feature.delayApp.text", | ||
30 | "defaultMessage": "!!!Franz will continue in {seconds} seconds.", | ||
31 | "file": "src/features/delayApp/Component.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 8 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | } | ||
41 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json new file mode 100644 index 000000000..0fec9db64 --- /dev/null +++ b/src/i18n/messages/src/features/shareFranz/Component.json | |||
@@ -0,0 +1,93 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.shareFranz.headline", | ||
4 | "defaultMessage": "!!!Franz is better together!", | ||
5 | "file": "src/features/shareFranz/Component.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "feature.shareFranz.text", | ||
17 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | ||
18 | "file": "src/features/shareFranz/Component.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "feature.shareFranz.action.email", | ||
30 | "defaultMessage": "!!!Share as email", | ||
31 | "file": "src/features/shareFranz/Component.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 16 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "feature.shareFranz.action.facebook", | ||
43 | "defaultMessage": "!!!Share on Facebook", | ||
44 | "file": "src/features/shareFranz/Component.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 19 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "feature.shareFranz.action.twitter", | ||
56 | "defaultMessage": "!!!Share on Twitter", | ||
57 | "file": "src/features/shareFranz/Component.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 18 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "feature.shareFranz.shareText.email", | ||
69 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | ||
70 | "file": "src/features/shareFranz/Component.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 18 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "feature.shareFranz.shareText.twitter", | ||
82 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", | ||
83 | "file": "src/features/shareFranz/Component.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 20 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | } | ||
93 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/helpers/validation-helpers.json b/src/i18n/messages/src/helpers/validation-helpers.json new file mode 100644 index 000000000..86bfe1500 --- /dev/null +++ b/src/i18n/messages/src/helpers/validation-helpers.json | |||
@@ -0,0 +1,67 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "validation.required", | ||
4 | "defaultMessage": "!!!Field is required", | ||
5 | "file": "src/helpers/validation-helpers.js", | ||
6 | "start": { | ||
7 | "line": 4, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 7, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "validation.email", | ||
17 | "defaultMessage": "!!!Email not valid", | ||
18 | "file": "src/helpers/validation-helpers.js", | ||
19 | "start": { | ||
20 | "line": 8, | ||
21 | "column": 9 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 11, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "validation.url", | ||
30 | "defaultMessage": "!!!Not a valid URL", | ||
31 | "file": "src/helpers/validation-helpers.js", | ||
32 | "start": { | ||
33 | "line": 12, | ||
34 | "column": 7 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 15, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "validation.minLength", | ||
43 | "defaultMessage": "!!!Too few characters", | ||
44 | "file": "src/helpers/validation-helpers.js", | ||
45 | "start": { | ||
46 | "line": 16, | ||
47 | "column": 13 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 19, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "validation.oneRequired", | ||
56 | "defaultMessage": "!!!At least one is required", | ||
57 | "file": "src/helpers/validation-helpers.js", | ||
58 | "start": { | ||
59 | "line": 20, | ||
60 | "column": 15 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 23, | ||
64 | "column": 3 | ||
65 | } | ||
66 | } | ||
67 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json new file mode 100644 index 000000000..28001614f --- /dev/null +++ b/src/i18n/messages/src/i18n/globalMessages.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "global.api.unhealthy", | ||
4 | "defaultMessage": "!!!Can't connect to Franz Online Services", | ||
5 | "file": "src/i18n/globalMessages.js", | ||
6 | "start": { | ||
7 | "line": 4, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 7, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "global.notConnectedToTheInternet", | ||
17 | "defaultMessage": "!!!You are not connected to the internet.", | ||
18 | "file": "src/i18n/globalMessages.js", | ||
19 | "start": { | ||
20 | "line": 8, | ||
21 | "column": 29 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 11, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "global.spellchecking.language", | ||
30 | "defaultMessage": "!!!Spell checking language", | ||
31 | "file": "src/i18n/globalMessages.js", | ||
32 | "start": { | ||
33 | "line": 12, | ||
34 | "column": 24 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 15, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "global.spellchecker.useDefault", | ||
43 | "defaultMessage": "!!!Use System Default ({default})", | ||
44 | "file": "src/i18n/globalMessages.js", | ||
45 | "start": { | ||
46 | "line": 16, | ||
47 | "column": 29 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 19, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "global.spellchecking.autodetect", | ||
56 | "defaultMessage": "!!!Detect language automatically", | ||
57 | "file": "src/i18n/globalMessages.js", | ||
58 | "start": { | ||
59 | "line": 20, | ||
60 | "column": 34 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 23, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "global.spellchecking.autodetect.short", | ||
69 | "defaultMessage": "!!!Automatic", | ||
70 | "file": "src/i18n/globalMessages.js", | ||
71 | "start": { | ||
72 | "line": 24, | ||
73 | "column": 39 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 27, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json new file mode 100644 index 000000000..9314f5cce --- /dev/null +++ b/src/i18n/messages/src/lib/Menu.json | |||
@@ -0,0 +1,613 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "menu.edit", | ||
4 | "defaultMessage": "!!!Edit", | ||
5 | "file": "src/lib/Menu.js", | ||
6 | "start": { | ||
7 | "line": 10, | ||
8 | "column": 8 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 13, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "menu.edit.undo", | ||
17 | "defaultMessage": "!!!Undo", | ||
18 | "file": "src/lib/Menu.js", | ||
19 | "start": { | ||
20 | "line": 14, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 17, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "menu.edit.redo", | ||
30 | "defaultMessage": "!!!Redo", | ||
31 | "file": "src/lib/Menu.js", | ||
32 | "start": { | ||
33 | "line": 18, | ||
34 | "column": 8 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 21, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "menu.edit.cut", | ||
43 | "defaultMessage": "!!!Cut", | ||
44 | "file": "src/lib/Menu.js", | ||
45 | "start": { | ||
46 | "line": 22, | ||
47 | "column": 7 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 25, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "menu.edit.copy", | ||
56 | "defaultMessage": "!!!Copy", | ||
57 | "file": "src/lib/Menu.js", | ||
58 | "start": { | ||
59 | "line": 26, | ||
60 | "column": 8 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 29, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "menu.edit.paste", | ||
69 | "defaultMessage": "!!!Paste", | ||
70 | "file": "src/lib/Menu.js", | ||
71 | "start": { | ||
72 | "line": 30, | ||
73 | "column": 9 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 33, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "menu.edit.pasteAndMatchStyle", | ||
82 | "defaultMessage": "!!!Paste And Match Style", | ||
83 | "file": "src/lib/Menu.js", | ||
84 | "start": { | ||
85 | "line": 34, | ||
86 | "column": 22 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 37, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "menu.edit.delete", | ||
95 | "defaultMessage": "!!!Delete", | ||
96 | "file": "src/lib/Menu.js", | ||
97 | "start": { | ||
98 | "line": 38, | ||
99 | "column": 10 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 41, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "menu.edit.selectAll", | ||
108 | "defaultMessage": "!!!Select All", | ||
109 | "file": "src/lib/Menu.js", | ||
110 | "start": { | ||
111 | "line": 42, | ||
112 | "column": 13 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 45, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "menu.edit.speech", | ||
121 | "defaultMessage": "!!!Speech", | ||
122 | "file": "src/lib/Menu.js", | ||
123 | "start": { | ||
124 | "line": 46, | ||
125 | "column": 10 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 49, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "menu.edit.startSpeaking", | ||
134 | "defaultMessage": "!!!Start Speaking", | ||
135 | "file": "src/lib/Menu.js", | ||
136 | "start": { | ||
137 | "line": 50, | ||
138 | "column": 17 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 53, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "menu.edit.stopSpeaking", | ||
147 | "defaultMessage": "!!!Stop Speaking", | ||
148 | "file": "src/lib/Menu.js", | ||
149 | "start": { | ||
150 | "line": 54, | ||
151 | "column": 16 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 57, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "menu.edit.startDictation", | ||
160 | "defaultMessage": "!!!Start Dictation", | ||
161 | "file": "src/lib/Menu.js", | ||
162 | "start": { | ||
163 | "line": 58, | ||
164 | "column": 18 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 61, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "menu.edit.emojiSymbols", | ||
173 | "defaultMessage": "!!!Emoji & Symbols", | ||
174 | "file": "src/lib/Menu.js", | ||
175 | "start": { | ||
176 | "line": 62, | ||
177 | "column": 16 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 65, | ||
181 | "column": 3 | ||
182 | } | ||
183 | }, | ||
184 | { | ||
185 | "id": "menu.view.resetZoom", | ||
186 | "defaultMessage": "!!!Actual Size", | ||
187 | "file": "src/lib/Menu.js", | ||
188 | "start": { | ||
189 | "line": 66, | ||
190 | "column": 13 | ||
191 | }, | ||
192 | "end": { | ||
193 | "line": 69, | ||
194 | "column": 3 | ||
195 | } | ||
196 | }, | ||
197 | { | ||
198 | "id": "menu.view.zoomIn", | ||
199 | "defaultMessage": "!!!Zoom In", | ||
200 | "file": "src/lib/Menu.js", | ||
201 | "start": { | ||
202 | "line": 70, | ||
203 | "column": 10 | ||
204 | }, | ||
205 | "end": { | ||
206 | "line": 73, | ||
207 | "column": 3 | ||
208 | } | ||
209 | }, | ||
210 | { | ||
211 | "id": "menu.view.zoomOut", | ||
212 | "defaultMessage": "!!!Zoom Out", | ||
213 | "file": "src/lib/Menu.js", | ||
214 | "start": { | ||
215 | "line": 74, | ||
216 | "column": 11 | ||
217 | }, | ||
218 | "end": { | ||
219 | "line": 77, | ||
220 | "column": 3 | ||
221 | } | ||
222 | }, | ||
223 | { | ||
224 | "id": "menu.view.enterFullScreen", | ||
225 | "defaultMessage": "!!!Enter Full Screen", | ||
226 | "file": "src/lib/Menu.js", | ||
227 | "start": { | ||
228 | "line": 78, | ||
229 | "column": 19 | ||
230 | }, | ||
231 | "end": { | ||
232 | "line": 81, | ||
233 | "column": 3 | ||
234 | } | ||
235 | }, | ||
236 | { | ||
237 | "id": "menu.view.exitFullScreen", | ||
238 | "defaultMessage": "!!!Exit Full Screen", | ||
239 | "file": "src/lib/Menu.js", | ||
240 | "start": { | ||
241 | "line": 82, | ||
242 | "column": 18 | ||
243 | }, | ||
244 | "end": { | ||
245 | "line": 85, | ||
246 | "column": 3 | ||
247 | } | ||
248 | }, | ||
249 | { | ||
250 | "id": "menu.view.toggleFullScreen", | ||
251 | "defaultMessage": "!!!Toggle Full Screen", | ||
252 | "file": "src/lib/Menu.js", | ||
253 | "start": { | ||
254 | "line": 86, | ||
255 | "column": 20 | ||
256 | }, | ||
257 | "end": { | ||
258 | "line": 89, | ||
259 | "column": 3 | ||
260 | } | ||
261 | }, | ||
262 | { | ||
263 | "id": "menu.view.toggleDevTools", | ||
264 | "defaultMessage": "!!!Toggle Developer Tools", | ||
265 | "file": "src/lib/Menu.js", | ||
266 | "start": { | ||
267 | "line": 90, | ||
268 | "column": 18 | ||
269 | }, | ||
270 | "end": { | ||
271 | "line": 93, | ||
272 | "column": 3 | ||
273 | } | ||
274 | }, | ||
275 | { | ||
276 | "id": "menu.view.toggleServiceDevTools", | ||
277 | "defaultMessage": "!!!Toggle Service Developer Tools", | ||
278 | "file": "src/lib/Menu.js", | ||
279 | "start": { | ||
280 | "line": 94, | ||
281 | "column": 25 | ||
282 | }, | ||
283 | "end": { | ||
284 | "line": 97, | ||
285 | "column": 3 | ||
286 | } | ||
287 | }, | ||
288 | { | ||
289 | "id": "menu.view.reloadService", | ||
290 | "defaultMessage": "!!!Reload Service", | ||
291 | "file": "src/lib/Menu.js", | ||
292 | "start": { | ||
293 | "line": 98, | ||
294 | "column": 17 | ||
295 | }, | ||
296 | "end": { | ||
297 | "line": 101, | ||
298 | "column": 3 | ||
299 | } | ||
300 | }, | ||
301 | { | ||
302 | "id": "menu.view.reloadFranz", | ||
303 | "defaultMessage": "!!!Reload Franz", | ||
304 | "file": "src/lib/Menu.js", | ||
305 | "start": { | ||
306 | "line": 102, | ||
307 | "column": 15 | ||
308 | }, | ||
309 | "end": { | ||
310 | "line": 105, | ||
311 | "column": 3 | ||
312 | } | ||
313 | }, | ||
314 | { | ||
315 | "id": "menu.window.minimize", | ||
316 | "defaultMessage": "!!!Minimize", | ||
317 | "file": "src/lib/Menu.js", | ||
318 | "start": { | ||
319 | "line": 106, | ||
320 | "column": 12 | ||
321 | }, | ||
322 | "end": { | ||
323 | "line": 109, | ||
324 | "column": 3 | ||
325 | } | ||
326 | }, | ||
327 | { | ||
328 | "id": "menu.window.close", | ||
329 | "defaultMessage": "!!!Close", | ||
330 | "file": "src/lib/Menu.js", | ||
331 | "start": { | ||
332 | "line": 110, | ||
333 | "column": 9 | ||
334 | }, | ||
335 | "end": { | ||
336 | "line": 113, | ||
337 | "column": 3 | ||
338 | } | ||
339 | }, | ||
340 | { | ||
341 | "id": "menu.help.learnMore", | ||
342 | "defaultMessage": "!!!Learn More", | ||
343 | "file": "src/lib/Menu.js", | ||
344 | "start": { | ||
345 | "line": 114, | ||
346 | "column": 13 | ||
347 | }, | ||
348 | "end": { | ||
349 | "line": 117, | ||
350 | "column": 3 | ||
351 | } | ||
352 | }, | ||
353 | { | ||
354 | "id": "menu.help.changelog", | ||
355 | "defaultMessage": "!!!Changelog", | ||
356 | "file": "src/lib/Menu.js", | ||
357 | "start": { | ||
358 | "line": 118, | ||
359 | "column": 13 | ||
360 | }, | ||
361 | "end": { | ||
362 | "line": 121, | ||
363 | "column": 3 | ||
364 | } | ||
365 | }, | ||
366 | { | ||
367 | "id": "menu.help.support", | ||
368 | "defaultMessage": "!!!Support", | ||
369 | "file": "src/lib/Menu.js", | ||
370 | "start": { | ||
371 | "line": 122, | ||
372 | "column": 11 | ||
373 | }, | ||
374 | "end": { | ||
375 | "line": 125, | ||
376 | "column": 3 | ||
377 | } | ||
378 | }, | ||
379 | { | ||
380 | "id": "menu.help.tos", | ||
381 | "defaultMessage": "!!!Terms of Service", | ||
382 | "file": "src/lib/Menu.js", | ||
383 | "start": { | ||
384 | "line": 126, | ||
385 | "column": 7 | ||
386 | }, | ||
387 | "end": { | ||
388 | "line": 129, | ||
389 | "column": 3 | ||
390 | } | ||
391 | }, | ||
392 | { | ||
393 | "id": "menu.help.privacy", | ||
394 | "defaultMessage": "!!!Privacy Statement", | ||
395 | "file": "src/lib/Menu.js", | ||
396 | "start": { | ||
397 | "line": 130, | ||
398 | "column": 11 | ||
399 | }, | ||
400 | "end": { | ||
401 | "line": 133, | ||
402 | "column": 3 | ||
403 | } | ||
404 | }, | ||
405 | { | ||
406 | "id": "menu.file", | ||
407 | "defaultMessage": "!!!File", | ||
408 | "file": "src/lib/Menu.js", | ||
409 | "start": { | ||
410 | "line": 134, | ||
411 | "column": 8 | ||
412 | }, | ||
413 | "end": { | ||
414 | "line": 137, | ||
415 | "column": 3 | ||
416 | } | ||
417 | }, | ||
418 | { | ||
419 | "id": "menu.view", | ||
420 | "defaultMessage": "!!!View", | ||
421 | "file": "src/lib/Menu.js", | ||
422 | "start": { | ||
423 | "line": 138, | ||
424 | "column": 8 | ||
425 | }, | ||
426 | "end": { | ||
427 | "line": 141, | ||
428 | "column": 3 | ||
429 | } | ||
430 | }, | ||
431 | { | ||
432 | "id": "menu.services", | ||
433 | "defaultMessage": "!!!Services", | ||
434 | "file": "src/lib/Menu.js", | ||
435 | "start": { | ||
436 | "line": 142, | ||
437 | "column": 12 | ||
438 | }, | ||
439 | "end": { | ||
440 | "line": 145, | ||
441 | "column": 3 | ||
442 | } | ||
443 | }, | ||
444 | { | ||
445 | "id": "menu.window", | ||
446 | "defaultMessage": "!!!Window", | ||
447 | "file": "src/lib/Menu.js", | ||
448 | "start": { | ||
449 | "line": 146, | ||
450 | "column": 10 | ||
451 | }, | ||
452 | "end": { | ||
453 | "line": 149, | ||
454 | "column": 3 | ||
455 | } | ||
456 | }, | ||
457 | { | ||
458 | "id": "menu.help", | ||
459 | "defaultMessage": "!!!Help", | ||
460 | "file": "src/lib/Menu.js", | ||
461 | "start": { | ||
462 | "line": 150, | ||
463 | "column": 8 | ||
464 | }, | ||
465 | "end": { | ||
466 | "line": 153, | ||
467 | "column": 3 | ||
468 | } | ||
469 | }, | ||
470 | { | ||
471 | "id": "menu.app.about", | ||
472 | "defaultMessage": "!!!About Franz", | ||
473 | "file": "src/lib/Menu.js", | ||
474 | "start": { | ||
475 | "line": 154, | ||
476 | "column": 9 | ||
477 | }, | ||
478 | "end": { | ||
479 | "line": 157, | ||
480 | "column": 3 | ||
481 | } | ||
482 | }, | ||
483 | { | ||
484 | "id": "menu.app.settings", | ||
485 | "defaultMessage": "!!!Settings", | ||
486 | "file": "src/lib/Menu.js", | ||
487 | "start": { | ||
488 | "line": 158, | ||
489 | "column": 12 | ||
490 | }, | ||
491 | "end": { | ||
492 | "line": 161, | ||
493 | "column": 3 | ||
494 | } | ||
495 | }, | ||
496 | { | ||
497 | "id": "menu.app.hide", | ||
498 | "defaultMessage": "!!!Hide", | ||
499 | "file": "src/lib/Menu.js", | ||
500 | "start": { | ||
501 | "line": 162, | ||
502 | "column": 8 | ||
503 | }, | ||
504 | "end": { | ||
505 | "line": 165, | ||
506 | "column": 3 | ||
507 | } | ||
508 | }, | ||
509 | { | ||
510 | "id": "menu.app.hideOthers", | ||
511 | "defaultMessage": "!!!Hide Others", | ||
512 | "file": "src/lib/Menu.js", | ||
513 | "start": { | ||
514 | "line": 166, | ||
515 | "column": 14 | ||
516 | }, | ||
517 | "end": { | ||
518 | "line": 169, | ||
519 | "column": 3 | ||
520 | } | ||
521 | }, | ||
522 | { | ||
523 | "id": "menu.app.unhide", | ||
524 | "defaultMessage": "!!!Unhide", | ||
525 | "file": "src/lib/Menu.js", | ||
526 | "start": { | ||
527 | "line": 170, | ||
528 | "column": 10 | ||
529 | }, | ||
530 | "end": { | ||
531 | "line": 173, | ||
532 | "column": 3 | ||
533 | } | ||
534 | }, | ||
535 | { | ||
536 | "id": "menu.app.quit", | ||
537 | "defaultMessage": "!!!Quit", | ||
538 | "file": "src/lib/Menu.js", | ||
539 | "start": { | ||
540 | "line": 174, | ||
541 | "column": 8 | ||
542 | }, | ||
543 | "end": { | ||
544 | "line": 177, | ||
545 | "column": 3 | ||
546 | } | ||
547 | }, | ||
548 | { | ||
549 | "id": "menu.services.addNewService", | ||
550 | "defaultMessage": "!!!Add New Service...", | ||
551 | "file": "src/lib/Menu.js", | ||
552 | "start": { | ||
553 | "line": 178, | ||
554 | "column": 17 | ||
555 | }, | ||
556 | "end": { | ||
557 | "line": 181, | ||
558 | "column": 3 | ||
559 | } | ||
560 | }, | ||
561 | { | ||
562 | "id": "menu.services.setNextServiceActive", | ||
563 | "defaultMessage": "!!!Activate next service...", | ||
564 | "file": "src/lib/Menu.js", | ||
565 | "start": { | ||
566 | "line": 182, | ||
567 | "column": 23 | ||
568 | }, | ||
569 | "end": { | ||
570 | "line": 185, | ||
571 | "column": 3 | ||
572 | } | ||
573 | }, | ||
574 | { | ||
575 | "id": "menu.services.activatePreviousService", | ||
576 | "defaultMessage": "!!!Activate previous service...", | ||
577 | "file": "src/lib/Menu.js", | ||
578 | "start": { | ||
579 | "line": 186, | ||
580 | "column": 27 | ||
581 | }, | ||
582 | "end": { | ||
583 | "line": 189, | ||
584 | "column": 3 | ||
585 | } | ||
586 | }, | ||
587 | { | ||
588 | "id": "sidebar.muteApp", | ||
589 | "defaultMessage": "!!!Disable notifications & audio", | ||
590 | "file": "src/lib/Menu.js", | ||
591 | "start": { | ||
592 | "line": 190, | ||
593 | "column": 11 | ||
594 | }, | ||
595 | "end": { | ||
596 | "line": 193, | ||
597 | "column": 3 | ||
598 | } | ||
599 | }, | ||
600 | { | ||
601 | "id": "sidebar.unmuteApp", | ||
602 | "defaultMessage": "!!!Enable notifications & audio", | ||
603 | "file": "src/lib/Menu.js", | ||
604 | "start": { | ||
605 | "line": 194, | ||
606 | "column": 13 | ||
607 | }, | ||
608 | "end": { | ||
609 | "line": 197, | ||
610 | "column": 3 | ||
611 | } | ||
612 | } | ||
613 | ] \ No newline at end of file | ||
diff --git a/src/index.js b/src/index.js index 6a0ee600f..05c793d98 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -34,6 +34,7 @@ import { | |||
34 | DEFAULT_WINDOW_OPTIONS, | 34 | DEFAULT_WINDOW_OPTIONS, |
35 | } from './config'; | 35 | } from './config'; |
36 | import { asarPath } from './helpers/asar-helpers'; | 36 | import { asarPath } from './helpers/asar-helpers'; |
37 | import { isValidExternalURL } from './helpers/url-helpers'; | ||
37 | /* eslint-enable import/first */ | 38 | /* eslint-enable import/first */ |
38 | 39 | ||
39 | const debug = require('debug')('Franz:App'); | 40 | const debug = require('debug')('Franz:App'); |
@@ -71,7 +72,10 @@ if (!gotTheLock) { | |||
71 | app.on('second-instance', (event, argv) => { | 72 | app.on('second-instance', (event, argv) => { |
72 | // Someone tried to run a second instance, we should focus our window. | 73 | // Someone tried to run a second instance, we should focus our window. |
73 | if (mainWindow) { | 74 | if (mainWindow) { |
74 | if (mainWindow.isMinimized()) mainWindow.restore(); | 75 | mainWindow.show(); |
76 | if (mainWindow.isMinimized()) { | ||
77 | mainWindow.restore(); | ||
78 | } | ||
75 | mainWindow.focus(); | 79 | mainWindow.focus(); |
76 | 80 | ||
77 | if (isWindows) { | 81 | if (isWindows) { |
@@ -101,6 +105,35 @@ if (!gotTheLock) { | |||
101 | } | 105 | } |
102 | }); | 106 | }); |
103 | } | 107 | } |
108 | // const isSecondInstance = app.makeSingleInstance((argv) => { | ||
109 | // if (mainWindow) { | ||
110 | // if (mainWindow.isMinimized()) mainWindow.restore(); | ||
111 | // mainWindow.focus(); | ||
112 | |||
113 | // if (process.platform === 'win32') { | ||
114 | // // Keep only command line / deep linked arguments | ||
115 | // const url = argv.slice(1); | ||
116 | |||
117 | // if (url) { | ||
118 | // handleDeepLink(mainWindow, url.toString()); | ||
119 | // } | ||
120 | // } | ||
121 | // } | ||
122 | |||
123 | // if (argv.includes('--reset-window')) { | ||
124 | // // Needs to be delayed to not interfere with mainWindow.restore(); | ||
125 | // setTimeout(() => { | ||
126 | // debug('Resetting windows via Task'); | ||
127 | // mainWindow.setPosition(DEFAULT_WINDOW_OPTIONS.x + 100, DEFAULT_WINDOW_OPTIONS.y + 100); | ||
128 | // mainWindow.setSize(DEFAULT_WINDOW_OPTIONS.width, DEFAULT_WINDOW_OPTIONS.height); | ||
129 | // }, 1); | ||
130 | // } | ||
131 | // }); | ||
132 | |||
133 | // if (isSecondInstance) { | ||
134 | // console.log('An instance of Franz is already running. Exiting...'); | ||
135 | // app.exit(); | ||
136 | // } | ||
104 | 137 | ||
105 | // Fix Unity indicator issue | 138 | // Fix Unity indicator issue |
106 | // https://github.com/electron/electron/issues/9046 | 139 | // https://github.com/electron/electron/issues/9046 |
@@ -194,20 +227,24 @@ const createWindow = () => { | |||
194 | 227 | ||
195 | // Emitted when the window is closed. | 228 | // Emitted when the window is closed. |
196 | mainWindow.on('close', (e) => { | 229 | mainWindow.on('close', (e) => { |
230 | debug('Window: close window'); | ||
197 | // Dereference the window object, usually you would store windows | 231 | // Dereference the window object, usually you would store windows |
198 | // in an array if your app supports multi windows, this is the time | 232 | // in an array if your app supports multi windows, this is the time |
199 | // when you should delete the corresponding element. | 233 | // when you should delete the corresponding element. |
200 | if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) { | 234 | if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) { |
201 | e.preventDefault(); | 235 | e.preventDefault(); |
202 | if (isWindows) { | 236 | if (isWindows) { |
237 | debug('Window: minimize'); | ||
203 | mainWindow.minimize(); | 238 | mainWindow.minimize(); |
239 | |||
240 | if (settings.get('minimizeToSystemTray')) { | ||
241 | debug('Skip taskbar: true'); | ||
242 | mainWindow.setSkipTaskbar(true); | ||
243 | } | ||
204 | } else { | 244 | } else { |
245 | debug('Window: hide'); | ||
205 | mainWindow.hide(); | 246 | mainWindow.hide(); |
206 | } | 247 | } |
207 | |||
208 | if (isWindows) { | ||
209 | mainWindow.setSkipTaskbar(true); | ||
210 | } | ||
211 | } else { | 248 | } else { |
212 | app.quit(); | 249 | app.quit(); |
213 | } | 250 | } |
@@ -219,32 +256,39 @@ const createWindow = () => { | |||
219 | app.wasMaximized = app.isMaximized; | 256 | app.wasMaximized = app.isMaximized; |
220 | 257 | ||
221 | if (settings.get('minimizeToSystemTray')) { | 258 | if (settings.get('minimizeToSystemTray')) { |
259 | debug('Skip taskbar: true'); | ||
222 | mainWindow.setSkipTaskbar(true); | 260 | mainWindow.setSkipTaskbar(true); |
223 | trayIcon.show(); | 261 | trayIcon.show(); |
224 | } | 262 | } |
225 | }); | 263 | }); |
226 | 264 | ||
227 | mainWindow.on('maximize', () => { | 265 | mainWindow.on('maximize', () => { |
266 | debug('Window: maximize'); | ||
228 | app.isMaximized = true; | 267 | app.isMaximized = true; |
229 | }); | 268 | }); |
230 | 269 | ||
231 | mainWindow.on('unmaximize', () => { | 270 | mainWindow.on('unmaximize', () => { |
271 | debug('Window: unmaximize'); | ||
232 | app.isMaximized = false; | 272 | app.isMaximized = false; |
233 | }); | 273 | }); |
234 | 274 | ||
235 | mainWindow.on('restore', () => { | 275 | mainWindow.on('restore', () => { |
276 | debug('Window: restore'); | ||
236 | mainWindow.setSkipTaskbar(false); | 277 | mainWindow.setSkipTaskbar(false); |
237 | 278 | ||
238 | if (app.wasMaximized) { | 279 | if (app.wasMaximized) { |
280 | debug('Window: was maximized before, maximize window'); | ||
239 | mainWindow.maximize(); | 281 | mainWindow.maximize(); |
240 | } | 282 | } |
241 | 283 | ||
242 | if (!settings.get('enableSystemTray')) { | 284 | if (!settings.get('enableSystemTray')) { |
285 | debug('Tray: hiding tray icon'); | ||
243 | trayIcon.hide(); | 286 | trayIcon.hide(); |
244 | } | 287 | } |
245 | }); | 288 | }); |
246 | 289 | ||
247 | mainWindow.on('show', () => { | 290 | mainWindow.on('show', () => { |
291 | debug('Skip taskbar: false'); | ||
248 | mainWindow.setSkipTaskbar(false); | 292 | mainWindow.setSkipTaskbar(false); |
249 | }); | 293 | }); |
250 | 294 | ||
@@ -252,8 +296,12 @@ const createWindow = () => { | |||
252 | app.isMaximized = mainWindow.isMaximized(); | 296 | app.isMaximized = mainWindow.isMaximized(); |
253 | 297 | ||
254 | mainWindow.webContents.on('new-window', (e, url) => { | 298 | mainWindow.webContents.on('new-window', (e, url) => { |
299 | debug('Open url', url); | ||
255 | e.preventDefault(); | 300 | e.preventDefault(); |
256 | shell.openExternal(url); | 301 | |
302 | if (isValidExternalURL(url)) { | ||
303 | shell.openExternal(url); | ||
304 | } | ||
257 | }); | 305 | }); |
258 | }; | 306 | }; |
259 | 307 | ||
@@ -331,7 +379,10 @@ app.on('window-all-closed', () => { | |||
331 | // to stay active until the user quits explicitly with Cmd + Q | 379 | // to stay active until the user quits explicitly with Cmd + Q |
332 | if (settings.get('runInBackground') === undefined | 380 | if (settings.get('runInBackground') === undefined |
333 | || settings.get('runInBackground')) { | 381 | || settings.get('runInBackground')) { |
382 | debug('Window: all windows closed, quit app'); | ||
334 | app.quit(); | 383 | app.quit(); |
384 | } else { | ||
385 | debug('Window: don\'t quit app'); | ||
335 | } | 386 | } |
336 | }); | 387 | }); |
337 | 388 | ||
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index c378619ad..7a60c448f 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -1,5 +1,5 @@ | |||
1 | import { remote, shell } from 'electron'; | 1 | import { remote, shell } from 'electron'; |
2 | import { observable, autorun, computed } from 'mobx'; | 2 | import { observable, autorun } from 'mobx'; |
3 | import { defineMessages } from 'react-intl'; | 3 | import { defineMessages } from 'react-intl'; |
4 | 4 | ||
5 | import { isMac, ctrlKey, cmdKey } from '../environment'; | 5 | import { isMac, ctrlKey, cmdKey } from '../environment'; |
@@ -179,6 +179,22 @@ const menuItems = defineMessages({ | |||
179 | id: 'menu.services.addNewService', | 179 | id: 'menu.services.addNewService', |
180 | defaultMessage: '!!!Add New Service...', | 180 | defaultMessage: '!!!Add New Service...', |
181 | }, | 181 | }, |
182 | activateNextService: { | ||
183 | id: 'menu.services.setNextServiceActive', | ||
184 | defaultMessage: '!!!Activate next service...', | ||
185 | }, | ||
186 | activatePreviousService: { | ||
187 | id: 'menu.services.activatePreviousService', | ||
188 | defaultMessage: '!!!Activate previous service...', | ||
189 | }, | ||
190 | muteApp: { | ||
191 | id: 'sidebar.muteApp', | ||
192 | defaultMessage: '!!!Disable notifications & audio', | ||
193 | }, | ||
194 | unmuteApp: { | ||
195 | id: 'sidebar.unmuteApp', | ||
196 | defaultMessage: '!!!Enable notifications & audio', | ||
197 | }, | ||
182 | }); | 198 | }); |
183 | 199 | ||
184 | function getActiveWebview() { | 200 | function getActiveWebview() { |
@@ -239,16 +255,32 @@ const _templateFactory = intl => [ | |||
239 | }, | 255 | }, |
240 | { | 256 | { |
241 | label: intl.formatMessage(menuItems.resetZoom), | 257 | label: intl.formatMessage(menuItems.resetZoom), |
242 | role: 'resetzoom', | 258 | accelerator: 'Cmd+0', |
259 | click() { | ||
260 | getActiveWebview().setZoomLevel(0); | ||
261 | }, | ||
243 | }, | 262 | }, |
244 | { | 263 | { |
245 | label: intl.formatMessage(menuItems.zoomIn), | 264 | label: intl.formatMessage(menuItems.zoomIn), |
246 | // accelerator: 'Cmd+=', | 265 | accelerator: 'Cmd+plus', |
247 | role: 'zoomin', | 266 | click() { |
267 | const activeService = getActiveWebview(); | ||
268 | activeService.getZoomLevel((level) => { | ||
269 | // level 9 =~ +300% and setZoomLevel wouldnt zoom in further | ||
270 | if (level < 9) activeService.setZoomLevel(level + 1); | ||
271 | }); | ||
272 | }, | ||
248 | }, | 273 | }, |
249 | { | 274 | { |
250 | label: intl.formatMessage(menuItems.zoomOut), | 275 | label: intl.formatMessage(menuItems.zoomOut), |
251 | role: 'zoomout', | 276 | accelerator: 'Cmd+-', |
277 | click() { | ||
278 | const activeService = getActiveWebview(); | ||
279 | activeService.getZoomLevel((level) => { | ||
280 | // level -9 =~ -50% and setZoomLevel wouldnt zoom out further | ||
281 | if (level > -9) activeService.setZoomLevel(level - 1); | ||
282 | }); | ||
283 | }, | ||
252 | }, | 284 | }, |
253 | { | 285 | { |
254 | type: 'separator', | 286 | type: 'separator', |
@@ -392,10 +424,12 @@ const _titleBarTemplateFactory = intl => [ | |||
392 | }, | 424 | }, |
393 | { | 425 | { |
394 | label: intl.formatMessage(menuItems.zoomIn), | 426 | label: intl.formatMessage(menuItems.zoomIn), |
395 | accelerator: `${ctrlKey}+Plus`, | 427 | accelerator: `${ctrlKey}+=`, |
396 | click() { | 428 | click() { |
397 | getActiveWebview().getZoomLevel((zoomLevel) => { | 429 | const activeService = getActiveWebview(); |
398 | getActiveWebview().setZoomLevel(zoomLevel === 5 ? zoomLevel : zoomLevel + 1); | 430 | activeService.getZoomLevel((level) => { |
431 | // level 9 =~ +300% and setZoomLevel wouldnt zoom in further | ||
432 | if (level < 9) activeService.setZoomLevel(level + 1); | ||
399 | }); | 433 | }); |
400 | }, | 434 | }, |
401 | }, | 435 | }, |
@@ -403,8 +437,10 @@ const _titleBarTemplateFactory = intl => [ | |||
403 | label: intl.formatMessage(menuItems.zoomOut), | 437 | label: intl.formatMessage(menuItems.zoomOut), |
404 | accelerator: `${ctrlKey}+-`, | 438 | accelerator: `${ctrlKey}+-`, |
405 | click() { | 439 | click() { |
406 | getActiveWebview().getZoomLevel((zoomLevel) => { | 440 | const activeService = getActiveWebview(); |
407 | getActiveWebview().setZoomLevel(zoomLevel === -5 ? zoomLevel : zoomLevel - 1); | 441 | activeService.getZoomLevel((level) => { |
442 | // level -9 =~ -50% and setZoomLevel wouldnt zoom out further | ||
443 | if (level > -9) activeService.setZoomLevel(level - 1); | ||
408 | }); | 444 | }); |
409 | }, | 445 | }, |
410 | }, | 446 | }, |
@@ -499,13 +535,14 @@ export default class FranzMenu { | |||
499 | } | 535 | } |
500 | 536 | ||
501 | _build() { | 537 | _build() { |
502 | const serviceTpl = Object.assign([], this.serviceTpl); // need to clone object so we don't modify computed (cached) object | 538 | // need to clone object so we don't modify computed (cached) object |
539 | const serviceTpl = Object.assign([], this.serviceTpl()); | ||
503 | 540 | ||
504 | if (window.franz === undefined) { | 541 | if (window.franz === undefined) { |
505 | return; | 542 | return; |
506 | } | 543 | } |
507 | 544 | ||
508 | const intl = window.franz.intl; | 545 | const { intl } = window.franz; |
509 | const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); | 546 | const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); |
510 | 547 | ||
511 | tpl[1].submenu.push({ | 548 | tpl[1].submenu.push({ |
@@ -663,17 +700,6 @@ export default class FranzMenu { | |||
663 | }, about); | 700 | }, about); |
664 | } | 701 | } |
665 | 702 | ||
666 | serviceTpl.unshift({ | ||
667 | label: intl.formatMessage(menuItems.addNewService), | ||
668 | accelerator: `${cmdKey}+N`, | ||
669 | click: () => { | ||
670 | this.actions.ui.openSettings({ path: 'recipes' }); | ||
671 | }, | ||
672 | enabled: this.stores.user.isLoggedIn, | ||
673 | }, { | ||
674 | type: 'separator', | ||
675 | }); | ||
676 | |||
677 | if (serviceTpl.length > 0) { | 703 | if (serviceTpl.length > 0) { |
678 | tpl[3].submenu = serviceTpl; | 704 | tpl[3].submenu = serviceTpl; |
679 | } | 705 | } |
@@ -683,22 +709,49 @@ export default class FranzMenu { | |||
683 | Menu.setApplicationMenu(menu); | 709 | Menu.setApplicationMenu(menu); |
684 | } | 710 | } |
685 | 711 | ||
686 | @computed get serviceTpl() { | 712 | serviceTpl() { |
687 | const services = this.stores.services.allDisplayed; | 713 | const { intl } = window.franz; |
714 | const { user, services, settings } = this.stores; | ||
715 | if (!user.isLoggedIn) return []; | ||
716 | const menu = []; | ||
688 | 717 | ||
689 | if (this.stores.user.isLoggedIn) { | 718 | menu.push({ |
690 | return services.map((service, i) => ({ | 719 | label: intl.formatMessage(menuItems.addNewService), |
691 | label: this._getServiceName(service), | 720 | accelerator: `${cmdKey}+N`, |
692 | accelerator: i < 9 ? `${cmdKey}+${i + 1}` : null, | 721 | click: () => { |
693 | type: 'radio', | 722 | this.actions.ui.openSettings({ path: 'recipes' }); |
694 | checked: service.isActive, | 723 | }, |
695 | click: () => { | 724 | }, { |
696 | this.actions.service.setActive({ serviceId: service.id }); | 725 | type: 'separator', |
697 | }, | 726 | }, { |
698 | })); | 727 | label: intl.formatMessage(menuItems.activateNextService), |
699 | } | 728 | accelerator: `${cmdKey}+alt+right`, |
729 | click: () => this.actions.service.setActiveNext(), | ||
730 | }, { | ||
731 | label: intl.formatMessage(menuItems.activatePreviousService), | ||
732 | accelerator: `${cmdKey}+alt+left`, | ||
733 | click: () => this.actions.service.setActivePrev(), | ||
734 | }, { | ||
735 | label: intl.formatMessage( | ||
736 | settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp, | ||
737 | ).replace('&', '&&'), | ||
738 | accelerator: `${cmdKey}+shift+m`, | ||
739 | click: () => this.actions.app.toggleMuteApp(), | ||
740 | }, { | ||
741 | type: 'separator', | ||
742 | }); | ||
743 | |||
744 | services.allDisplayed.forEach((service, i) => (menu.push({ | ||
745 | label: this._getServiceName(service), | ||
746 | accelerator: i < 9 ? `${cmdKey}+${i + 1}` : null, | ||
747 | type: 'radio', | ||
748 | checked: service.isActive, | ||
749 | click: () => { | ||
750 | this.actions.service.setActive({ serviceId: service.id }); | ||
751 | }, | ||
752 | }))); | ||
700 | 753 | ||
701 | return []; | 754 | return menu; |
702 | } | 755 | } |
703 | 756 | ||
704 | _getServiceName(service) { | 757 | _getServiceName(service) { |
diff --git a/src/lib/Tray.js b/src/lib/Tray.js index 669b02709..192e24796 100644 --- a/src/lib/Tray.js +++ b/src/lib/Tray.js | |||
@@ -22,7 +22,11 @@ export default class TrayIcon { | |||
22 | { | 22 | { |
23 | label: 'Show Franz', | 23 | label: 'Show Franz', |
24 | click() { | 24 | click() { |
25 | if (app.mainWindow.isMinimized()) { | ||
26 | app.mainWindow.restore(); | ||
27 | } | ||
25 | app.mainWindow.show(); | 28 | app.mainWindow.show(); |
29 | app.mainWindow.focus(); | ||
26 | }, | 30 | }, |
27 | }, { | 31 | }, { |
28 | label: 'Quit Franz', | 32 | label: 'Quit Franz', |
@@ -36,7 +40,11 @@ export default class TrayIcon { | |||
36 | this.trayIcon.setContextMenu(trayMenu); | 40 | this.trayIcon.setContextMenu(trayMenu); |
37 | 41 | ||
38 | this.trayIcon.on('click', () => { | 42 | this.trayIcon.on('click', () => { |
43 | if (app.mainWindow.isMinimized()) { | ||
44 | app.mainWindow.restore(); | ||
45 | } | ||
39 | app.mainWindow.show(); | 46 | app.mainWindow.show(); |
47 | app.mainWindow.focus(); | ||
40 | }); | 48 | }); |
41 | 49 | ||
42 | if (process.platform === 'darwin') { | 50 | if (process.platform === 'darwin') { |
diff --git a/src/lib/analytics.js b/src/lib/analytics.js index 7044e5bb7..0519192d1 100644 --- a/src/lib/analytics.js +++ b/src/lib/analytics.js | |||
@@ -37,7 +37,3 @@ export function gaEvent(category, action, label) { | |||
37 | 37 | ||
38 | debug('GA track event', category, action); | 38 | debug('GA track event', category, action); |
39 | } | 39 | } |
40 | |||
41 | setTimeout(() => { | ||
42 | ga('send', 'Ping'); | ||
43 | }, 1000 * 60 * 10); // Ping GA every 10 Minutes | ||
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index b21d48a11..351ad6422 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -1,21 +1,25 @@ | |||
1 | import { remote, ipcRenderer, shell } from 'electron'; | 1 | import { remote, ipcRenderer, shell } from 'electron'; |
2 | import { action, computed, observable } from 'mobx'; | 2 | import { |
3 | action, computed, observable, reaction, | ||
4 | } from 'mobx'; | ||
3 | import moment from 'moment'; | 5 | import moment from 'moment'; |
4 | import key from 'keymaster'; | ||
5 | import { getDoNotDisturb } from '@meetfranz/electron-notification-state'; | 6 | import { getDoNotDisturb } from '@meetfranz/electron-notification-state'; |
6 | import AutoLaunch from 'auto-launch'; | 7 | import AutoLaunch from 'auto-launch'; |
7 | import prettyBytes from 'pretty-bytes'; | 8 | import prettyBytes from 'pretty-bytes'; |
9 | import ms from 'ms'; | ||
10 | import { URL } from 'url'; | ||
8 | 11 | ||
9 | import Store from './lib/Store'; | 12 | import Store from './lib/Store'; |
10 | import Request from './lib/Request'; | 13 | import Request from './lib/Request'; |
11 | import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; | 14 | import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; |
12 | import { isMac, isLinux, isWindows } from '../environment'; | 15 | import { isMac } from '../environment'; |
13 | import locales from '../i18n/translations'; | 16 | import locales from '../i18n/translations'; |
14 | import { gaEvent } from '../lib/analytics'; | 17 | import { gaEvent, gaPage } from '../lib/analytics'; |
15 | import { onVisibilityChange } from '../helpers/visibility-helper'; | 18 | import { onVisibilityChange } from '../helpers/visibility-helper'; |
16 | import { getLocale } from '../helpers/i18n-helpers'; | 19 | import { getLocale } from '../helpers/i18n-helpers'; |
17 | 20 | ||
18 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; | 21 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; |
22 | import { isValidExternalURL } from '../helpers/url-helpers'; | ||
19 | 23 | ||
20 | const debug = require('debug')('Franz:AppStore'); | 24 | const debug = require('debug')('Franz:AppStore'); |
21 | 25 | ||
@@ -110,12 +114,12 @@ export default class AppStore extends Store { | |||
110 | // Check if system is muted | 114 | // Check if system is muted |
111 | // There are no events to subscribe so we need to poll everey 5s | 115 | // There are no events to subscribe so we need to poll everey 5s |
112 | this._systemDND(); | 116 | this._systemDND(); |
113 | setInterval(() => this._systemDND(), 5000); | 117 | setInterval(() => this._systemDND(), ms('5s')); |
114 | 118 | ||
115 | // Check for updates once every 4 hours | 119 | // Check for updates once every 4 hours |
116 | setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); | 120 | setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); |
117 | // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) | 121 | // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) |
118 | setTimeout(() => this._checkForUpdates(), 30000); | 122 | setTimeout(() => this._checkForUpdates(), ms('30s')); |
119 | ipcRenderer.on('autoUpdate', (event, data) => { | 123 | ipcRenderer.on('autoUpdate', (event, data) => { |
120 | if (data.available) { | 124 | if (data.available) { |
121 | this.updateStatus = this.updateStatusTypes.AVAILABLE; | 125 | this.updateStatus = this.updateStatusTypes.AVAILABLE; |
@@ -152,27 +156,6 @@ export default class AppStore extends Store { | |||
152 | this.stores.router.push(url); | 156 | this.stores.router.push(url); |
153 | }); | 157 | }); |
154 | 158 | ||
155 | // Set active the next service | ||
156 | key( | ||
157 | '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => { | ||
158 | this.actions.service.setActiveNext(); | ||
159 | }, | ||
160 | ); | ||
161 | |||
162 | // Set active the prev service | ||
163 | key( | ||
164 | '⌘+pageup, ctrl+pageup, ⌘+alt+left, ctrl+shift+tab', () => { | ||
165 | this.actions.service.setActivePrev(); | ||
166 | }, | ||
167 | ); | ||
168 | |||
169 | // Global Mute | ||
170 | key( | ||
171 | '⌘+shift+m ctrl+shift+m', () => { | ||
172 | this.actions.app.toggleMuteApp(); | ||
173 | }, | ||
174 | ); | ||
175 | |||
176 | this.locale = this._getDefaultLocale(); | 159 | this.locale = this._getDefaultLocale(); |
177 | 160 | ||
178 | this._healthCheck(); | 161 | this._healthCheck(); |
@@ -184,6 +167,12 @@ export default class AppStore extends Store { | |||
184 | 167 | ||
185 | debug('Window is visible/focused', isVisible); | 168 | debug('Window is visible/focused', isVisible); |
186 | }); | 169 | }); |
170 | |||
171 | // analytics autorun | ||
172 | reaction(() => this.stores.router.location.pathname, (pathname) => { | ||
173 | gaPage(pathname); | ||
174 | }); | ||
175 | console.log('router location', this.stores.router.location); | ||
187 | } | 176 | } |
188 | 177 | ||
189 | @computed get cacheSize() { | 178 | @computed get cacheSize() { |
@@ -196,7 +185,15 @@ export default class AppStore extends Store { | |||
196 | }) { | 185 | }) { |
197 | if (this.stores.settings.all.app.isAppMuted) return; | 186 | if (this.stores.settings.all.app.isAppMuted) return; |
198 | 187 | ||
188 | // TODO: is there a simple way to use blobs for notifications without storing them on disk? | ||
189 | if (options.icon.startsWith('blob:')) { | ||
190 | delete options.icon; | ||
191 | } | ||
192 | |||
199 | const notification = new window.Notification(title, options); | 193 | const notification = new window.Notification(title, options); |
194 | |||
195 | debug('New notification', title, options); | ||
196 | |||
200 | notification.onclick = (e) => { | 197 | notification.onclick = (e) => { |
201 | if (serviceId) { | 198 | if (serviceId) { |
202 | this.actions.service.sendIPCMessage({ | 199 | this.actions.service.sendIPCMessage({ |
@@ -206,12 +203,13 @@ export default class AppStore extends Store { | |||
206 | }); | 203 | }); |
207 | 204 | ||
208 | this.actions.service.setActive({ serviceId }); | 205 | this.actions.service.setActive({ serviceId }); |
209 | 206 | mainWindow.show(); | |
210 | if (isWindows) { | 207 | if (app.mainWindow.isMinimized()) { |
211 | mainWindow.restore(); | 208 | mainWindow.restore(); |
212 | } else if (isLinux) { | ||
213 | mainWindow.show(); | ||
214 | } | 209 | } |
210 | mainWindow.focus(); | ||
211 | |||
212 | debug('Notification click handler'); | ||
215 | } | 213 | } |
216 | }; | 214 | }; |
217 | } | 215 | } |
@@ -247,7 +245,14 @@ export default class AppStore extends Store { | |||
247 | } | 245 | } |
248 | 246 | ||
249 | @action _openExternalUrl({ url }) { | 247 | @action _openExternalUrl({ url }) { |
250 | shell.openExternal(url); | 248 | const parsedUrl = new URL(url); |
249 | debug('open external url', parsedUrl); | ||
250 | |||
251 | if (isValidExternalURL(url)) { | ||
252 | shell.openExternal(url); | ||
253 | } | ||
254 | |||
255 | gaEvent('External URL', 'open', parsedUrl.host); | ||
251 | } | 256 | } |
252 | 257 | ||
253 | @action _checkForUpdates() { | 258 | @action _checkForUpdates() { |
@@ -271,7 +276,6 @@ export default class AppStore extends Store { | |||
271 | 276 | ||
272 | @action _muteApp({ isMuted, overrideSystemMute = true }) { | 277 | @action _muteApp({ isMuted, overrideSystemMute = true }) { |
273 | this.isSystemMuteOverridden = overrideSystemMute; | 278 | this.isSystemMuteOverridden = overrideSystemMute; |
274 | |||
275 | this.actions.settings.update({ | 279 | this.actions.settings.update({ |
276 | type: 'app', | 280 | type: 'app', |
277 | data: { | 281 | data: { |
@@ -308,7 +312,7 @@ export default class AppStore extends Store { | |||
308 | } else { | 312 | } else { |
309 | const deltaTime = moment().diff(this.timeOfflineStart); | 313 | const deltaTime = moment().diff(this.timeOfflineStart); |
310 | 314 | ||
311 | if (deltaTime > 30 * 60 * 1000) { | 315 | if (deltaTime > ms('30m')) { |
312 | this.actions.service.reloadAll(); | 316 | this.actions.service.reloadAll(); |
313 | } | 317 | } |
314 | } | 318 | } |
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index 0adee6adf..d2842083c 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js | |||
@@ -7,6 +7,7 @@ import delayApp from '../features/delayApp'; | |||
7 | import spellchecker from '../features/spellchecker'; | 7 | import spellchecker from '../features/spellchecker'; |
8 | import serviceProxy from '../features/serviceProxy'; | 8 | import serviceProxy from '../features/serviceProxy'; |
9 | import basicAuth from '../features/basicAuth'; | 9 | import basicAuth from '../features/basicAuth'; |
10 | import shareFranz from '../features/shareFranz'; | ||
10 | 11 | ||
11 | import { DEFAULT_FEATURES_CONFIG } from '../config'; | 12 | import { DEFAULT_FEATURES_CONFIG } from '../config'; |
12 | 13 | ||
@@ -56,5 +57,6 @@ export default class FeaturesStore extends Store { | |||
56 | spellchecker(this.stores, this.actions); | 57 | spellchecker(this.stores, this.actions); |
57 | serviceProxy(this.stores, this.actions); | 58 | serviceProxy(this.stores, this.actions); |
58 | basicAuth(this.stores, this.actions); | 59 | basicAuth(this.stores, this.actions); |
60 | shareFranz(this.stores, this.actions); | ||
59 | } | 61 | } |
60 | } | 62 | } |
diff --git a/src/stores/RecipePreviewsStore.js b/src/stores/RecipePreviewsStore.js index 10b2928e3..382820d58 100644 --- a/src/stores/RecipePreviewsStore.js +++ b/src/stores/RecipePreviewsStore.js | |||
@@ -1,5 +1,6 @@ | |||
1 | import { action, computed, observable } from 'mobx'; | 1 | import { action, computed, observable } from 'mobx'; |
2 | import { debounce } from 'lodash'; | 2 | import { debounce } from 'lodash'; |
3 | import ms from 'ms'; | ||
3 | 4 | ||
4 | import Store from './lib/Store'; | 5 | import Store from './lib/Store'; |
5 | import CachedRequest from './lib/CachedRequest'; | 6 | import CachedRequest from './lib/CachedRequest'; |
@@ -48,5 +49,5 @@ export default class RecipePreviewsStore extends Store { | |||
48 | // Helper | 49 | // Helper |
49 | _analyticsSearch = debounce((needle) => { | 50 | _analyticsSearch = debounce((needle) => { |
50 | gaEvent('Recipe', 'search', needle); | 51 | gaEvent('Recipe', 'search', needle); |
51 | }, 3000); | 52 | }, ms('3s')); |
52 | } | 53 | } |
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js index 2629e0a38..9254e3223 100644 --- a/src/stores/RequestStore.js +++ b/src/stores/RequestStore.js | |||
@@ -1,4 +1,5 @@ | |||
1 | import { action, computed, observable } from 'mobx'; | 1 | import { action, computed, observable } from 'mobx'; |
2 | import ms from 'ms'; | ||
2 | 3 | ||
3 | import Store from './lib/Store'; | 4 | import Store from './lib/Store'; |
4 | 5 | ||
@@ -13,7 +14,7 @@ export default class RequestStore extends Store { | |||
13 | 14 | ||
14 | retries = 0; | 15 | retries = 0; |
15 | 16 | ||
16 | retryDelay = 2000; | 17 | retryDelay = ms('2s'); |
17 | 18 | ||
18 | constructor(...args) { | 19 | constructor(...args) { |
19 | super(...args); | 20 | super(...args); |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index efd57a09d..69e616f0c 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -5,6 +5,7 @@ import { | |||
5 | observable, | 5 | observable, |
6 | } from 'mobx'; | 6 | } from 'mobx'; |
7 | import { debounce, remove } from 'lodash'; | 7 | import { debounce, remove } from 'lodash'; |
8 | import ms from 'ms'; | ||
8 | 9 | ||
9 | import Store from './lib/Store'; | 10 | import Store from './lib/Store'; |
10 | import Request from './lib/Request'; | 11 | import Request from './lib/Request'; |
@@ -43,6 +44,7 @@ export default class ServicesStore extends Store { | |||
43 | this.actions.service.deleteService.listen(this._deleteService.bind(this)); | 44 | this.actions.service.deleteService.listen(this._deleteService.bind(this)); |
44 | this.actions.service.clearCache.listen(this._clearCache.bind(this)); | 45 | this.actions.service.clearCache.listen(this._clearCache.bind(this)); |
45 | this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this)); | 46 | this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this)); |
47 | this.actions.service.detachService.listen(this._detachService.bind(this)); | ||
46 | this.actions.service.focusService.listen(this._focusService.bind(this)); | 48 | this.actions.service.focusService.listen(this._focusService.bind(this)); |
47 | this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this)); | 49 | this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this)); |
48 | this.actions.service.toggleService.listen(this._toggleService.bind(this)); | 50 | this.actions.service.toggleService.listen(this._toggleService.bind(this)); |
@@ -340,6 +342,11 @@ export default class ServicesStore extends Store { | |||
340 | service.isAttached = true; | 342 | service.isAttached = true; |
341 | } | 343 | } |
342 | 344 | ||
345 | @action _detachService({ service }) { | ||
346 | service.webview = null; | ||
347 | service.isAttached = false; | ||
348 | } | ||
349 | |||
343 | @action _focusService({ serviceId }) { | 350 | @action _focusService({ serviceId }) { |
344 | const service = this.one(serviceId); | 351 | const service = this.one(serviceId); |
345 | 352 | ||
@@ -679,7 +686,7 @@ export default class ServicesStore extends Store { | |||
679 | _initRecipePolling(serviceId) { | 686 | _initRecipePolling(serviceId) { |
680 | const service = this.one(serviceId); | 687 | const service = this.one(serviceId); |
681 | 688 | ||
682 | const delay = 2000; | 689 | const delay = ms('2s'); |
683 | 690 | ||
684 | if (service) { | 691 | if (service) { |
685 | if (service.timer !== null) { | 692 | if (service.timer !== null) { |
@@ -700,7 +707,7 @@ export default class ServicesStore extends Store { | |||
700 | 707 | ||
701 | _reorderAnalytics = debounce(() => { | 708 | _reorderAnalytics = debounce(() => { |
702 | gaEvent('Service', 'order'); | 709 | gaEvent('Service', 'order'); |
703 | }, 5000); | 710 | }, ms('5s')); |
704 | 711 | ||
705 | _wrapIndex(index, delta, size) { | 712 | _wrapIndex(index, delta, size) { |
706 | return (((index + delta) % size) + size) % size; | 713 | return (((index + delta) % size) + size) % size; |
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js index d37ebe4c7..bb7965a4a 100644 --- a/src/stores/UIStore.js +++ b/src/stores/UIStore.js | |||
@@ -1,8 +1,7 @@ | |||
1 | import { action, observable, computed } from 'mobx'; | 1 | import { action, observable, computed } from 'mobx'; |
2 | import { theme } from '@meetfranz/theme'; | ||
2 | 3 | ||
3 | import Store from './lib/Store'; | 4 | import Store from './lib/Store'; |
4 | import * as themeDefault from '../theme/default'; | ||
5 | import * as themeDark from '../theme/dark'; | ||
6 | 5 | ||
7 | export default class UIStore extends Store { | 6 | export default class UIStore extends Store { |
8 | @observable showServicesUpdatedInfoBar = false; | 7 | @observable showServicesUpdatedInfoBar = false; |
@@ -24,10 +23,10 @@ export default class UIStore extends Store { | |||
24 | 23 | ||
25 | @computed get theme() { | 24 | @computed get theme() { |
26 | if (this.stores.settings.all.app.darkMode) { | 25 | if (this.stores.settings.all.app.darkMode) { |
27 | return Object.assign({}, themeDefault, themeDark); | 26 | return theme('dark'); |
28 | } | 27 | } |
29 | 28 | ||
30 | return themeDefault; | 29 | return theme('default'); |
31 | } | 30 | } |
32 | 31 | ||
33 | // Actions | 32 | // Actions |
diff --git a/src/styles/layout.scss b/src/styles/layout.scss index 8b7cc512a..9a003a922 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss | |||
@@ -124,15 +124,14 @@ html { overflow: hidden; } | |||
124 | background: $theme-brand-warning; | 124 | background: $theme-brand-warning; |
125 | color: #FFF; | 125 | color: #FFF; |
126 | display: block; | 126 | display: block; |
127 | font-size: 10px; | 127 | font-size: 8px; |
128 | height: auto; | 128 | height: auto; |
129 | padding: 4px; | 129 | padding: 4px; |
130 | position: fixed; | 130 | position: fixed; |
131 | right: 5px; | 131 | left: 9px; |
132 | top: 5px; | 132 | bottom: 0px; |
133 | transition: opacity .5s ease; | 133 | transition: opacity .5s ease; |
134 | width: auto; | 134 | width: auto; |
135 | z-index: 999999999; | 135 | z-index: 999999999; |
136 | 136 | pointer-events: none; | |
137 | &:hover { opacity: 0; } | ||
138 | } | 137 | } |
diff --git a/src/styles/toggle.scss b/src/styles/toggle.scss index 0ce0c3379..52675ceed 100644 --- a/src/styles/toggle.scss +++ b/src/styles/toggle.scss | |||
@@ -41,7 +41,7 @@ $toggle-button-size: 22px; | |||
41 | 41 | ||
42 | &.is-active .franz-form__toggle-button { | 42 | &.is-active .franz-form__toggle-button { |
43 | background: $theme-brand-primary; | 43 | background: $theme-brand-primary; |
44 | left: $toggle-width - $toggle-size - 3;; | 44 | left: $toggle-width - $toggle-size - 3; |
45 | } | 45 | } |
46 | 46 | ||
47 | input { display: none; } | 47 | input { display: none; } |
diff --git a/src/theme/dark/index.js b/src/theme/dark/index.js deleted file mode 100644 index 8fdb321f3..000000000 --- a/src/theme/dark/index.js +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | import hexToRgba from 'hex-to-rgba'; | ||
2 | |||
3 | import * as legacyStyles from '../default/legacy'; | ||
4 | |||
5 | export const colorBackground = legacyStyles.darkThemeGrayDarkest; | ||
6 | export const colorBackgroundSubscriptionContainer = legacyStyles.themeBrandInfo; | ||
7 | |||
8 | export const colorHeadline = legacyStyles.darkThemeTextColor; | ||
9 | export const colorText = legacyStyles.darkThemeTextColor; | ||
10 | |||
11 | // Error Handler | ||
12 | export const colorWebviewErrorHandlerBackground = legacyStyles.darkThemeGrayDarkest; | ||
13 | |||
14 | // Loader | ||
15 | export const colorFullscreenLoaderSpinner = '#FFF'; | ||
16 | export const colorWebviewLoaderBackground = hexToRgba(legacyStyles.darkThemeGrayDarkest, 0.5); | ||
17 | |||
18 | // Modal | ||
19 | export const colorModalOverlayBackground = hexToRgba(legacyStyles.darkThemeGrayDarkest, 0.8); | ||
diff --git a/src/theme/default/index.js b/src/theme/default/index.js deleted file mode 100644 index 61410073d..000000000 --- a/src/theme/default/index.js +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | import hexToRgba from 'hex-to-rgba'; | ||
2 | |||
3 | import * as legacyStyles from './legacy'; | ||
4 | |||
5 | export const brandPrimary = '#3498db'; | ||
6 | export const brandSuccess = '#5cb85c'; | ||
7 | export const brandInfo = '#5bc0de'; | ||
8 | export const brandWarning = '#FF9F00'; | ||
9 | export const brandDanger = '#d9534f'; | ||
10 | |||
11 | export const borderRadius = legacyStyles.themeBorderRadius; | ||
12 | export const borderRadiusSmall = legacyStyles.themeBorderRadiusSmall; | ||
13 | |||
14 | export const colorBackground = legacyStyles.themeGrayLighter; | ||
15 | export const colorHeadline = legacyStyles.themeGrayDark; | ||
16 | |||
17 | export const colorText = legacyStyles.themeTextColor; | ||
18 | |||
19 | // Subscription Container Component | ||
20 | export const colorSubscriptionContainerBackground = 'none'; | ||
21 | export const colorSubscriptionContainerBorder = [1, 'solid', brandPrimary]; | ||
22 | export const colorSubscriptionContainerTitle = brandPrimary; | ||
23 | export const colorSubscriptionContainerActionButtonBackground = brandPrimary; | ||
24 | export const colorSubscriptionContainerActionButtonColor = '#FFF'; | ||
25 | |||
26 | // Error Handler | ||
27 | export const colorWebviewErrorHandlerBackground = legacyStyles.themeGrayLighter; | ||
28 | |||
29 | // Loader | ||
30 | export const colorAppLoaderSpinner = '#FFF'; | ||
31 | export const colorFullscreenLoaderSpinner = legacyStyles.themeGrayDark; | ||
32 | export const colorWebviewLoaderBackground = hexToRgba(legacyStyles.themeGrayLighter, 0.8); | ||
33 | |||
34 | // Modal | ||
35 | export const colorModalOverlayBackground = hexToRgba(legacyStyles.themeGrayLighter, 0.8); | ||